Bei VierGewinnt Eingabe per Buchstabe (a,b,c...)

abinesh

Mitglied
Hallo,
wir sind im ersten Semester und sollen VierGewinnt programmieren. Die Eingaben sollen in der Konsole gemacht werden durch die Eingabe von Buchstaben...wie schreibe ich das ? unten füge ich den code ein.. wäre lieb wenn wir helfen könntet
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 connect {

    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;
    }
}
 
Statt Scanner.nextInt kannst Du Scanner.next oder Scanner.nextLine abfragen.

Dann kannst Du schauen, wie lang die Eingabe ist. Wenn der eingegebene String länger als 1 Zeichen ist, kannst Du überlegen, was Du machen willst: Einfach das erste Zeichen nehmen oder die Eingabe zurück weisen.

Wenn Du das Zeichen hast, dann kannst Du mit dem Zeichen arbeiten. Dabei ist erst einmal die Frage, was Du wie brauchst. Du hat dann ein Zeichen wie 'a' oder 'b'. Falls Du da einen index haben willst, dann kannst Du damit rechnen, denn ein char ist ja auch nur eine 16bit Zahl. Also von dem eingegebenen Zeichen könntest Du 'a' abziehen um dann den index zu erhalten.
 
Dann kannst Du schauen, wie lang die Eingabe ist. Wenn der eingegebene String länger als 1 Zeichen ist, kannst Du überlegen, was Du machen willst: Einfach das erste Zeichen nehmen oder die Eingabe zurück weisen.
genau und dafür währe wie dir schon im anderen Thread gesagt wurde ein Methode sinnvoll die dir das Zeichen ( String ) oder auch gleich die Spalten Nummer zurückgibt sinnvoll.
 

Neue Themen


Zurück
Oben