diff --git a/src/samples/boop/commands.ts b/src/samples/boop/commands.ts index df87090..1d7d117 100644 --- a/src/samples/boop/commands.ts +++ b/src/samples/boop/commands.ts @@ -34,7 +34,7 @@ async function place(game: BoopGame, row: number, col: number, player: PlayerTyp const partId = part.id; - game.produce(state => { + await game.produceAsync(state => { // 将棋子从supply移动到棋盘 const part = state.pieces[partId]; moveToRegion(part, state.regions[player], state.regions.board, [row, col]); @@ -50,7 +50,7 @@ const placeCommand = registry.register( 'place { + await game.produceAsync(state => { // 按照远离放置位置的方向推动 for (const [dr, dc] of getNeighborPositions()) { const nr = row + dr; @@ -133,16 +133,14 @@ async function checkGraduates(game: BoopGame){ } } - game.produce(state => { - // 预先收集所有可用的猫(在盒子里的) + await game.produceAsync(state => { for(const partId of toUpgrade){ const part = state.pieces[partId]; const [row, col] = part.position; const player = part.player; moveToRegion(part, state.regions.board, null); - // 使用下一个可用的猫 - const newPart = findPartInRegion(state, '', 'kitten', player); + const newPart = findPartInRegion(state, '', 'cat', player); moveToRegion(newPart || part, null, state.regions[player], [row, col]); } }); @@ -155,7 +153,7 @@ async function setup(game: BoopGame) { const turnOutput = await turnCommand(game, currentPlayer); if (!turnOutput.success) throw new Error(turnOutput.error); - game.produce(state => { + await game.produceAsync(state => { state.winner = turnOutput.result.winner; if (!state.winner) { state.currentPlayer = state.currentPlayer === 'white' ? 'black' : 'white'; @@ -197,7 +195,7 @@ async function checkFullBoard(game: BoopGame, turnPlayer: PlayerType){ } ); - game.produce(state => { + await game.produceAsync(state => { const part = state.pieces[partId]; moveToRegion(part, state.regions.board, null); const cat = findPartInRegion(state, '', 'cat'); @@ -238,6 +236,7 @@ async function turn(game: BoopGame, turnPlayer: PlayerType) { if(winner.success) return { winner: winner.result as WinnerType }; await checkGraduatesCommand(game); + await checkFullBoard(game, turnPlayer); return { winner: null }; } const turnCommand = registry.register('turn ', turn); \ No newline at end of file