SlideSpiel

Kopki

Mitglied
Ich bin gerade dabei ein SlideSpiel zu erstellen. Es soll ein Feld aus 4x4 erstellt und dort soll man dann Zahlen hin und her schieben sodass am Ende alle Zahlen in einer Reihe stehen müssen. Ich komme aber an paar Punkten nicht weiter. Ich möchte die Switch Anweisung für die Steuerung gerne als Methode laufen lassen damit ich die eingabe separat habe. Es soll nämlich das Spielfeld random gemischt werden. Jedesmal wenn ich versuche die eingabe und die Switchanweisung mit 2 Methoden zusammen zu führen dann gibt es einen Error. Wenn ich die IO.readInt eingabe einfach auf public static int erstellen, dann will der Computer erst eine eingabe bevor irgendwas startet. Und am ende kommt dann nur die System.out.prinln Nachricht: "Bitte gültige Zahl eingeben".


Code:
import java.util.Arrays;

public class Aufgabe6mitmethoden2 {
   
    public static int x = 0;
    public static int  y = 1;
   
   
    public static void main (String args[]) {
        begruessung();
        ausgebenDerMatrix();
        Spiel(); }

    public static int Zahlen [] [] = {    
            {1,0,2,3},
            {4,5,6,7},
            {8,9,10,11},
            {12,13,14,15}, };
   
    public static int Lösung [] [] = {
            {0,1,2,3},
            {4,5,6,7},
            {8,9,10,11},
            {12,13,14,15}, };
   
    public static void begruessung() {
        System.out.println("Gebe eine Zahl ein: ");
        System.out.println("2 = Nach Unten");
        System.out.println("4 = Nach Links");
        System.out.println("8 = Nach Oben");
        System.out.println("6 = Nach Rechts"); }
   
    public static void ausgebenDerMatrix() {
        // \t = Tabulator
            System.out.println("___________________________");
        for(int i = 0; i < Zahlen.length; i++)
        { for(int j = 0; j < Zahlen[i].length; j++){
                System.out.print(Zahlen[i][j] + "\t");
            }
            System.out.println();}
            System.out.println("___________________________");}

    public static void switcha() {
   
        switch (eingabe) {
       
        case 6:{
            Zahlen[x][y] = Zahlen[x][y+1];
            Zahlen[x][y+1] = 0;
            y = y+1;
            ausgebenDerMatrix();;
            }
            break;
        case 4:{
            Zahlen[x][y] = Zahlen[x][y-1];
            Zahlen[x][y-1] = 0;
            y = y-1;
            ausgebenDerMatrix();
            }
            break;
        case 8:{
            Zahlen[x][y] = Zahlen[x-1][y];
            Zahlen[x-1][y] = 0;
            x = x-1;
            ausgebenDerMatrix();
            }
            break;
        case 2:{
            Zahlen[x][y] = Zahlen[x+1][y];
            Zahlen[x+1][y] = 0;
            x = x+1;
            ausgebenDerMatrix();   
            }
            break;
        default:
        }
    }
   
    public static void eingeben() {
        int eingbabe = IO.readInt();
    }
   
    public static void Spiel() {
            while (!(Arrays.deepEquals(Zahlen, Lösung))) {
                eingeben();
                switcha();
               
                    System.out.println("Bitte eine gültige Zahl eingeben"); }
}
}
 

Kopki

Mitglied
Hier ist jetzt mein 2ter Versuch. Dort geht es, doch der Befehl break; am Ende unterbricht natürlich alles. Wie kann ich das weiterhin ausführen lassen? Außerdem: ich habe dort die Methode public static void random() erstellt.
Allerding steht dort Dead Code?:(
 

Kopki

Mitglied
Code:
import java.util.Arrays;

public class Aufgabe6mitmethoden2 {
   
    public static int x = 0;
    public static int  y = 1;
   
   
    public static void main (String args[]) {
        begruessung();
        ausgebenDerMatrix();
        random();
        Spiel(); }

    public static int Zahlen [] [] = {    
            {1,0,2,3},
            {4,5,6,7},
            {8,9,10,11},
            {12,13,14,15}, };
   
    public static int Lösung [] [] = {
            {0,1,2,3},
            {4,5,6,7},
            {8,9,10,11},
            {12,13,14,15}, };
   
    public static void begruessung() {
        System.out.println("Gebe eine Zahl ein: ");
        System.out.println("2 = Nach Unten");
        System.out.println("4 = Nach Links");
        System.out.println("8 = Nach Oben");
        System.out.println("6 = Nach Rechts"); }
   
    public static void ausgebenDerMatrix() {
        // \t = Tabulator
            System.out.println("___________________________");
        for(int i = 0; i < Zahlen.length; i++)
        { for(int j = 0; j < Zahlen[i].length; j++){
                System.out.print(Zahlen[i][j] + "\t");
            }
            System.out.println();}
            System.out.println("___________________________");}
   

    public static int eingabe = IO.readInt();
   
    public static void switcha() {
       
        switch (eingabe) {
       
        case 6:{
            Zahlen[x][y] = Zahlen[x][y+1];
            Zahlen[x][y+1] = 0;
            y = y+1;
            ausgebenDerMatrix();;
            }
            break;
        case 4:{
            Zahlen[x][y] = Zahlen[x][y-1];
            Zahlen[x][y-1] = 0;
            y = y-1;
            ausgebenDerMatrix();
            }
            break;
        case 8:{
            Zahlen[x][y] = Zahlen[x-1][y];
            Zahlen[x-1][y] = 0;
            x = x-1;
            ausgebenDerMatrix();
            }
            break;
        case 2:{
            Zahlen[x][y] = Zahlen[x+1][y];
            Zahlen[x+1][y] = 0;
            x = x+1;
            ausgebenDerMatrix();   
            }
            break;
        default:
        }
    }
   
    public static void random() {
       
        for (int count = 0; count <= 5; count++) {
               
                switcha();
                eingabe = (int) (Math.random() *10);
                   
                    break;}
}
   
    public static void Spiel() {
       
        while (!(Arrays.deepEquals(Zahlen, Lösung))) {
               
                switcha();
               
                   
                    break;}
}
}
 

Kopki

Mitglied
Also er soll am Anfang die Zahlen ein bisschen mischen deswegen die Random Methode.
Allerding erkennt der auch nicht ob er das Array "verlässt" oder nicht. Daher kommt da auch ein Error. Man o man...
 

truesoul

Top Contributor
Hallo.

Java:
public static void ausgebenDerMatrix() {
        // \t = Tabulator
            System.out.println("___________________________");
        for(int i = 0; i < Zahlen.length; i++)
        { for(int j = 0; j < Zahlen[i].length; j++){
                System.out.print(Zahlen[i][j] + "\t");
            }
            System.out.println();}
            System.out.println("___________________________");}
  

    public static int eingabe = IO.readInt();
  
    public static void switcha() {...}

Diese Zeile
Java:
public static int eingabe = IO.readInt();
gehört sicher nicht außerhalb einer Methode.
Grüße
 

Neue Themen


Oben