2015-03-10 1 views
0

Я пытаюсь создать игру для задания под названием PegSwap. Динамика игры не важна, но «доска» - это доска с 7 пробелами. 3 красных колышка, 3 синих колышка, в случайных положениях, с пустым пятном посередине. Все, что я пытаюсь сделать, это случайное генерирование начальных позиций каждого привязки. Вот мой код:Не понимаю, почему эта переменная не может быть перенесена на тип? (Java)

package game; 

import java.util.List; 

public class PegGame implements GameState { 

//numbers corresponding to beg color to be used in list 
private final int BLANK = 3; 
private final int BLUE = 1; 
private final int RED = 2; 

//list that maintains peg at position i 
private int[] pegs = new int[7]; 

//generates a randomized start state for the board 
public int[] startState(){ 

    int blues = 0;// how many blues have been added so far? 
    int reds = 0; //how many reds have been added so far? 
    pegs[3] = 3; //puts blank spot in the center 

    for(int i = 1; i<6; i++){ 

     if(i == 3) break; 

     else if(blues < 3 && reds < 3) pegs[i] = (int) (Math.random()*2); 
     else{ 
      if(blues == 3) pegs[i] = 2; 
      if(reds == 3)pegs[i] = 1; 
     } 
    } 

    return pegs; 
} 

Проблема заключается в том, где я имею в виду список целочисленных pegs в методе «startState», (линию, которая говорит pegs[3] = 3) Затмение дает мне ошибку, говоря pegs является нерешенным тип. Почему это неразрешено, если я объявляю его целым массивом прямо над методом? Я не получаю ошибку в каких-либо других ссылках на pegs. Я подумал, что это произошло потому, что pegs необходимо передать в startState, но это просто дает мне больше ошибок, говоря, что pegs должен быть статическим. Может ли кто-нибудь помочь?

Редактировать: Может ли это быть так, потому что это личное? Разве это не означает, что к нему нельзя получить доступ в других классах? Я также должен был написать метод winState, и ссылки на pegs вообще не возникали ошибок, это просто одно обращение.

public int[] winState(){ 
    for(int i=0; i<6; i++){ 
     if(pegs[i] == 3) pegs[i] = 3; 
     if(pegs[i] == 2) pegs[i] = 1; 
     if(pegs[i] == 1) pegs[i] = 2; 
    } 
    return pegs; 
} 
+0

@ пользователь1354678 WHAT? Вы имеете в виду, что методы класса не могут получить доступ к своим собственным полям классов? –

+0

Вы пытались очистить и перестроить свой проект? эти две строки являются синтаксически действительными (объявление и доступ) – mevqz

+0

может ли быть так, что ваш метод startState() на самом деле является статическим методом? – yurib

ответ

0

Я не думаю, что в вашем коде есть проблемы. Это должно сработать. Попробуйте очистить и перестроить.

Если не работает. Просьба указать, какие именно проблемы заданы на консоли.

+1

Я исправил его. Я буквально просто удалил строку и перепечатал ее. Должно быть, это ошибка Eclipse. Всем спасибо – JHollowed

Смежные вопросы