2010-12-06 9 views
0
import java.util.Scanner; 

public class Game 

{ 

    private String startYorN; 
    private int generateTestValues; 
    private int rows; 
    private int cols; 
    private int minCanisters; 
    private int maxCanisters; 
    private int numOfDarkies; 
    private int minimumLifePoints; 
    private String name; 
    private String type1; 
    private int sPosition1, sPosition2; 
    private int tPosition1, tPosition2; 
    private int iLifePoints; 
    Scanner scan = new Scanner(System.in); 

    public void gameSetting() 
    { 

     System.out.print ("Would you like to play? (y/n):"); 
     startYorN = scan.nextLine(); 
     //if (startYorN =="n" || startYorN =="N") 
     //quit the game(?) 

     System.out.print ("Would you want to generate test values for world? 1- yes: "); 
     generateTestValues =scan.nextInt(); 
     System.out.println (""); 

     System.out.print ("Enter a number of rows for world: "); 
     rows = scan.nextInt(); 
     System.out.println (""); 

     System.out.print ("Enter a number of cols for world: "); 
     cols = scan.nextInt(); 
     System.out.println (""); 

     System.out.print ("Enter minimum energy canisters in each planet: "); 
     minCanisters = scan.nextInt(); 
     System.out.println (""); 

     System.out.print ("Enter maximum energy canisters in each planet: "); 
     maxCanisters = scan.nextInt(); 
     System.out.println (""); 

     System.out.print ("Enter number of planets with darkies: "); 
     numOfDarkies = scan.nextInt(); 
     System.out.println (""); 

     System.out.print ("Enter minimum life points for players to replenish: "); 
     minimumLifePoints = scan.nextInt(); 
     System.out.print ("\n"); 
     World w = new World(rows,cols,minCanisters, maxCanisters, numOfDarkies); 
     w.display(); 

     Alien[] alien = new Alien [2]; 

     for (int i = 0; i<=1;i++) 
     { 
      name = scan.nextLine(); 
      System.out.print ("\n"); 
      System.out.print ("Enter name for player #" + i + ": "); 
      name = scan.nextLine(); 

      System.out.print ("Enter kind Player #" + i + ", (n- naive, g- greedy, a- aggressive, u- naive user, w-aggressive user): "); 
      type = scan.nextLine(); 

      System.out.print ("Enter: row (space) column for start position for player #" + i + ": "); 
      sPosition1 = scan.nextInt(); 
      sPosition2 = scan.nextInt(); 

      System.out.print ("Enter: row (space) column for target position for player #" + i + ": "); 
      tPosition1 = scan.nextInt(); 
      tPosition2 = scan.nextInt(); 

      System.out.print ("Enter initial life points for player #" + i + ": "); 
      iLifePoints = scan.nextInt(); 
     } 
    } 
    public void setInfo(Alien alien[i], String name, String type, int sPosition1, int sPosition2, 
         int tPosition1, int tPosition2, int iLifePoints) 
    { 
     this.name = name; 
     this.type = type; 
     this.sPosition1 = sPosition1; 
     this.sPosition2 = sPosition2; 
     this.tPosition1 = tPosition1; 
     this.tPosition2 = tPosition2; 
     this.iLifePoints = iLifePoints; 
    } 
} 

Ich weiß, dass etwas in der setInfo-Methode und wahrscheinlich in der gameSetting-Methode auch falsch ist. Ich möchte die Informationen von jedem von zwei Spielern (Aliens) bekommen. Könnte mir bitte jemand sagen, was ich tun soll?Java Spiel Fehler (Array, dies., Methoden)

+1

Welchen Fehler bekommen Sie? Ist das der vollständige Code? Ich bin verwirrt :( –

+0

wo du mit Alien Alien [i] in setInfo –

+0

Wir brauchen mehr Code und/oder Fehler, die Sie bekommen, um Ihnen zu helfen. – marcog

Antwort

2

Ein Problem ist, sollten Sie die i in Alien alien[i] in Ihrer setInfo() Argumentliste entfernen. Vielleicht möchten Sie auch in Betracht ziehen, es vollständig aus der Argumentliste zu entfernen, da Sie es nicht verwenden, oder es vielleicht nicht zu verwenden, ist ein weiterer Fehler, den Sie beheben müssen.

Sie müssen auch die Deklaration der Variablen type1 ändern, um sie stattdessen type zu nennen, denn das verwenden Sie an mehreren Stellen weiter unten.

Das Beheben dieser zwei Probleme entfernt alle Compilerfehler mit Ausnahme der "Klasse nicht gefunden" für Scanner/Alien/Welt, aber Sie können diese hoffentlich beheben. Siehe http://ideone.com/PNqb2

2

Try this:

public void setInfo(Alien alien[], String name, String type, int sPosition1, int 
sPosition2, int tPosition1, int tPosition2, int iLifePoints) 

Sie versuchten, auf eine bestimmte Instanz von Alien aus dem Array zu übergeben, aber Java nicht, dass Sie das tun nicht lassen. Rufen Sie beim Aufruf von setInfo() einfach die richtige Alien-Instanz auf und geben Sie sie weiter.

Außerdem sollten Sie weitere Informationen über die Fehler hinzufügen, vorzugsweise die Stacktrace.

2

Entfernen Sie "Alien Alien [i]" von setInfo. Es ist nicht benutzt. Wenn Sie es verwenden, dann finden Sie heraus, was es ist. Wenn es ein Alien-Array ist, sollte es Alien [] Alien sein, wenn es ein einzelnes Alien ist, sollte es nur Alien Alien sein. Wenn es der Index in ein Instanzarray ist, sollte es einfach int alien sein

Auch die Verwendung (Position1, Position2) wird wirklich sehr schnell verwirrend. Bleib bei row, col oder du vergisst, in welcher Reihenfolge sie gehen (notice (x, y) und (row, col) sind entgegengesetzte Ordnungen. Und (width, height) ist gleich wie (x, y))