2015-11-21 3 views
1

Я пытаюсь сделать простую игру tic-tac-toe. У меня есть функция, которая помещает символ каждый раз, когда я нажимаю на сетку. У меня есть 2 переменных для разных символов xSym и circlSym. Мне нужно изменить помещенный символ один на другой, каждый раз вызывается функция mouseClicked. Можно ли сделать это без возврата из функции?Изменение переменной каждый раз, когда функция называется

public void mouseClicked(MouseEvent e) { 
    int r = e.getY()/cellH; 
    int c = e.getX()/cellW; 
    print(r, c, (char)xSym); 
    refresh(); 
} 

ответ

2

Сделать boolean переменную-член isX для представления текущего состояния. Когда установлено isX, выбрано xSym; в противном случае выбирается circleSym.

Каждый раз, когда конечный пользователь нажимает на ваше приложение, измените состояние isX на противоположное. Вы можете использовать ! оператор не для этого, а именно:

boolean isX = true; // X moves first 
public void mouseClicked(MouseEvent e) { 
    char currentSym = isX ? xSym : circleSym; 
    isX = !isX; // Invert isX 
    int r = e.getY()/cellH; 
    int c = e.getX()/cellW; 
    print(r, c, currentSym); 
    refresh(); 
} 

Переменная currentSym представляет текущий символ, выбранный на основе значения isX переменной.