跟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,一经查实,立即删除!相关文章
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对于非静态成员变量初始化
友元
友元函数
友元类
总结 初始化列表 我们知道,在学习构造函数时,我们知道对象的成员变量的初始化我们是在构造函数函数体内进行初始化的,还有没有其它初始化成员变量的方…
完整教程:操作系统之初识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密码
近日,全球IT市场研究和咨询公司Gartner发布最新报告《Magic Quadrant™ for Cloud Database Management Systems》(全球云数据库管理系统魔力象限)。全自研分布式数据库 OceanBase 入选“荣誉提及”,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来替换变量…
什么网站做兼职最好平台经济是什么意思
首先,我的结论是,如果是对对象进行 操作的话,传的是地址,如果是对基本数据类型进行操作的话,传的是值!下面,我再用一个小的实例来测试我的结论:class Person {int age;public void setAge(int a…
网站免费建站广告机创新的南昌网站制作
目录 1 填算式 2 提取子串 3 机器人行走 4 地址格式转换 5 排日程 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 填算式 【结果填空】 (满分11分)看这个算式:☆☆☆ ☆☆☆ ☆☆☆如果每个五角星代表 1 ~ 9 的不同的数字。这个算式有多少种…
西宁商城网站建设公司免费解析素材网站
制造执行系统MES是一种应用于制造工厂的实际操作系统,它通过实时监控和控制生产流程,为生产过程提供全面的管理和优化。在MES管理系统解决方案中,设备管理功能是非常重要的一部分,它可以实现设备实时监控、故障预警、维护保养等功…
NOIP模拟赛 十八
DP/生成函数+博弈论+构造/倍增+根号重构A.
神秘 DP 的神秘做法。
先考虑朴素 DP ,发现最短路是可以钦定的,具体的,设 \(1\) 到其最短路为 \(d\) ,则称其为第 \(d\) 层。
要求,每一层如果存在点,一定要向上一层连…