From 82d5614ccacd08aedf6ddc99b76465779436c8ea Mon Sep 17 00:00:00 2001 From: Ruki592 <1004663189@qq.com> Date: Fri, 25 Oct 2024 22:30:44 +0800 Subject: [PATCH] Update tic_tac_toe.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 解决 placex() 和 placey() 函数中的输入验证逻辑问题,以避免无限循环 --- games/tic_tac_toe.c | 56 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/games/tic_tac_toe.c b/games/tic_tac_toe.c index fbaf0e22..ceb54da8 100644 --- a/games/tic_tac_toe.c +++ b/games/tic_tac_toe.c @@ -15,6 +15,62 @@ #include #include +//解决 placex() 和 placey() 函数中的输入验证逻辑问题,以避免无限循环 + +// 假设有一个全局变量表示棋盘状态 +char board[3][3]; + +// 其他函数... + +// 输入验证函数 +int is_valid_input(int input) { + return input >= 1 && input <= 9; // 检查输入是否在有效范围内 +} + +// 处理 X 轴输入 +int placex() { + int x; + while (1) { + printf("Enter position for X (1-9): "); + if (scanf("%d", &x) != 1) { + printf("Invalid input. Please enter a number.\n"); + while(getchar() != '\n'); // 清空输入缓冲区 + continue; + } + if (is_valid_input(x)) { + return x; + } else { + printf("Invalid position. Please enter a number between 1 and 9.\n"); + } + } +} + +// 处理 Y 轴输入 +int placey() { + int y; + while (1) { + printf("Enter position for Y (1-9): "); + if (scanf("%d", &y) != 1) { + printf("Invalid input. Please enter a number.\n"); + while(getchar() != '\n'); // 清空输入缓冲区 + continue; + } + if (is_valid_input(y)) { + return y; + } else { + printf("Invalid position. Please enter a number between 1 and 9.\n"); + } + } +} + +// 其他函数... + +int main() { + // 初始化棋盘等... + + // 游戏循环等... + return 0; +} // Functions Declarations static void singlemode(); static void doublemode();