Java Tic Tac Toe

Status
Für weitere Antworten geschlossen.

Gikon

Commander
Registriert
Juli 2010
Beiträge
2.062
Hi all.

Ich möchte das Spiel Tic Tac Toe schreiben. Ich kenne bisher nur den untigen Code, der richtig ist. Jetzt brauche ich 2D Arrays und habe bislang nur englische Seiten gefunden. Somit verstehe ich nciht alles.

So sehen unsere Codes aus.

Code:
import AlgoTools.IO;

public class hhh {

	public static void main(String[] argv) {
  
	int[] a;
	int i;
	int x;
	int z;
	int g;
	boolean hit = false;

	z = 0;		//Variable fuer die gefundene Stelle im Array. 0, weil das Array bei 0 Anfaengt.
	g = 1;		//Variable fuer die gefundene Stelle in der Eingabe. 1, weil die Eingabe die Eingabe bei 1 anfängt zu Zaehlen.

	a = IO.readInts("Bitte geben Sie Zahlen fuer das Array ein:");
	x = IO.readInt("Bitte geben Sie die zu suchende Zahl ein:");
  
		for(i=0; i<a.length; i=i+1) {  

			if(x == a[i]) {
          			hit = true;		//Falls er einen Treffer erzielt, springt er zur Ausgabe sonst fängt er
							//mit einem erneuten Durchlauf der Schleife an. 
				z = z + 1;		//Zaehler für die Suche nach der Array Stelle.
				g = g + 1;		//Zaehler für die Suche nach der Stelle der Eingabe.
	      		}
		}

		if(hit == true){
			IO.println("Die gesuchte Zahl " + x + " ist vorhanden und befindet sich im Index des Arrays an Stelle " + z + " und bei der Eingabe an Stelle " + g + ".");
		}
		else{
			IO.println("Die Zahl ist nicht vorhanden");	
		}
	}
}
 
Zuletzt bearbeitet:
Wenn du einen Code postest, bei dem du Hilfe brauchst, dann solltest du schreiben, was dabei das Problem ist.

Dennoch:
z und g werden am Ende nicht die Werte haben, die du vermutlich erwartest. Warum überlasse ich Dir.
 
Zuletzt bearbeitet: (Rechtschreibung)
Du kannst nicht erwarten, dass wir dir einfach so ein fertiges Programm schreiben. Du hast bestimmt Literatur zu Java. Lies dir das Kapitel zu Arrays durch, dann hast du alles was du brauchst.
Wenn das Programm dann immer noch nicht klappen will, dann helfen wir dir beim Fehlersuchen.
Ansonsten kannst du im Internet tausende von fertigen Lösungen dazu finden.
 
Zuletzt bearbeitet:
Könnte ihr mir da mal helfen, bzw einenf ertigen Code schicken ?
DAnn helfe ich dir jetzt, ohne Code zu schreiben, d.h. beim Googlen:
Such mal nach "java 2d array", und das erste Ergebnis zeigt dir:
Code:
int[][] a = new int[2][4];  // Two rows and four columns.
 
Das habe ich auch schon lengst gefunden. Ich bin nun auch schon seit 3 Tagen dabei. Ich kann die Codes nit ganz auf meien Javakenntnisse ziehen. (den rest von der Seite ist gemeint)
Ergänzung ()

Einiges kann ich sofort miteinbringen und einiges eben nicht.

Die Seite ist außerdem auf Englisch, wo ich dann sowieso nicht alles verstehn kann. Desswegen habe ich ja auch einen Thread eröffnet.
 
Kannst du mal posten, was du bis jetzt schon hast? Dann können wir dir auch helfen müssen nicht bei 0 anfangen.
 
quwieorp schrieb:
Kannst du mal posten, was du bis jetzt schon hast? Dann können wir dir auch helfen müssen nicht bei 0 anfangen.

Ich befürchte ja dass das oben schon geschehen ist.

Also ich kann mit diesem Thread nicht viel anfangen.. Keine Problemstellung, nur eine Aussage: "Könnt ihr mir mal den fertigen Code schicken...". Mit so viel Eigentinitiative kommst net weit...
 
Also wenn du durch deinen Code nicht durchsteigst, wunderts mich nicht. Du solltest unbedingt als erstes vernünftige Bezeichner für deine Variablen wählen. Ist ja grausam wie es jetzt ist...
 
Ich steige durch meienn Code durch -.-
Was ich bisher weiß, steht in meinen Code
Ich sitze seit 3 tagen dabei
Ich brauche die Hilfe bei einem 2d Array
Ich sagte schicken oder mit helfen. Ich wollte das gerne verstehen, weil fast alle Seiten auf English sind.
Nochmal für alle, Mein Code ist korrekt und ich verstehe ihn.
War alles eigentlich aus dem ersten post zu entnehmen, außer das mit den 3 Tagen. ich will nicht, dass ihr mir einen schreibt. ich muss es nur verstehen.


Ich glaube, dass keiner bei meinen Code durchsteigt, weil viele meinen, dass ichd amit ein problem habe
 
Zuletzt bearbeitet:
Gikon schrieb:
Ich glaube, dass keiner bei meinen Code durchsteigt, weil viele meinen, dass ichd amit ein problem habe

Errrrm, fail. Trotzdem ne lustige Vorstellung, dass du denkst dass dein Code auch nur annähernd nicht nachvollziehbar wäre.

Was ist so schwer daran mal google anzuwerfen? Die ersten Hits:
http://www.programmersbase.net/Content/Java/Content/Tutorial/Java/Array.htm#07
http://www.teialehrbuch.de/Kostenlose-Kurse/JAVA/6611-Mehrdimensionale-Arrays.html
http://www.tutorials.de/java-tutorials/277029-anfaenger-tutorial-arrays.html
http://openbook.galileodesign.de/javainsel5/javainsel03_007.htm#Rxx747java03007040001011F048225
http://www.leepoint.net/notes-java/data/arrays/arrays-2D.html


Lesen und ausprobieren musst du immer noch selbst... Viel Spass.
 
ein Tipp: statt z = z + 1; zu schreiben verwende z++;, das rechnet der prozessor effizienter...

google mal "java ist auch eine insel" ich fürchte das ist auf deutsch und somit auch für dich verständlich =)
 
Zuletzt bearbeitet:
Gikon schrieb:
Ergänzung ()

Wer sagt, dass ihr den schreiben sollt ?

Weil du das in deinem Post, bevor du ihn ändertest, auch so gefragt hast und zwar sehr explizit im Sinne von "Kann mir jemand einen fertigen Code schicken".
Ergänzung ()

Gikon schrieb:
@Banthor: Ich bekomem bei dem Code die Werte die ich haben will. "z" und "g" sidn vollkommen korrekt.

Hmm, "Das glaube ich nicht , Tim"!

Dein Code findet zwar das gesuchte Element, allerdings sind die ermittelten Indizes falsch an der das Suchergebnis sich angeblich befinden soll.

Ich habe mal die Eingabe in deinem Programm durch feste Werte ersetzt:

Code:
public class hhh {

	public static void main(String[] argv) {

	int[] a;
	int i;
	int x;
	int z;
	int g;
	boolean hit = false;

	z = 0;		//Variable fuer die gefundene Stelle im Array. 0, weil das Array bei 0 Anfaengt.
	g = 1;		//Variable fuer die gefundene Stelle in der Eingabe. 1, weil die Eingabe die Eingabe bei 1 anfängt zu Zaehlen.

	a = new int[] {20, 34, 45, 17, 106};
	x = 17;

		for(i=0; i<a.length; i=i+1) {

			if(x == a[i]) {
          			hit = true;		//Falls er einen Treffer erzielt, springt er zur Ausgabe sonst fängt er
							//mit einem erneuten Durchlauf der Schleife an.
				z = z + 1;		//Zaehler für die Suche nach der Array Stelle.
				g = g + 1;		//Zaehler für die Suche nach der Stelle der Eingabe.
	      		}
		}

		if(hit == true){
            System.out.println("Die gesuchte Zahl " + x + " ist vorhanden und befindet sich im Index des Arrays an Stelle " + z + " und bei der Eingabe an Stelle " + g + ".");
		}
		else{
            System.out.println("Die Zahl ist nicht vorhanden");
		}
	}
}


Ich gebe also das Array new int[] {20, 34, 45, 17, 106}; vor und suche nach der 17.

Die korrekte Indizes wären also 3 (Index im Array) und 4 (Position in der Eingabe.


Tatsächlich gibt dein Code, sofern die Zahl nur einmal vorkommen, aber immer Folgendes aus:
"Die gesuchte Zahl 17 ist vorhanden und befindet sich im Index des Arrays an Stelle 1 und bei der Eingabe an Stelle 2."

Das ist nach meinem Ermessen ziemlich falsch.

Weiterhin enthält dein Programm noch den Bug, dass die Schleife nicht abbricht, wenn das Suchziel gefunden wurde, obwohl du das im Kommentar dieses Verhalten implizierst.


Dann noch ein paar grundsätzliche Anmerkungen:
  1. Es ist üblich Variablen und Klassennamen sinnvoll und nachvollziehbar zu benennen.
  2. Variablen legt man nicht mehr "im Voraus" an. Sondern an der Stelle wo man sie benötigt und gibt Ihnen gleich einen Wert
  3. z = z + 1; kann auch kürzer als z++ geschrieben werden (Hatte schon jemand bemerkt)
  4. hit == true kann auch auf nur hit abgekürzt werden


Es ist offensichtlich, dass du Deinen Code nicht verstehst. Du behauptest sogar es sei korrekt und das nach "3 Tagen" Entwicklung.

Bevor du versuchst mit zweidimensionalen Arrays zu programmieren, solltest du erst einmal die eindimensionalen begreifen.

Sorry dass ich so direkt werde, aber du scheinst beratungsresistent zu sein. Du änderst sogar Deinen Eingangspost, nur im Nachhinein zu sagen, du hättest bestimmte Dinge nie gesagt oder erbeten. Ehrlich, damit machst du dir keine Freunde.
 
Zuletzt bearbeitet:
Ich glaube Gikon hat sein Problem gelöst, denn im ersten Post ist jetzt keine Frage mehr enthalten ^^
Ohne ein grundlegendes Verständnis über Java (ca. die ersten drei Kapitel eines Buches) und ohne Eigeninitiative kommst du hier nicht weit.
Mit Suchmaschinen solltest du dich vielleicht auch ein bisschen auseinandersetzen (bei Google gibt's eine Option "Seiten auf Deutsch").

Den Post würde ich auch leicht korrigieren: // Stand: 25.01.2011
Gikon schrieb:
Java, HTML, CSS bin ich richtig gut drin
 
Der Code war dafür gedacht zu zeigen, was wir bisher haben -.- (Steht aber auch daneben)

Ich ahbe gegooglet, und nicht wirklich was gefunden. Danke trotzdem.


Wieso ist nun die Eingabe weg ? Mit der Eingabe zeigt er mir alles richtig an. Ich dachte immer, man kann z.B. m = m +1 nehmen. Es steht ja nirgends, dass ich m++ nehmen muss (auch wenns schöner aussieht). Wir hatten in der Stunde die Variablendeklaration und da dachten wir usn einfach hit aus. Wir hätten auch Treffer, t,u,o etc nehmen können. System.out.println kannte ich bisher nicht.

War in der For Schleife nicht das die Abbruchbedingung ? (i<a.length) <-- Sagte der Lehrer zumindest

quwieorp: Oh, werde es mal ändern. Wusste nit, das ich sowas schrieb.
Ergänzung ()

Wer jetzt mal ein paar Versuche starten. Vlt könntet ihr heute Abend mal drüber gucken.
 
Zuletzt bearbeitet:
du hast die Themenerstellung zwar editiert, dennoch ist dies kein Hausaufgabenforum.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben