C语言小游戏 — 三子棋
函数的声明#include stdio.h #include stdlib.h #include time.h //符号的定义 #define ROW 3 #define COL 3 //函数的声明 //初始化棋盘 void InitBoard(char board[ROW][COL], int row, int col); //打印棋盘函数 void DisplayBoard(char board[ROW][COL], int row, int col); //玩家下棋 void PlayerMove(char board[ROW][COL], int row, int col); //电脑下棋 void ComputerMove(char board[ROW][COL], int row, int col); // 玩家赢了 返回 * // 电脑赢了 返回 # // 平局 返回 Q // 游戏继续 返回 C //判断游戏输赢 char IsWin(char board[ROW][COL], int row, int col);函数的实现void menu() { printf(******************************\n); printf(****** 1. play *****\n); printf(****** 0. exit *****\n); printf(******************************\n); } void InitBoard(char board[ROW][COL], int row, int col) { int i 0; int j 0; for (i 0; i row; i) { for (j 0; j col; j) { board[i][j] ; } } } void DisplayBoard(char board[ROW][COL], int row, int col) { int i 0; for (i 0; i row; i) { int j 0; for (j 0; j col; j) { printf( %c , board[i][j]); if (j col - 1)//控制多打印的 | printf(|); } printf(\n); //打印分隔 if (i row - 1) { int j 0; for (j 0; j col; j) { printf(---); if (j col - 1) printf(|); } printf(\n); } } } void PlayerMove(char board[][COL], int row, int col) { int x 0; int y 0; printf(玩家走\n); while (1) { printf(请输入下棋的坐标); scanf(%d %d, x, y); //判断坐标合法性 if (x 1 x row y 1 y col) { //下棋 //坐标是否被占用 if (board[x - 1][y - 1] ) { board[x - 1][y - 1] *; break; } else { printf(坐标被占用请重新输入\n); } } else { printf(坐标非法请重新输入\n); } } } void ComputerMove(char board[ROW][COL], int row, int col) { printf(电脑走\n); while (1) { int x rand() % row; int y rand() % col; //判断棋盘是否满了 if (board[x][y] ) { board[x][y] #; break; } } } int IsFull(char board[ROW][COL], int row, int col) { int i 0; int j 0; for (i 0; i row; i) { for (j 0; j col; j) { if (board[i][j] ) { return 0;//棋盘没满 } } } return 1;//棋盘满了 } char IsWin(char board[ROW][COL], int row, int col) { int i 0; //判断行 for (i 0; i row; i) { if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][1] ! ) { return board[i][1];// } } //判断列 for (i 0; i col; i) { if (board[0][i] board[1][i] board[1][i] board[2][i] board[1][i] ! ) { return board[1][i]; } } //判断对角线 if (board[0][0] board[1][1] board[1][1] board[2][2] board[1][1] ! ) { return board[1][1]; } if (board[0][2] board[1][1] board[1][1] board[2][0] board[1][1] ! ) { return board[1][1]; } //判断平局 //棋盘满了返回1 不满返回0 int ret IsFull(board, row, col); if (ret 1) { return Q; } //继续游戏 return C; } void game() { //存储数据 char board[ROW][COL]; //初始化棋盘 InitBoard(board, ROW, COL); //打印棋盘 DisplayBoard(board, ROW, COL); //游戏状态 char ret 0; while (1) { PlayerMove(board, ROW, COL); DisplayBoard(board, ROW, COL); ret IsWin(board, ROW, COL); if (ret ! C) break; ComputerMove(board, ROW, COL); DisplayBoard(board, ROW, COL); ret IsWin(board, ROW, COL); if (ret ! C) break; } if (ret *) { printf(玩家赢了\n); } else if (ret #) { printf(电脑赢了\n); } else { printf(平局\n); } DisplayBoard(board, ROW, COL); }函数的整体调用int main() { int input 0; //设置变化随机值 srand((unsigned int)time(NULL)); do { menu(); printf(请选择:); scanf(%d, input); switch (input) { case 1: game(); break; case 0: printf(退出游戏\n); break; default: printf(选择错误重新选择\n); break; } } while (input); return 0; }

相关新闻

古典密码 - 维吉尼亚密码破解

古典密码 - 维吉尼亚密码破解

题目描述Plain Text加密文本: ZDRQ DQJC QIRG LDKI GZAY OZRY QIRG LDKI提示: 1. 密钥长度为4 2. 明文为英文短句,不含空格 3. 请解密得到flag,格式为CTF{xxx} Writeup 分析过程:识别密码类型:维吉尼亚密码…

2026/6/23 11:59:05阅读更多 →
零基础做量化,先把学习路径拆成几段

零基础做量化,先把学习路径拆成几段

对没有编程和交易经验的人来说,量化学习最容易变成两头空:概念还没想清楚,就急着找工具;代码还没能表达规则,就开始期待回测结论。更稳的做法,是把这件事看成一个分阶段落地过程,每一阶段只解决…

2026/6/23 11:59:05阅读更多 →
运维监控大屏踩坑记:一条 SQL 的“CASE 陷阱”与跨库优化实践

运维监控大屏踩坑记:一条 SQL 的“CASE 陷阱”与跨库优化实践

关于《运维踩坑记》 这是一个没有固定更新计划的系列。每一次遇到值得记录的异常、报错或诡异现象,处理完之后就随手记下来——可能是一个 SQL 的语法陷阱,可能是一次网络抖动的排查,也可能是一个配置参数的误解。没有刻意安排,遇…

2026/6/23 11:59:05阅读更多 →
利用ATtiny3227 Curiosity Nano板载调试器编程外部MCU实战指南

利用ATtiny3227 Curiosity Nano板载调试器编程外部MCU实战指南

1. 项目概述:为什么需要板载调试器编程外部MCU? 如果你手头有一块Microchip的ATtiny3227 Curiosity Nano开发板,那你大概率已经体验过它开箱即用的便利性了——插上USB,打开IDE,就能直接编译、下载、调试。这块板子自带…

2026/6/23 13:24:20阅读更多 →
ATA6824C电机驱动芯片:H桥驱动、电荷泵与热保护机制详解

ATA6824C电机驱动芯片:H桥驱动、电荷泵与热保护机制详解

1. 项目概述:深入剖析一颗“聪明”的电机驱动芯片 在嵌入式硬件开发,特别是需要精确控制直流电机或步进电机的项目中,选对一颗驱动芯片往往能决定整个系统的稳定性和可靠性。今天要聊的这颗ATA6824C,就是英飞凌(Infine…

2026/6/23 13:24:20阅读更多 →
如何用AutoJs6解放你的Android手机:终极自动化脚本开发指南

如何用AutoJs6解放你的Android手机:终极自动化脚本开发指南

如何用AutoJs6解放你的Android手机:终极自动化脚本开发指南 【免费下载链接】AutoJs6 安卓平台 JavaScript 自动化工具 (Auto.js 二次开发项目) 项目地址: https://gitcode.com/gh_mirrors/au/AutoJs6 厌倦了每天在手机上重复点击相同的按钮?想要…

2026/6/23 13:24:20阅读更多 →
驱动车辆诊断测试创新 | 支持诊断测试的模拟器及数据文件转换生成

驱动车辆诊断测试创新 | 支持诊断测试的模拟器及数据文件转换生成

一、背景和挑战| 背景:随着汽车功能的日益丰富,ECU和域控制器的复杂性大大增加,导致测试需求大幅上升,尤其是在ECU的故障诊断和性能验证方面。然而,传统的实车测试方法难以满足高频率迭代和验证需求,不仅如…

2026/6/23 13:24:20阅读更多 →
SAM G51电源管理与看门狗实战:低功耗嵌入式系统设计指南

SAM G51电源管理与看门狗实战:低功耗嵌入式系统设计指南

1. 项目概述:为什么SAM G51的电源与看门狗值得深挖? 在嵌入式开发圈子里,尤其是玩Atmel(现在叫Microchip)ARM Cortex-M系列MCU的朋友,对SAM D21、SAM E70这些型号可能更熟悉。但SAM G51这个系列&#xff0c…

2026/6/23 13:24:20阅读更多 →
哔咔漫画下载器:打造您的个人离线漫画图书馆

哔咔漫画下载器:打造您的个人离线漫画图书馆

哔咔漫画下载器:打造您的个人离线漫画图书馆 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh_mirrors/p…

2026/6/23 13:19:19阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/23 7:04:52阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/23 1:55:32阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/23 5:55:37阅读更多 →
2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南

2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南

2026年京东云 618 活动 Hermes Agent/OpenClaw配置Token Plan新手必看指南。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流…

2026/6/23 0:00:38阅读更多 →
2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?

2026年北京电子沙盘制作公司深度评测:从技术选型到落地效果,谁在真正定义“数字+实体”的融合边界?

模块一:行业背景——百亿赛道爆发,北京市场的特殊性与选型困局2026年,电子沙盘行业已走过“要不要做”的讨论,进入“找谁做、怎么做”的深水区。据行业研究机构数据,2025年国内电子沙盘市场规模已突破85亿元&#xff0…

2026/6/23 0:00:38阅读更多 →
音视频场景下的 Java 开发者面试:技术与挑战

音视频场景下的 Java 开发者面试:技术与挑战

面试互联网大厂:从音视频场景看 Java 开发者的技能与挑战 在互联网大厂求职的面试中,Java 开发者往往需要面对严苛的技术问题。今天,我们将通过一位名叫燕双非的搞笑程序员与严肃的面试官之间的对话,看看在音视频场景下&#xff0…

2026/6/23 0:00:38阅读更多 →