Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander.

abinesh

Mitglied
Hallo,

wir sollen VierGewinnt bei Java programmieren. Nun ist das Basegame fertig. Wir müssen aber noch einfügen, dass am Anfang gefragt wird, ob man gegen einen Computer spielen möchte oder gegeneinander. Außerdem soll am Ende gefragt werden, ob man noch eine Runde spielen möchte... wir kommen irgendwie nicht voran.. wäre cool wenn jemand helfen könnte.

Java:
package connect4;
//Am anfang aussuchen ob 1v1 oder gegen Computer
//eigabe mit a b c d... nicht nummern
//wenn fertig gefragt ob noch eine runde

import java.util.Scanner;

public class viergewinnt {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        //Länge und Breite des Spielfeldes festlegen
        char[][] raster = new char[6][7];
        //Erschaffung vom Spielfeld
        for (int zeile= 0; zeile< raster.length; zeile++){
            for (int spalte = 0; spalte < raster[0].length; spalte++){
                raster[zeile][spalte] = ' ';
            }
        }

        int turn = 1;
        char spieler = 'R';
        boolean gewinner = false;


        while (gewinner == false && turn <= 42){
            boolean validerSpielzug;
            int play;
            do {
                display(raster);
                System.out.println("Spieler 1 hat die Farbe Rot");
                System.out.println("Spieler 2 hat die Farbe Gelb");
                System.out.print("Spieler " + spieler + ", suche eine Säule aus: ");
                play = scan.nextInt();
                
                if(play > 6)
                    System.err.println("Dies ist nicht Spielbar, bitte geben sie eine Spielbare Antwort an! ");
                    
                else if(play < 0)
                    System.err.println("Dies ist nicht Spielbar, bitte geben sie eine Spielbare Antwort an! ");
                    
                
                
                validerSpielzug = validate(play,raster);

            }while (validerSpielzug == false);

            //drop the checker
            for (int zeile= raster.length-1; zeile>= 0; zeile--){
                if(raster[zeile][play] == ' '){
                    raster[zeile][play] = spieler;
                    break;
                }
            }
            

                
    

            //Herausfinden ob es ein Gegewinner gibt
            gewinner = isgewinner(spieler,raster);

            //Spiler wechseln
            if (spieler == 'R'){
                spieler = 'G';
            }else{
                spieler = 'R';
            }

            turn++;
        }
        display(raster);

        if (gewinner){
            if (spieler=='R'){
                System.out.println("Gelb gewinnt");
            }else{
                System.out.println("Rot gewinnt");
            }
        }else{
            System.out.println("Unentschieden");
        }

    }

    public static void display(char[][] raster){
        System.out.println(" A B C D E F G");
        System.out.println("---------------");
        for (int zeile= 0; zeile< raster.length; zeile++){
            System.out.print("|");
            for (int spalte = 0; spalte < raster[0].length; spalte++){
                System.out.print(raster[zeile][spalte]);
                System.out.print("|");
            }
            System.out.println();
            System.out.println("---------------");
        }
        System.out.println(" A B C D E F G");
        System.out.println();
    }

    public static boolean validate(int spalte, char[][] raster){

        if (spalte < 0 || spalte > raster[0].length){
            return false;
        }


        if (raster[0][spalte] != ' '){
            return false;
        }

        return true;
    }

    public static boolean isgewinner(char spieler, char[][] raster){
        //Prüfung ob es 4 quer gibt
        for(int zeile= 0; zeile<raster.length; zeile++){
            for (int spalte = 0;spalte < raster[0].length - 3;spalte++){
                if (raster[zeile][spalte] == spieler   &&
                        raster[zeile][spalte+1] == spieler &&
                        raster[zeile][spalte+2] == spieler &&
                        raster[zeile][spalte+3] == spieler){
                    return true;
                }
            }
        }
        //Prüfung ob es 4 nach oben oder unten gibt
        for(int zeile= 0; zeile< raster.length - 3; zeile++){
            for(int spalte = 0; spalte < raster[0].length; spalte++){
                if (raster[zeile][spalte] == spieler   &&
                        raster[zeile+1][spalte] == spieler &&
                        raster[zeile+2][spalte] == spieler &&
                        raster[zeile+3][spalte] == spieler){
                    return true;
                }
            }
        }
        //Kontrolle der Diagonale nach oben
        for(int zeile= 3; zeile< raster.length; zeile++){
            for(int spalte = 0; spalte < raster[0].length - 3; spalte++){
                if (raster[zeile][spalte] == spieler   &&
                        raster[zeile-1][spalte+1] == spieler &&
                        raster[zeile-2][spalte+2] == spieler &&
                        raster[zeile-3][spalte+3] == spieler){
                    return true;
                }
            }
        }
        //Kontrolle der Diagonale nach unten
        for(int zeile= 0; zeile< raster.length - 3; zeile++){
            for(int spalte = 0; spalte < raster[0].length - 3; spalte++){
                if (raster[zeile][spalte] == spieler   &&
                        raster[zeile+1][spalte+1] == spieler &&
                        raster[zeile+2][spalte+2] == spieler &&
                        raster[zeile+3][spalte+3] == spieler){
                    return true;
                }
            }
        }
        return false;
    }
}
 

KonradN

Super-Moderator
Mitarbeiter
Der Ansatz, zu dem ich immer nur immer wieder raten kann:
Unterteile es vernünftig in Methoden. Und mach in der main() nur minimale Dinge.

Dann hast Du es relativ einfach, Dinge anzupassen. Dann hast Du eine Methode, die z.B. einfach nur folgendes macht:
Java:
do {
  playGame();
while (doesPlayerWantToPlayAgain())

Ganz klein und einfach. playGame() kann dann einfach der Code in der main() Methode sein.
Die Methode doesPlayerWantToPlayAgain muss halt die Abfrage machen und auswerten um dann true oder false zurück zu geben.

Wenn Methoden so kurz und klein gehalten werden, dann sind diese auch einfach zu testen. Du hast den Überblick und kannst viel einfacher etwas verändern.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
K Viergewinnt - boolean Problem Java Basics - Anfänger-Themen 2
S VierGewinnt Überprüfung Java Basics - Anfänger-Themen 7
B Programmierprojekt VierGewinnt Java Basics - Anfänger-Themen 3
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
0 OOP Attributwerte besser im Konstruktor oder vorher zuweisen? Java Basics - Anfänger-Themen 6
D DocumentListener vorher kennen Java Basics - Anfänger-Themen 3
F jTable - neues Element vorher auf existenz Prüfen Java Basics - Anfänger-Themen 7
S break Label als Spungmarken vorher definieren Java Basics - Anfänger-Themen 4
J Arrays vorher immer festgelegt? Java Basics - Anfänger-Themen 10
G if abfrage vorher zusammensetzen Java Basics - Anfänger-Themen 6
G JavaMail funzt nur mit Adressen die ich vorher abgerufen hab Java Basics - Anfänger-Themen 3
G Datum Formatieren vorher "19801120" formatiert &qu Java Basics - Anfänger-Themen 11
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben