Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle)

balle12

Mitglied
Hallo, meine Aufgabe ist :

Es soll nach und nach ein Spiel entwickelt werden .

Erweitern sie ihre Klasse CC vom letzten mal um die Funktionalität des Selektierens. Dafür soll der User wiederholt nach x und y Koordinaten (zwischen 1 und 6) gefragt werden. Das angegeben Element soll dann Selektiert sein, was dadurch erkennbar sein soll, dass das Element jetzt groß geschrieben ist

Der User soll das solange wiederholen können bis er einen Wert kleiner 1 oder größer 6 für x oder y eingegeben hat . Nach jeder eingabe soll das Spielfeld neu ausgegeben werden.

Wird ein Element selektiert, welches schon zuvor ausgewählt wurde, soll die Auswahl wieder zurück genommen werden , das Element also wieder klein geschrieben werden.

Also hier ist die CC-Klasse vom letzten mal
Java:
import java.util.Scanner;

public class cubecrush {

 

        public static void main(String[] args) {
          
            // für spielfeld
            System.out.println("-------- SPIELFELD---------");
            char[] spielfeld = new char[37];
            fuellen(spielfeld);
            ausgabe(spielfeld);

            // für spielfeld2D
            System.out.println("\n\n-------- SPIELFELD2D--------");
            char[][] spielfeld2D = new char[6][6];
            fuellen2D(spielfeld2D);
            ausgabe2D(spielfeld2D);
          
      
        }
      
      

        // Methode für spielfeld, füllt das Array
        private static void fuellen(char[] newArray) {
            for (int i = 1; i < newArray.length; i++) {

                char[] feldInhalt = { 'a', 'b', 'x' };
                char werte;
                werte = (char) (Math.random() * feldInhalt.length);
                newArray[i] = feldInhalt[werte];

            }
            System.out.println();
        }

        // Methode für spielfeld, gibt das gefüllte Array wieder aus
        private static void ausgabe(char[] newArray) {
            System.out.print("  1 2 3 4 5 6\n1 ");
            int j = 2;
            for (int i = 1; i < newArray.length; i++) {
                System.out.print(newArray[i] + " ");

                if (i % 6 == 0 && j < 7) {
                    System.out.print("\n" + j + " ");

                    j++;
                }

            }
        }

        // Methode für spielfeld2D, füllt das Array
        private static void fuellen2D(char[][] newArray) {
            for (int i = 0; i < newArray.length; i++) {
                for (int j = 0; j < newArray.length; j++) {
                    // newArray[i] = i + 1;
                    char[] feldInhalt2D = { 'a', 'b', 'x' };
                    char werte2D;
                    werte2D = (char) (Math.random() * feldInhalt2D.length);
                    newArray[i][j] = feldInhalt2D[werte2D];

                }

            }
            System.out.println();
        }

        // Methode für spielfeld2D, gibt das gefüllte Array wieder aus
        private static void ausgabe2D(char[][] newArray) {
            System.out.println("  1 2 3 4 5 6");
            for (int i = 0; i < newArray.length; i++) {
                System.out.print((i + 1) + " ");
                for (int j = 0; j < newArray[i].length; j++) {
                    System.out.print(newArray[i][j] + " ");
                }
                System.out.println();
            }

        }

 
}

Nun zu meinem Problem ich weiß nicht wie ich die Funktion des selektierens erweitern soll , das ist das was ich bisher habe, vielleicht kann mir einer weiterhelfen.

Java:
import java.util.Scanner;

public class cubecrush2 {

 

        public static void main(String[] args) {
          
            // für spielfeld
            System.out.println("-------- SPIELFELD---------");
            char[] spielfeld = new char[37];
            fuellen(spielfeld);
            ausgabe(spielfeld);

            // für spielfeld2D
            System.out.println("\n\n-------- SPIELFELD2D--------");
            char[][] spielfeld2D = new char[6][6];
            fuellen2D(spielfeld2D);
            ausgabe2D(spielfeld2D);

            int x; // x-kooardinate
            Scanner sc = new Scanner(System.in);
            System.out.print("\nGeben Sie eine x-Koordinate ein: ");
            x = sc.nextInt();
          
            int y; // x-kooardinate
            System.out.print("Geben Sie eine y-Koordinate ein: ");
            y = sc.nextInt();
          
            if (x <1 ) {
                System.out.print("Ihre Zahl für x muss größer eins sein!! ");
                System.exit(1);
      
            }else if (x>6) {
                System.out.print("Ihre Zahl für x muss kleiner 6 sein!!");
                System.exit(1);
              
            }else if (y>6) {
                System.out.print("Ihre Zahl für y muss kleiner 6 sein!!");
                System.exit(1);
              
            }else if (y<1) {
                    System.out.print("Ihre Zahl für y muss größer 1 sein !! ");
                    System.exit(1);
            }
          
      
        }
      
      

        // Methode für spielfeld, füllt das Array
        private static void fuellen(char[] newArray) {
            for (int i = 1; i < newArray.length; i++) {

                char[] feldInhalt = { 'a', 'b', 'x' };
                char werte;
                werte = (char) (Math.random() * feldInhalt.length);
                newArray[i] = feldInhalt[werte];

            }
            System.out.println();
        }

        // Methode für spielfeld, gibt das gefüllte Array wieder aus
        private static void ausgabe(char[] newArray) {
            System.out.print("  1 2 3 4 5 6\n1 ");
            int j = 2;
            for (int i = 1; i < newArray.length; i++) {
                System.out.print(newArray[i] + " ");

                if (i % 6 == 0 && j < 7) {
                    System.out.print("\n" + j + " ");

                    j++;
                }

            }
        }

        // Methode für spielfeld2D, füllt das Array
        private static void fuellen2D(char[][] newArray) {
            for (int i = 0; i < newArray.length; i++) {
                for (int j = 0; j < newArray.length; j++) {
                    // newArray[i] = i + 1;
                    char[] feldInhalt2D = { 'a', 'b', 'x' };
                    char werte2D;
                    werte2D = (char) (Math.random() * feldInhalt2D.length);
                    newArray[i][j] = feldInhalt2D[werte2D];

                }

            }
            System.out.println();
        }

        // Methode für spielfeld2D, gibt das gefüllte Array wieder aus
        private static void ausgabe2D(char[][] newArray) {
            System.out.println("  1 2 3 4 5 6");
            for (int i = 0; i < newArray.length; i++) {
                System.out.print((i + 1) + " ");
                for (int j = 0; j < newArray[i].length; j++) {
                    System.out.print(newArray[i][j] + " ");
                }
                System.out.println();
            }

        }

 
}

Danke
 
Versuche doch erstmal einen Methodenrumpf zu erstellen, der die Methode "selektieren" repräsentiert.
Erweitern sie ihre Klasse CC vom letzten mal um die Funktionalität des Selektierens. Dafür soll der User wiederholt nach x und y Koordinaten (zwischen 1 und 6) gefragt werden. Das angegeben Element soll dann Selektiert sein, was dadurch erkennbar sein soll, dass das Element jetzt groß geschrieben ist

Der User soll das solange wiederholen können bis er einen Wert kleiner 1 oder größer 6 für x oder y eingegeben hat . Nach jeder eingabe soll das Spielfeld neu ausgegeben werden.

Für diese Form der Umsetzung stehen 2 Möglichkeiten zur Verfügung:
1.) Iteration und
2.) Rekursion
was jetzt für dich am besten erscheint, kannst du dir mal selbst durch lesen. HIER ist eine kleine Einführung, auch in Deutsch.

Als Anfänger würde ich dir empfehlen:
1.) Baue eine Methode :
Code:
public void selektieren(){}
2.) in der Methode kommt ein wenig Schmalz für die wiederholte Eingabe von x und y Koordinaten
a.) Variablen für x und y definieren
b.) Vielleicht eine do-while-Schleife erstellen. Die Abbruchbedingung der Schleife sind die Grenzen der Koordinaten (1 und 6 für x und y)
c.) in der Schleife erstelle ein Lesen von der Konsole (Scanner.in) und weise die Eingabe den Variablen x und y zu

In einem ersten Schritt versuche zu ermitteln, ob die Abbruchbedingungen (verlassen der Schleife) erstellen kannst.
 

Zurück
Oben