You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#井字棋重放功能失效 重开后未重置棋盘状态问题

问题原因

重开功能失效是因为新一局启动时没有重置上一局的游戏状态:

  • 棋盘数组board保留了上一局所有落子痕迹,没有清空回全-的初始状态
  • 先手轮次标记isplayer1停留在上一局最后一步的轮次,不会回到玩家1先手的初始状态
  • 终局标记gameEnded的重置代码被注释,加上之前在胜负/平局判定时仅用break跳出循环、没有主动设置gameEnded = true,导致循环状态逻辑混乱
  • 仅设置了replay = true,但核心游戏状态全部沿用上一局的终局值,自然会直接显示上局结束的棋盘,直接要求输入落子。
修复步骤
  1. 补全重开分支的状态重置逻辑,把输入yes后的else块替换成下面的代码:
else 
{
    System.Console.Clear();
    replay = true;
    // 重置终局标记
    gameEnded = false;
    // 重置先手为玩家1
    isplayer1 = true;
    // 清空棋盘为初始状态
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++) 
        {
            board[i,j] = '-' ; 
        }
    }
}
  1. 补全胜负、平局判定时的终局标记赋值,避免循环逻辑隐患:
    在获胜分支的break前加一行gameEnded = true;:
if(win)
{
    DrawGameBoard(board);
    System.Console.WriteLine("We HAVE A WINNERRR!!!!");
    gameEnded = true;
    break;
}

在平局分支的break前也加一行gameEnded = true;:

if(boardIsFull)
{
    DrawGameBoard(board);
    Console.WriteLine("It's A Tie!!!!");
    gameEnded = true;
    break;
}

改完之后重开就会正常加载空棋盘,从玩家1的回合开始新游戏。

内容的提问来源于stack exchange,提问作者Mostlygoldie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:33:25