• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Tic Tac Toe Spiel Was ist der Fehler?

  • Ersteller Gelöschtes Mitglied 38922
  • Erstellt am
G

Gelöschtes Mitglied 38922

Guest
Ich bin gerade dabei ein Tic Tac Toe Spiel zu pogrammieren. Dabei bin ich soweit gekommen, dass wenn ich auf ein Feld klicke ein Kreuz erscheint. Dann habe ich eine Funktion aufgestellt die, die eine zufällige Zahl von 1-9 auswirft. Dann habe ich für jeden möglichen Wert des X-Wertes eine if anweisung erstellt wo zum Beispiel drin steht if(x = 3 && Feld[3] = false). Als ich das fertiggestellt hatte ging nichts mehr. Was ist der Fehler?
Hier ein Codepen Link:
Das ganze habe ich mit jquery gemacht.
Bitte seid nicht zu hart bin noch Anfänger.
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Wo soll ich anfangen? Zuweisungs- und Vergleichsoperator verwechselt, false als String ins Array geschrieben und dazu wieder 90% redundanter Code.

Dein nächstes Lernziel sollte die Bedeutung von this sein.
 
Werbung:
Wozu gibt es hier wohl das Board JavaScript?
 
Die Null erscheint immer noch nicht. Und wie kann ich den Code nicht so redunant gestalten?
wenn du gleich am Anfang mal testest was x sagt
Code:
function NullErscheinenLassen(){
    alert(x)
    ....
}
ist x leer, deshalb kann kein if ein Treffer haben.

Nachdem du einen zug machst musst du auch die Funktion aufrufen damit der Computer einen zug machen kann.

Die anderen sagten das ja auch schon aber ich würde das auch ganz anders an gehen.

Vieleicht solltest du das erst so programmieren das 2 Personen spielen und nicht einer gegen Computer.
Wenn das läuft ersetzt du ein Spieler gegen den Computer.
 
wenn du gleich am Anfang mal testest was x sagt
Code:
function NullErscheinenLassen(){
    alert(x)
    ....
}
ist x leer, deshalb kann kein if ein Treffer haben.

Nachdem du einen zug machst musst du auch die Funktion aufrufen damit der Computer einen zug machen kann.

Die anderen sagten das ja auch schon aber ich würde das auch ganz anders an gehen.

Vieleicht solltest du das erst so programmieren das 2 Personen spielen und nicht einer gegen Computer.
Wenn das läuft ersetzt du ein Spieler gegen den Computer.
NUun habe ich das für 2 Spieler gemacht der Wechsel von X zu 0 funktioniert nicht.
 
Werbung:
NUun habe ich das für 2 Spieler gemacht der Wechsel von X zu 0 funktioniert nicht.

Und was brächte es dir, wenn dieses Spiel funktioniert? Schreibe doch erstmal vernünftigen Code.

Anstatt 9 Funktionen zu bauen, die bis auf 1 Ziffer identisch sind, abstrahiere sie. Dann reicht eine einzige.

HTML:
<div class="x-feld x-feld-1">x</div>
<div class="x-feld x-feld-2">x</div>
...

<div class="feld" id="x-feld-1">Foo</div>
<div class="feld" id="x-feld-2">Bar</div>
...
Javascript:
$('.feld').on('click', function(el) {
  $('.' + el.currentTarget.id).show();
  $('#' + el.currentTarget.id).hide();
  feld[el.currentTarget.id.slice(-1)] = true;
});
 
Und was brächte es dir, wenn dieses Spiel funktioniert? Schreibe doch erstmal vernünftigen Code.

Anstatt 9 Funktionen zu bauen, die bis auf 1 Ziffer identisch sind, abstrahiere sie. Dann reicht eine einzige.

HTML:
<div class="x-feld x-feld-1">x</div>
<div class="x-feld x-feld-2">x</div>
...

<div class="feld" id="x-feld-1">Foo</div>
<div class="feld" id="x-feld-2">Bar</div>
...
Javascript:
$('.feld').on('click', function(el) {
  $('.' + el.currentTarget.id).show();
  $('#' + el.currentTarget.id).hide();
  feld[el.currentTarget.id.slice(-1)] = true;
});
Ich möchte jetzt nicht nochmal mein kompletten code verändern. Ich möchte nur eine Lösung auf mein Problem haben...
 
Werbung:
Ich möchte nur eine Lösung auf mein Problem haben.

Wo wird den der Spieler mit der 0 aufgerufen ?
Irgendwo in der mitte setzt du "weristdran auf true.
Das mag in deinen jetzigen Aufbau auch ok zu sein , doch wie soll das verglichen werden ?

Der Code läuft beim Starten einmal von oben nach unten durch.
Wenn oben der 2 Spieler auf true wartet mußt du JS sagen das er oben nochmal lesen soll ( Spieler 2 abfragen ob true ist ).

Ich hoffe das verstehst du so.
Dann kannst du auch gleich das Beispiel von @Tronjer mit bei dir einbauen.
Das spart schon mal 100 Zeilen.
Denk dran der Code wird noch länger.
Du mußt noch abfragen starten ob 3 in einer Reihe sind
Ein Restart Button um alles wieder zur Startposition zu bekommen.
Und dann irgendwann den Computer einzubauen.
Da kommen auch wieder Abfragen rein um zu kucken welches Feld frei ist und ob er den auch sinnvoll setzt ( so das er Gewinnt ).

Deswegen solltest du gleich von Anfang an den Code kurz halten.
Sonst ist dein Code zum Schluß 1.000 Zeilen lang
 
Also wie kann ich javascript sagen, dass er oben nochmal lest. Und was meinst du mit, demjetzigen ok, aber wie es verglichem werden soll. Ist das auch darauf bezogen, dass man Javascript sagen soll, dass er nochmal oben lesen soll oder was anderes.
Vielen vielen vielen Dank, dass wenigstens du spezifisch auf meine Fragen eingehst. Du stehst mir zu tiefst in der Schuld.
 
Werbung:
In deinen ersten Thema hattest du mal das geschrieben
In Zukunft für neue Projekte von mir werde ich beachten mein code nicht so redunant zu gestalten. Ich bin ja noch Anfänger..
Deswegen schade das du jetzt das sagst
Ich möchte jetzt nicht nochmal mein kompletten code verändern. Ich möchte nur eine Lösung auf mein Problem haben...
In deinen Code würde 2-3 Zeilen reichen um den Spieler wechsel hinzubekommen.
Nur wenn ich in so einen nicht guten Code dir nee fusch Lösung reinbaue, bringt dir das gar nichts.
In deinem ersten Thema hatte ich dir gesagt, das es querySelectorAll gibt usw.
Du nutzt jetzt jQuery, das erleichtern dir einiges , aber dadurch lernst du die Grundlagen des Nativen Javascript Codes nicht richtig.

Leider hast du im alten Thema ja auch nicht den besseren Code genommen und hast da dein eigenes Ding herausgemacht (was geht, aber nicht guter Code ist).
Hier nimmst du ja bis jetzt auch nichts an.
Mal gucken, ob du das verstehst



Warum hast du eigentlich so viel HTML Gedöns?
Deine festen Positionen nutzt du auch noch, was auch 'ne menge CSS zu viel ergibt
 
Zuletzt bearbeitet:
In deinen ersten Thema hattest du mal das geschrieben

Deswegen schade das du jetzt das sagst

In deinen Code würde 2-3 Zeilen reichen um den Spieler wechsel hinzubekommen.
Nur wenn ich in so einen nicht guten Code dir nee fusch Lösung reinbaue bringt dir das gar nix.
In deinen ersten Thema hatte ich dir gesagt das es querySelectorAll gibt usw.
Du nutzt jetzt Jquery das verleichtert dir einiges , aber da durch lernst du die Grundlagen des Nativen Javascript Codes nicht richtig.

Leider hast du im alten Thema ja auch nicht den besseren Code genommen und hast da dein eigenes ding rausgemacht ( was geht aber nicht guter Code ist ).
Hier nimmst du ja bis jetzt auch nix an.
mal kucken ob du das verstehst

Warum hast du eigentlich so viel html gedöns?
Deine festen Positionen nutzt du auch noch was auch ne menge Css zu viel ergibt
Ich habe doch geschrieben. Ich bin noch Anfänger. Ich verstehe keine einzige Sache von dem Code. Man kann nicht von mir verlangen soetwas nach einem Monat programmieren zu verstehen und anzuwenden. Für mich ist das wie eine neue Programmiersprache. Gibt es online irgendwo Erklärungen zum Nativen Javascript?
 
Werbung:
Ich bin noch Anfänger. Ich verstehe keine einzige Sache von dem Code. Man kann nicht von mir verlangen soetwas nach einem Monat programmieren zu verstehen und anzuwenden. Für mich ist das wie eine neue Programmiersprache.
Das stimmt wohl.
Vor paar Wochen hat mir auch einer ein Code geschickt für Php.
Er benutzte da mysqli_multi_query ,
ich hatte kein Plan was das genau macht ,nur nee vermutung.
Dann mußte ich mal Googeln , bzw ins Php Manual kucken und dann wußte ich es und mitlerweile nutze ich das auch selber wenn ich es brauche.

Genau so solltest du das auch machen.Notfalls mit testen und ausprobieren.
Ob du du jetzt bei Jquery bleibst oder nativen Javascript mußt du wissen, ich finde aber das man als Anfänger erst ohne Jquery lernen sollte bis die Grundlagen sitzen.
 
JavaScript ist ziemlich sperrig für Anfänger und besitzt im Vergleich zu anderen Scriptsprachen weniger Funktionen. Deswegen wird es überwiegend in Form von Frameworks genutzt. Mit jQuery einzusteigen, ist da eine gute Idee.
 
Zurück
Oben