2014-02-09 2 views
0

Я строю игру Connect Four, и вот моя шашка:Как проверить полный столбец?

static final int ROWS = 6; 

    public void checkIfFull(int colu) 
{ 
    /*deleted*/ 
} 

Это вызывается, когда пользователь нажимает на кнопку:

if (e.getSource() == b1) 
    { 
     checkIfFull (0); 


    } 

Это мой метод в позиционировании маркер на низкий уровень открытый:

public void setPos(int column) 
{ 
    if (demise) return; //this is for when the game is already over and the user 
still attempts to click on a button 

    int row; 
    for (row = 0; row < ROWS; ++row) 
    { 
     if (slots[row][column] > 0) 
      break; 
    } 

    if (row > 0) 
    { 
     //save current player 
     slots[--row][column] = active; 
     //change turns 
     /*if (active == GREEN) 
     { 
      active = RED; 
      activeMe(); 
     } 
     else if (active == RED) 
     { 
      active = GREEN; 
      activeMe(); 
     } I moved this to setCircle method*/ 

     setCircle(active, row, column); //gui method used to fill up the empty circle 
    } 


} 

по состоянию на тот момент, когда я заполнить столбец, то JOptionPane не всплывало, но это, как предполагается.

Любые подсказки?

Я все еще постоянно изучаю логику, которую я имею, поэтому, если есть другие недостатки, которые вы видите, пожалуйста, укажите их. :)

+0

Stackoverflow более конкретных вопросов. В чем проблема, с которой вы сталкиваетесь? Получаете ли вы ошибки (если это так, отправляйте трассировку стека)? Наблюдаете ли вы за неожиданным поведением, и если да, то что это такое, и каково желаемое поведение? –

+0

@Teeg Извините, должен был быть более конкретным. на данный момент joptionpane должен появиться, когда колонка заполнена, но это не – user3026693

+0

@HovercraftFullOfEels yep просто сделал – user3026693

ответ

1

Вы должны проверить, является ли counter равно 6, так как вы заявили:

static final int ROWS = 6; 

так что вы должны проверить это:

if (counter == ROWS) // not 5 

Обратите внимание, что вы сравниваете против ROWS и не напрямую с 6, чтобы избежать "magic numbers".

Кроме того, не забудьте объявить и инициализировать counter перед использованием:

int counter = 0; 
+0

имеет смысл, но цикл начинается с 0, хотя? так что 5 заканчивается как максимальное значение? – user3026693

+0

Да, но от 0 до 5 есть 6 номеров. – Christian

+0

Условие в моем цикле, хотя это 'row user3026693

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