跟brocode用c语言做tictoktoe井字棋 - 指南

news/2025/9/27 22:23:18/文章来源:https://www.cnblogs.com/slgkaifa/p/19115806

跟brocode用c语言做tictoktoe井字棋 - 指南

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
//这是c语言代码,使用cpp高亮
char board[3][3];
const char Player = 'X';
const char Computer = 'O';
void resetBoard();
void printBoard();
int checkFreeSpace();
void playerMove();
void computerMove();
char checkWinner();
void printWinner(char);
int main() {char winner = ' ';char response;do {winner = ' ';response = ' ';resetBoard();while (winner == ' ' && checkFreeSpace() != 0){printBoard();playerMove();winner = checkWinner();if (winner != ' ' || checkFreeSpace() == 0){break;}computerMove();winner = checkWinner();if (winner != ' ' || checkFreeSpace() == 0){break;}}printBoard();printWinner(winner);printf("would you like to play again(Y/N)");while (getchar() != '\n');scanf("%c", &response);while (getchar() != '\n');response = toupper(response);} while(response == 'Y');printf("thanks for playing");return 0;
}
void resetBoard()
{for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){board[i][j] = ' ';}}
}
void printBoard()
{printf(" %c | %c | %c ", board[0][0], board [0][1], board[0][2]);printf("\n---|---|---\n");printf(" %c | %c | %c ", board[1][0], board[1][1], board[1][2]);printf("\n---|---|---\n");printf(" %c | %c | %c ", board[2][0], board[2][1], board[2][2]);printf("\n---|---|---\n");printf("\n");
}
int checkFreeSpace() {int freeSpaces = 9;for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){if (board[i][j] != ' '){freeSpaces--;}}}return freeSpaces;
}
void playerMove() {int x;int y;do {printf("enter row #(1-3)");scanf("%d", &x);while (getchar() != '\n');x--;printf("enter column");scanf("%d", &y);while (getchar() != '\n');y--;if (board[x][y] != ' '){printf("invalid move!\n");}else{board[x][y] = Player;break;}} while (board[x][y]!= ' ');
}
void computerMove()
{srand(time(0));int x;int y;if (checkFreeSpace() > 0){do{x = rand() % 3;y = rand() % 3;} while (board[x][y] != ' ');board[x][y] = Computer;}else{printWinner(' ');}
}
char checkWinner()
{for (int i = 0; i < 3; i++){if (board[i][0] == board[i][1] && board[i][1] == board[i][2]){return board[i][0];}}for (int j = 0; j < 3; j++){if (board[j][0] == board[j][1] && board[j][1] == board[j][2]){return board[j][0];}}if (board[0][0] == board[1][1] && board[1][1] == board[2][2]){return board[0][0];}if (board[0][2] == board[1][1] && board[1][1] == board[2][0]){return board[2][0];}return ' ';
}
void printWinner(char winner)
{if (winner == Player){printf("you win");}else if (winner == Computer){printf("you lose");}else{printf("its a tie");}
}

利用ide为vs

目前运行中有以下几个问题:

1.一开始scanf函数一直报不安全,改成scanf_s函数后忘了什么原因但也一直不能正常运行,在前面加了一个引用处理。

2.一开始无法正常进行第二轮游戏,但在对内容进行修改后变得无法识别游戏结束了,即使已经赢了也得下满9子才能表现,未发现原因。

暂时无法解决上述问题,先搁置,备份,过几周再回来看。

现在计组刚看完存储器那章,这门东西好多啊……

目前在设想如何实现五子棋作用,以及其他项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

集训总结(九)

9.24~9.26总结9.24 P11770 檐牙覆雪 暴力很好写,直接枚举即可。单次询问复杂度 \(O(nlogn)\)。打个表,发现每个地方的最大雪堆都是由它的最大质因子位置转移而来. 设 \(f_i\) 表示最后 \(i\) 处最大雪团体积,则有转…

Spring Cloud构建分布式微服务架构的完整指南 - 指南

Spring Cloud构建分布式微服务架构的完整指南 - 指南2025-09-27 22:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; dis…

.net网站开发全过程网站域名做301

目录 初始化列表 static成员 C11对于非静态成员变量初始化 友元 友元函数 友元类 总结 初始化列表 我们知道&#xff0c;在学习构造函数时&#xff0c;我们知道对象的成员变量的初始化我们是在构造函数函数体内进行初始化的&#xff0c;还有没有其它初始化成员变量的方…

完整教程:操作系统之初识Linux

完整教程:操作系统之初识Linuxpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

XJSOJ优化(Stylus脚本)

/* XJSOJ Ultimate Smart Theme - 全面优化与重构 / / 版本: 3.0 - 完整结合版 / / 功能:包含基础圆润优化 + Smart Luogu式深度重构 */ /* === 基础重置与全局样式 === */{ border-radius: 8px !important; transiti…

使用mpm-itk让Apache以不同用户身份运行的完整指南

本文详细介绍了如何使用Apache的mpm-itk模块实现每个虚拟主机以不同用户身份运行,解决WordPress开发和生产环境中的文件权限问题,包含Docker容器配置和PHP邮件功能故障排除方案。使用mpm-itk让Apache以不同用户身份运…

sg.如何打开PySimpleGUI调试器窗口?

在PySimpleGUI中,调试器窗口的打开方式主要有以下三种,每种方式均适用于不同调试场景,且均通过内置调试器实现: 方法一:使用show_debugger_window()函数适用场景:需要快速查看变量值或交互式执行代码时。 操作步…

第6篇、Flask 表单处理与用户认证完全指南:从零到实战

标签:Python Flask Web开发 表单验证 Session Cookie 用户认证 安全编程🎯 为什么选择这篇文章? 在Web开发的世界里,表单处理和用户认证是每个开发者必须掌握的核心技能。无论是构建电商网站、社交平台还是企业管…

做视频网站收费标准wordpress.org密码

近日&#xff0c;全球IT市场研究和咨询公司Gartner发布最新报告《Magic Quadrant™ for Cloud Database Management Systems》&#xff08;全球云数据库管理系统魔力象限&#xff09;。全自研分布式数据库 OceanBase 入选“荣誉提及”&#xff0c;2022 年推出的云数据库 OB Clo…

腾讯开源 AudioStory!能生成 150 秒故事长音频,还会剧情拆解 + 自动配乐 - 详解

腾讯开源 AudioStory!能生成 150 秒故事长音频,还会剧情拆解 + 自动配乐 - 详解2025-09-27 22:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overf…

First blog of HannesZ

First blog of HannesZ这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546这个作…

威联通 NAS Docker 容器更新详解:从备份、推送到重建的全流程指南

本文针对在威联通(QNAP)等 NAS 平台上,因网络限制导致从 Docker Hub 更新容器困难或速度缓慢的问题,提出了一套完整且高效的解决方案。文章以更新 Sun-Panel 导航面板为例,详细阐述了如何利用 PC 作为跳板,结合 …

parameter和defparam的简单用法

parameter和defparam的用法 1.parameter (1)“C语言中的宏定义”功能 对于parameter来说,在我们的verilog语言中,在写.v的文件中,对于同一个变量多次出现,每次都是同时改变这些变量,可以使用parameter来替换变量…

9.27学习笔记

今日速览 环境拓扑(安全开启后) 表格 节点 新增角色 Principal 样例 node1 KDC (kerberos) kadmin/admin@HADOOP.COM node2 YARN RM + Queue Mgmt yarn/node2@HADOOP.COM node3 Phoenix RS hbase/node3@HADOOP.COM 关…

什么网站做兼职最好平台经济是什么意思

首先&#xff0c;我的结论是&#xff0c;如果是对对象进行 操作的话&#xff0c;传的是地址&#xff0c;如果是对基本数据类型进行操作的话&#xff0c;传的是值!下面&#xff0c;我再用一个小的实例来测试我的结论&#xff1a;class Person {int age;public void setAge(int a…

开学日记

dse好玩的dse好玩 我选了M2/物理/化学,物理和M2老师允许我不听课,所以理论上我可以偶尔去隔壁中国文学&&历史客串一下,好玩的 M2目前就是在学代数入门,感觉学的东西和深度不是很牛,但是我们神秘的M2老师说…

生活随笔

2025.9.27 今天不用上课(开心 做了一些题水了会洛谷一天就结束了!

网站免费建站广告机创新的南昌网站制作

目录 1 填算式 2 提取子串 3 机器人行走 4 地址格式转换 5 排日程 前言&#xff1a;以下代码仅供参考&#xff0c;若有错误欢迎指正哦~ 1 填算式 【结果填空】 (满分11分)看这个算式&#xff1a;☆☆☆ ☆☆☆ ☆☆☆如果每个五角星代表 1 ~ 9 的不同的数字。这个算式有多少种…

西宁商城网站建设公司免费解析素材网站

制造执行系统MES是一种应用于制造工厂的实际操作系统&#xff0c;它通过实时监控和控制生产流程&#xff0c;为生产过程提供全面的管理和优化。在MES管理系统解决方案中&#xff0c;设备管理功能是非常重要的一部分&#xff0c;它可以实现设备实时监控、故障预警、维护保养等功…

NOIP模拟赛 十八

DP/生成函数+博弈论+构造/倍增+根号重构A. 神秘 DP 的神秘做法。 先考虑朴素 DP ,发现最短路是可以钦定的,具体的,设 \(1\) 到其最短路为 \(d\) ,则称其为第 \(d\) 层。 要求,每一层如果存在点,一定要向上一层连…