# SlideSpiel



## Kopki (17. Nov 2017)

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".



```
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"); }
}
}
```


----------



## JStein52 (17. Nov 2017)

Kopki hat gesagt.:


> 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".


Das hast du genau so programmiert. Und wie sieht dein anderer Versuch aus ?


----------



## Kopki (17. Nov 2017)

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 (17. Nov 2017)

```
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 (17. Nov 2017)

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 (20. Nov 2017)

Hallo.


```
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 
	
	
	
	





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


----------

