flutter: 没点击到棋盘点位上则不落子

顺带:
* 人工落子时,黑白交替落子改为只落黑子;
* 解决棋盘初始化位置函数找不到的问题。
This commit is contained in:
Calcitem 2020-11-14 23:31:35 +08:00
parent 179c1bad4c
commit c0af6740c1
3 changed files with 24 additions and 6 deletions

View File

@ -38,7 +38,7 @@ class Battle {
} }
newGame() { newGame() {
Battle.shared.position.initDefaultPosition(); Battle.shared.position.init();
_focusIndex = _blurIndex = Move.invalidIndex; _focusIndex = _blurIndex = Move.invalidIndex;
} }

View File

@ -94,6 +94,10 @@ class Position {
_recorder = MillRecorder(lastCapturedPosition: fen()); _recorder = MillRecorder(lastCapturedPosition: fen());
} }
init() {
Position.init();
}
Position.boardToGrid() { Position.boardToGrid() {
_grid = List<String>(); _grid = List<String>();
for (int sq = 0; sq < _board.length; sq++) { for (int sq = 0; sq < _board.length; sq++) {
@ -164,9 +168,20 @@ class Position {
return selectPieceSQ(makeSquare(file, rank)); return selectPieceSQ(makeSquare(file, rank));
} }
void putPiece(var pt, int index) { bool putPiece(var pt, int index) {
var sq = indexToSquare[index];
if (sq == null) {
print("putPiece skip index: $index");
return false;
}
_grid[index] = pt; _grid[index] = pt;
_board[indexToSquare[index]] = pt; _board[sq] = pt;
print("putPiece: pt = $pt, index = $index, sq = $sq");
return true;
} }
bool putPieceFR(int file, int rank) { bool putPieceFR(int file, int rank) {

View File

@ -51,7 +51,7 @@ class _BattlePageState extends State<BattlePage> {
String _status = ''; String _status = '';
bool _analysising = false; bool _analysising = false;
static int flag = 0; //static int flag = 0;
@override @override
void initState() { void initState() {
@ -72,8 +72,11 @@ class _BattlePageState extends State<BattlePage> {
final position = Battle.shared.position; final position = Battle.shared.position;
//position //position
flag++; //flag++;
position.putPiece(flag % 2 == 0 ? '@' : 'O', index); //position.putPiece(flag % 2 == 0 ? '@' : 'O', index);
if (position.putPiece('@', index) == false) {
return;
}
// Position side // Position side
if (position.side != Color.black) return; if (position.side != Color.black) return;