Ошибка Java-игры (Array, this., Методы) - PullRequest
0 голосов
/ 06 декабря 2010
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;
    }
}

Я знаю, что что-то не так в методе setInfo и, вероятно, в методе gameSetting. Я хочу получить информацию от каждого из двух игроков (инопланетян). Может кто-нибудь сказать мне, что я должен делать?

Ответы [ 3 ]

2 голосов
/ 06 декабря 2010

Попробуйте это:

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

Вы пытались передать конкретный экземпляр Alien из массива, но Java не позволяет вам это сделать. При вызове setInfo () просто получите доступ к соответствующему экземпляру Alien и передайте его.

Кроме того, вам следует добавить дополнительную информацию об ошибках, предпочтительно трассировку стека.

2 голосов
/ 06 декабря 2010

Удалить "Чужой инопланетянин [i]" из setInfo. Это не используется. Если вы используете его, то выясните, что это такое. Если это массив Alien, то он должен быть Alien [] иностранцем, если это единственный инопланетянин, то он должен быть просто Alien Alien. Если это индекс в массиве экземпляров, он должен быть просто int alien

Кроме того, использование (position1, position2) может очень быстро запутать. Придерживайтесь row, col или вы забудете, в каком порядке они идут (обратите внимание (x, y) и (row, col) противоположные порядки. И (ширина, высота) совпадает с (x, y))

2 голосов
/ 06 декабря 2010

Одна проблема заключается в том, что вы должны удалить i in Alien alien[i] в вашем списке setInfo() аргументов.Возможно, вы также захотите полностью удалить его из списка аргументов, поскольку вы его не используете, или, возможно, не использовать его - это еще одна ошибка, которую вам нужно исправить.

Вам также необходимо изменить объявление переменной type1, чтобы назвать его type вместо этого, поскольку это то, что вы используете в нескольких местах ниже.

Исправление этих двух проблем удаляет все ошибки компилятора, кроме «Класс не найден» для Scanner / Alien / World,но вы можете надеяться исправить это.Смотри http://ideone.com/PNqb2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...