Я новичок во Флаттере, и у меня много проблем с игрой в крестики-нолики. Он работает в консоли, но я не могу понять, как заставить игру работать в графическом интерфейсе, который я построил.
Я знаю, что мне нужен какой-то массив для кнопок игры, но я не уверен, как это реализовать. Я построил игровую доску со строками и столбцами так:
body: new Container(
padding: EdgeInsets.all(14.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Row(
//Start of the 1st Row
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
// Button 0 in 1st Row
RaisedButton(
padding: const EdgeInsets.all(20.0),
onPressed: () {
_button0();
},
child: new Text(_mBoard[0],
textAlign: TextAlign.center,
style: new TextStyle(
fontWeight: FontWeight.bold,
fontSize: 40.0,
fontFamily: 'Roboto',
)),
color: Colors.grey[300],
),
Это _button0, который вызывается в первой функции RaisedButton onPressed. Они идут до 8.
void _button0() {
setState(() {
if (_mBoard[0] == humanPlayer || _mBoard[0] == computerPlayer) {
return;
} else if (win == 0) {
if (turn == 0) {
_mBoard[0] = humanPlayer;
_text = humanPlayer + " MOVED, O's TURN";
turn = 1;
win = checkWinner();
checkGameOver(win);
displayBoard();
}
if ((turn == 1) && (win == 0)) {
turn = 0;
computerTurn();
win = checkWinner();
checkGameOver(win);
displayBoard();
}
}
});
}
Печать с консоли на консоль:
void displayBoard() {
print(_mBoard[0] + " | " + _mBoard[1] + " | " + _mBoard[2]);
print("-----------");
print(_mBoard[3] + " | " + _mBoard[4] + " | " + _mBoard[5]);
print("-----------");
print(_mBoard[6] + " | " + _mBoard[7] + " | " + _mBoard[8]);
}
Я ожидаю, что пользовательский выбор RaisedButton отобразит «X», а выбор компьютера - «O».