Hallo,
Ich programmiere grade ein 4 Gewinnt mit game maker studio 2. Das Spielfeld hab ich als 2d array gespeichert. Noch wichtig: Wenn man einen Stein einwirft, fällt er wie beim richtigen 4 gewinnt nach unten:) Auch wichtig: Mein Objekt oFeld hat 3 Subimages: 0 für unbesetzt, 1 für Spieler eins und 2 für Spieler zwei. Um zu überprüfen, ob ein Feld besetzt ist, nutze ich also if image_index != 0 Mein Problem ist das erkennen des Programms, wenn ein Spieler gewonnen hat. Nach links und rechts hab ich es schon hinbekommen, an der diagonalen Erkennung halt ich mich aber schon seit Ewigkeiten auf:( Wäre nett, wenn mir da jemand helfen könnte;) Hier mein Code für die Gewinnerkennung Horizontal und Vertikal, damit ihr mein Vorgehen besser nachvollziehen könnt:
Horizontal:
Alles anzeigen
Vertikal:
Alles anzeigen
Sorry für die schlechte Einrückung des Codes!
Jetzt kennt ihr mein Problem, hoffentlich kann mir jemand weiterhelfen
Ich programmiere grade ein 4 Gewinnt mit game maker studio 2. Das Spielfeld hab ich als 2d array gespeichert. Noch wichtig: Wenn man einen Stein einwirft, fällt er wie beim richtigen 4 gewinnt nach unten:) Auch wichtig: Mein Objekt oFeld hat 3 Subimages: 0 für unbesetzt, 1 für Spieler eins und 2 für Spieler zwei. Um zu überprüfen, ob ein Feld besetzt ist, nutze ich also if image_index != 0 Mein Problem ist das erkennen des Programms, wenn ein Spieler gewonnen hat. Nach links und rechts hab ich es schon hinbekommen, an der diagonalen Erkennung halt ich mich aber schon seit Ewigkeiten auf:( Wäre nett, wenn mir da jemand helfen könnte;) Hier mein Code für die Gewinnerkennung Horizontal und Vertikal, damit ihr mein Vorgehen besser nachvollziehen könnt:
Horizontal:
GML-Quellcode
- //Gewinnerkennung Horizontal
- countHorizontal = 0;
- for ( ab = 0; ab < 7; ab++ ) {
- if ( feldObjekte[ab,steinY].image_index != 0 and
- feldObjekte[ab,steinY].image_index == steinTurn ) {
- countHorizontal++;
- }
- else {
- countHorizontal = 0;
- }
- if ( countHorizontal >= 4 ) {
- if ( steinTurn == 1 ) show_message("Spieler eins hat gewonnen!");
- else if ( steinTurn == 2 ) show_message("Spieler zwei hat gewonnen!");
- room_goto(6);
- }
- }
Vertikal:
GML-Quellcode
- //Gewinnerkennung Vertikal
- countVertikal = 0;
- for ( c = 0; c < 5; c++ ) {
- if ( feldObjekte[pointerPos,c].image_index != 0 and feldObjekte[pointerPos,c].image_index == steinTurn ) {
- countVertikal++;
- }
- else {
- countVertikal = 0;
- }
- if ( countVertikal >= 4 ) {
- if ( steinTurn == 1 ) show_message("Spieler Eins hat gewonnen! Beachte, dass das Spiel bisher nur Vertikale Spielzüge überprüft. Horizontale werden als nächstes Folgen! ( Und natürlich auch schönere Textboxen und Konfettianimationen )");
- else if ( steinTurn == 2 ) show_message("Spieler zwei hat gewonnen! Beachte, dass das Spiel bisher nur Vertikale Spielzüge überprüft. Horizontale werden als nächstes Folgen! ( Und natürlich auch schönere Textboxen und Konfettianimationen )");
- room_goto(6);
- }
- }
Jetzt kennt ihr mein Problem, hoffentlich kann mir jemand weiterhelfen