Java code Problem Kleines Game?

... komplette Frage anzeigen

3 Antworten

Was geht nicht richtig? Was war deine Eingabe? Was sagt der Debugger?

Aber ich kann dir eines sagen:

Deine Abbruchbedingungen in den if's werden NIE erfüllt. Daher ist deine whileschleife auch in einer Endlosschleife gefangen.


Antwort bewerten Vielen Dank für Deine Bewertung

1. Du beendest deinen Gameloop zu früh. Das Spielfeld muss jedes mal neu gezeichnet werden.

2. Beim Zeichnen der Spielfiguren vergleichst du die Points immer mit dem Point vom Spieler p und nicht mit dem von dir wahrscheinlich dafür vorgesehenen Point p1 den du kurz davor mit den aktuellen Possitionen erstellt hast.

3. Wieder beim Zeichnen hast du die Abfragen für das Zeichnen von S und P im Block von der Abfrage für den Spieler. (Wäre sowiso besser mit else if)

4. Du machst nach jedem Zeichen einen Zeilenumbruch (das ln von println) Nutze wenn du mehrere Zeichen nacheinander ausgeben möchtest besser System.out.print(String s) oder füge alles zu einem String zusammen und gebe diesen mit System.out.println(String s) aus.

5. Du wenn kein Spieler oder Objekt an der aktuellen Possition angezeigt werden soll, musst du trotzdem ein Leerzeichen ausgeben da sonst keine Abstände gibt.

6. Der Zeilenumbruch darf erst nach einer Zeile kommen und nicht nach jeden Zeichen.


WARNUNGEN:

7. Dein Spieler s und was es auch sein soll b1 werden außerhalb des Spielfeldes initialisiert. Spielfeld nur 40 x 10 und s(20|38), b1(50|45).

8. Ich verstehe außerdem nicht, warum du bei den Spielregeln überprüfst ob p == b1 und dann b1.setLocation(p) machst???

Hier jetzt mal den verbesserten code ich weiß jetzt nicht wie dein Spiel funktionieren soll, daher habe ich da auch nicht nach Fehlern geschaut und nur die Fehler beim Darstellen behoben.

public static void main(String[] args) {
// Erzeuge Spieler
Point p = new Point( 10,8 );
Point s = new Point ( 20, 38 );
Point b1 = new Point ( 50, 45 );
boolean paper = false;
while (true){
// Erzeuge Spielregeln

if ( paper && p.equals( s ) ) {
System.out.println("Schade, Verloren");
break;
}

if ( b1.equals( p ) ) {
System.out.println( "Herzlichen Glückwunsch, Gewonnen" );
break;
}
if ( p.equals( b1 ) ){
paper = true;
b1.setLocation(p);
}
//Erzeuge Spielfläche

for ( int y = 0; y < 10; y++ ) {
for ( int x = 0; x < 40; x++ ){
Point p1 = new Point( x,y );
if(p1.equals(p) ){
System.out.print('&');
} else if(p1.equals(s)) {
System.out.print('S');
} else if(p1.equals(b1)) {
System.out.print('P');
} else {
System.out.print(' ');
}
}
System.out.println();
}
//Spielereingabe

switch ( new Scanner(System.in).next() ){
case "h" : p.y = Math.max( 0, p.y -1 ); break;
case "t" : p.y = Math.min( 9, p.y +1 ); break;
case "l" : p.x = Math.max( 0, p.x -1 ); break;
case "r" : p.x = Math.min( 39, p.x +1 ); break;
}
//Gegner bewegt sich in Richtung spieler

if ( p.x < s.x )
s.x--;
if ( p.x > s.x )
s.x++;
if ( p.y < s.y )
s.y--;
if ( p.y > s.y )
s.y++;

}
}

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von RuheLp
27.06.2016, 19:27

Vielen Dank Hast mir sehr geholfen.

0
while (true){
// Erzeuge Spielregeln

Äh... so funktionieren Computer nicht...

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Tobihogh
25.06.2016, 23:24

Das ist auch nur ein Kommentar der dazu dient schnell den Teil des Programms zu finden in dem Events im Spiel abgefragt werden.

0

Was möchtest Du wissen?