Spielfeldbegrenzung einfügen (Java)? Brauche Hilfe!

rudinew

Neues Mitglied
Hallo Com,

ich soll für die Uni ein Spiel programmieren bis Morgen!! :-(.
Ich habe die Voraussetzungen soweit erfüllt.
Allerdings verstehe ich noch nicht, wie ich meinem Spielfeld eine Grenze verpassen soll.
Wenn ich es ausführen möchte, passiert nämlich gar nichts...
Könnt ihr mir dabei helfen? (Im Anhang ist ein Bild, wie es aussehen soll.)
Mein Code:

public class AlienGame { //Folgendes sind Attribute, also Merkmale des Spiels

public static void main(String[] args){ //Main Methode erstellt

if (args.length != 3) { //Es müssen mindestens 3 Parameter eingegeben werden: SpielfeldmaßeXY und Alienanzahl.
System.out.println ("Sie müssen mindestens 3 Paramater eingeben.");
System.out.println ("Programm wird jetzt geschlossen.");
System.exit(0);
}

int x = Integer.parseInt (args[0]);
int y = Integer.parseInt (args[1]);

int playerPosX= (int) (Math.random() * x); //Spieler (P) wird zufällig platziert.
int playerPosY= (int) (Math.random() * y); // Spieler wird zufällig platziert.
int alienAnzahl = Integer.parseInt(args[2]); //Alienanzahl wird vom User bestimmt.
char[][] map = new char[x][y];

if ((x * y) < (alienAnzahl + 1)) { //+1 da Spieler (P) dazu kommt.
System.out.println("Es gibt nicht genügend Platz für Aliens und Spieler auf dem Spielfeld.");
System.exit(0);
}

if ((alienAnzahl < 1)) { //Falls Alienzahl unter 1 liegt, schließt das Programm.
System.out.println("Sie brauchen mindestens ein Alien, gegen das Sie spielen.");
System.out.println("Das Programm schließt sich nun");
System.exit(0);
}


//for (int i=0; i<maph; i++){
//for (int j=0; j<mapw; j++){
//map[j]=' ';

//}
//}

for (int i = 0; i < map.length; i++) {

for (int j = 0; j < map.length; j++) {
map[j] = ' ';
}
}



if (map[playerPosX][playerPosY] == ' ') { //Wenn die Koordinate PosXY ' ' ist, wird ein P gesetzt.
map[playerPosX][playerPosY] = 'P'; //Spieler wird auf Spielfeld platziert.
}

while (alienAnzahl > 0) { //Solange es noch Aliens gibt, tue folgendes :

int alienPosX = (int) (Math.random() * x); //Generiere Koordinate für Alien.
int alienPosY = (int) (Math.random() * y); // ''

if (map[alienPosX][alienPosY] == ' ') { //Falls Koordniate ' ' ist, //Ein Feld soll mindestens ein Feld besitzen.
map[alienPosX][alienPosX] = 'A'; // platziere Alien.
alienAnzahl -= 1; //Reduziere Alienanzahl um 1 und setze
}
}
}
}
 

Anhänge

  • Foto 17.11.17, 18 37 53.png
    Foto 17.11.17, 18 37 53.png
    1,8 MB · Aufrufe: 49
Das ist dein Programm:
Java:
public class AlienGame { // Folgendes sind Attribute, also Merkmale des Spiels

    public static void main(String[] args) { // Main Methode erstellt

        if (args.length != 3) { // Es müssen mindestens 3 Parameter eingegeben
                                // werden: SpielfeldmaßeXY und Alienanzahl.
            System.out.println("Sie müssen mindestens 3 Paramater eingeben.");
            System.out.println("Programm wird jetzt geschlossen.");
            System.exit(0);
        }

        int x = Integer.parseInt(args[0]);
        int y = Integer.parseInt(args[1]);

        int playerPosX = (int) (Math.random() * x); // Spieler (P) wird zufällig
                                                    // platziert.
        int playerPosY = (int) (Math.random() * y); // Spieler wird zufällig
                                                    // platziert.
        int alienAnzahl = Integer.parseInt(args[2]); // Alienanzahl wird vom
                                                        // User bestimmt.
        char[][] map = new char[x][y];

        if ((x * y) < (alienAnzahl + 1)) { // +1 da Spieler (P) dazu kommt.
            System.out.println("Es gibt nicht genügend Platz für Aliens und Spieler auf dem Spielfeld.");
            System.exit(0);
        }

        if ((alienAnzahl < 1)) { // Falls Alienzahl unter 1 liegt, schließt das
                                    // Programm.
            System.out.println("Sie brauchen mindestens ein Alien, gegen das Sie spielen.");
            System.out.println("Das Programm schließt sich nun");
            System.exit(0);
        }

        // for (int i=0; i<maph; i++){
        // for (int j=0; j<mapw; j++){
        // map[j]=' ';

        // }
        // }

        for (int i = 0; i < map.length; i++) {

            for (int j = 0; j < map.length; j++) {
                map[j] = ' ';
            }
        }

        if (map[playerPosX][playerPosY] == ' ') { // Wenn die Koordinate PosXY '
                                                    // ' ist, wird ein P
                                                    // gesetzt.
            map[playerPosX][playerPosY] = 'P'; // Spieler wird auf Spielfeld
                                                // platziert.
        }

        while (alienAnzahl > 0) { // Solange es noch Aliens gibt, tue folgendes
                                    // :

            int alienPosX = (int) (Math.random() * x); // Generiere Koordinate
                                                        // für Alien.
            int alienPosY = (int) (Math.random() * y); // ''

            if (map[alienPosX][alienPosY] == ' ') { // Falls Koordniate ' ' ist,
                                                    // //Ein Feld soll
                                                    // mindestens ein Feld
                                                    // besitzen.
                map[alienPosX][alienPosX] = 'A'; // platziere Alien.
                alienAnzahl -= 1; // Reduziere Alienanzahl um 1 und setze
            }
        }
    }
}
In folgender Zeile ist ein Fehler:
Java:
                map[j] = ' ';
"Type mismatch: cannot convert from char to char[]"
 
habt ihr vieleicht die loesung zur naechste alienaufgabe
Die AlienGame-Klasse: Die AlienGame-Klasse soll weiterhin die main-Methode enthalten
um das Spiel zu starten. Die Generierung des Spielfelds jedoch soll in den Konstruktor
der Map-Klasse ausgelagert werden. Außerdem soll in der main-Methode die Interaktion
mit dem Nutzer gesteuert werden. Der Nutzer soll in jeder Spielrunde über Eingaben auf
der Konsole ein Feld auswählen, das angegriffen werden soll. Felder, die nicht im Spielfeld
liegen oder auf denen kein lebendes Alien steht, sollen nicht angegriffen werden können
und der Spieler soll die Möglichkeit erhalten ein neues Feld anzugreifen. Genauso sollen
andere ungültige Eingaben behandelt werden und nicht zum Absturz des Spiels führen.
Hat der Spieler seinen Zug also aufgeführt, sind die Aliens an der Reihe. Jedes noch existierende
Alien soll einen Angriff ausführen. Das Spiel soll genau dann beendet werden,
sobald entweder alle Aliens getroffen wurden oder der Spieler besiegt ist.
Die Map-Klasse: Erstellen Sie die Klasse Map. Diese repräsentiert das Spielfeld und sollte
wenigstens die folgenden Objektvariablen enthalten:
• char[][] map: das Spielfeld dieser Map-Instanz
• Player player: den Player um dessen Status und Aktionen zu steuern
• Alien[] aliens: ein Array das die Aliens verwaltet
Desweiteren soll die Map-Klasse die toString()-Methode implementieren um nach jeder
Spielrunde die aktuelle Karte ausgeben zu können. Dabei sollte das Spielfeld nun zu allen
Seiten begrenzt ausgegeben und mit einer Orientierung für Koordinaten versehen werden.
Orientieren sie sich am unten aufgeführten Beispiel.
Die Alien-Klasse: Erstellen Sie die Klasse Alien. Eine Instanz dieser Klasse soll ein
einzelnes Alien auf dem Spielfeld repräsentieren. Die Klasse sollte Objektvariablen für
die Position auf dem Spielbrett enthalten. Eine Möglichkeit den Status des Aliens (lebendig/tot)
zu speichern kann ebenfalls nützlich sein. Desweiteren soll hier eine Methode enthalten sein um das Player-Objekt anzugreifen. Ob ein Angriff eines Aliens gelingt,
soll zufallsabhängig sein. Dabei soll die Wahrscheinlichkeit, ob der Spieler getroffen wird,
von der Distanz der Figuren abhängen. Berechnen Sie die Distanz zum Spieler, indem
Sie die absoluten Beträge der Differenzen der Koordinaten berechnen.
Die Player-Klasse: Erstellen Sie die Klasse Player. Eine Instanz dieser Klasse soll den
Spieler repräsentieren. Die Klasse sollte Objektvariablen für die Position auf dem Spielbrett,
sowie eine Anzahl an Trefferpunkten enthalten. Die Trefferpunkte entsprechen dem
Leben des Spielers. Gelingt ein Angriff eines Aliens, so soll der Player einen Trefferpunkt
verlieren. Desweiteren soll auch hier eine Methode enthalten sein um ein Alien-Objekt
anzugreifen. Für die Angriffswahrscheinlichkeit des Players gilt das gleiche wie für die
Aliens.
 
Java:
public class Spiel {


    public static void main(String[] args) {
 
       
     int hpspieler = Integer.parseInt(args[0]);
     int atkspieler = Integer.parseInt(args[1]);
     int hitspieler = Integer.parseInt(args[2]);
    
            qqqqqQQQQQ@
            
      int hpmonster = hpspieler   * 2 ;
      int atkmonster = (atkspieler / 2) ;
      int hitmonster = 50;
     
    
  
     int zufall;
  
    while(hpmonster > 0 && hpspieler > 0 ) {
       
      
         //spieler ist dran  
       zufall = (int) ( 100 * Math.random());
       System.out.println("Spieler hat " + hpspieler + " Punkte" );
        if  ( zufall <= hitspieler ){
            hpmonster = hpmonster - atkspieler ;
            System.out.println("Spieler hat das Monster fuer " + atkspieler + " Punkte geschlagen");
        } else {
         
               System.out.println("spieler missed");
        }
   
        if (hpmonster <= 0) {
            System.out.println("____________________________");
            System.out.println("Monster hat " + hpmonster + " Punkte");
            System.out.println("monster hat verloren");
            break ;
        }
      
         //Monster ist dran
         zufall = (int) ( 100 * Math.random());
         System.out.println("Monster hat " + hpmonster + " Punkte" );
         if  ( zufall <= hitmonster ){
           hpspieler = hpspieler - atkmonster ;
           System.out.println("Monster hat das Spieler fuer " + atkmonster + " Punkte geschlagen");          
         }
           
           
        else {
         
               System.out.println("Monster missed");
        }         
           
         if (hpspieler <= 0) {
            System.out.println("____________________________");
            System.out.println("Spieler hat " + hpspieler + " Punkte");
            System.out.println("Spieler hat verloren");
            break ;
        }
                System.out.println("____________________________");

    }
    
    }
}
 
Java:
   puplic class Map (int a , int b , int alienzahl){
    this.a = a;
    this.b = b;
    this.alienzahl = alienzahl;
   
     char map = new char [a][b]; 
     int pa = (int)(Math.random()*a);     
     int pb = (int)(Math.random()*b);
     map[pa][pb]= 'p';
    
       while(alienzahl>0){         
           int xa= (int)(Math.random()*a);
           int xb = (int)(Math.random()*b);     
   if( map [xa][xb]!='A' && map[xa][xb]!='p') {
       map[xa][xb]='A'; alienzahl--;
}
  
}        
puplic String toString(string str,string sterne, string xcoordinar){
string str = " "; string sterne = "**"; string xcoordinat"  ";     
for(int i = 0, i<a , i++){
  for(int j = 0, j<b , j++){
    if(i==0){sterne += "*";xcoordinat += Integer.toString(j);
} 
    if(j==0){string xstr = Integer.toString(i);
    str += xstr+"*";
    }
    str += map [i][j];
    if(j==b-1){str +="*";
}
   
}
  str += "ln";
}
return xcoordinat+"ln"+sterne+"ln"+str+"ln"+sterne;
}
}
 
Java:
public class Spielfeld { 

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        player player = new player();
        map map = new map ();
       
        alien alien = new alien ();
        if (args.length !=3){
            System.out.println("sie müssen unbedingt drei zahlen angeben ");
            System.exit(0);
        }


        // TODO code application logic here
        int a = Integer.parseInt(args[0]);     
        int b = Integer.parseInt(args[1]);     
        int alienzahl = Integer.parseInt(args[2]); //anzahl von alienzahl
      
          
        if ( alienzahl >= a*b ){
       System.out.println("fehler");
         System.exit(0);
        
      }
       
       
     
        Scanner n = new Scanner (System.in);
        int m = n .nextInt();
       
       
       
       
       
   }
   
       }
 

Neue Themen


Zurück
Oben