C语言实现三子棋小游戏
发布日期:2021-09-20 08:56:21
浏览次数:20
分类:技术文章
本文共 2741 字,大约阅读时间需要 9 分钟。
C语言实现三子棋小游戏
#define _CRT_SECURE_NO_WARNINGS#include#include #include #include #define ROW_MAX 3//宏定义棋盘的行#define COL_MAX 3//宏定义棋盘的列char Chess[ROW_MAX][COL_MAX] = {0};//定义一个二维数组的棋盘int neum() {//设置游戏菜单 int chooice = 0; printf("******************\n"); printf("**1.开始游戏******\n"); printf("**2.退出游戏******\n"); printf("******************\n"); printf("请输入您的选择 "); scanf("%d", &chooice); return chooice;}void Print() {//打印棋盘 for (int ROW=0; ROW < ROW_MAX; ROW++) { printf("| %c | %c | %c |\n", Chess[ROW][0], Chess[ROW][1], Chess[ROW][2]); if (ROW != ROW_MAX-1) { printf("|---|---|---|\n"); } }}void Playermove() { while (1) { printf("玩家落子\n"); printf("请输入落子位置(ROW,COL) "); int ROW = 0; int COL = 0; scanf("%d %d", &ROW, &COL); //检测用户输入的坐标是否合法 if (ROW>2 || COL > 2||ROW<0||COL<0) { printf("您输入的坐标有误请重新输入\n"); continue; } if (Chess[ROW][COL] != ' ') { printf("您输入的坐标已经被他人占用请重新输入\n"); continue; } Chess[ROW][COL] = 'X'; break; printf("玩家落子完毕\n"); }}void Computermove() { srand((unsigned int)time(NULL)); printf("电脑落子\n"); while (1) { int ROW = rand() % 3; int COL = rand() % 3; if (Chess[ROW][COL] != ' ') { continue; } Chess[ROW][COL] = 'O'; break; } printf("电脑落子完毕\n");}char Cheekwinner() { //检查所有行是否连成一条线 for (int ROW = 0; ROW < ROW_MAX; ++ROW) { if (Chess[ROW][0] == Chess[ROW][1] && Chess[ROW][0] == Chess[ROW][2]) { return Chess[ROW][0]; } } for (int COL = 0; COL < COL_MAX; ++COL) { if (Chess[0][COL] == Chess[1][COL] && Chess[0][COL] == Chess[2][COL]) { return Chess[0][COL]; } } if (Chess[0][0] == Chess[1][1] && Chess[0][0] == Chess[2][2]) { return Chess[0][0]; } else if (Chess[0][2] == Chess[1][1] && Chess[0][2] == Chess[2][0]) { return Chess[0][2]; } else if (IsFull()){ return 'q';//返回q表示和棋 } return ' ';//返回空格表示未分胜负}//棋盘满返回1否则返回0int IsFull() { for (int ROW = 0; ROW < ROW_MAX; ++ROW) { for (int COL = 0; COL < COL_MAX; ++COL) { if (Chess[ROW][COL] == ' ') { return 0; } } } return 1;}void Cheek_body() { int ROW=0; int COL=0; for (ROW = 0; ROW < ROW_MAX; ++ROW) { for (COL = 0; COL < COL_MAX; ++COL) { Chess[ROW][COL] = ' '; } }}void GAME() { char winner = ' '; //初始化棋盘 Cheek_body(); while (1) { //打印棋盘 Print(); //玩家落子 Playermove(); Print(); //判断胜负 winner=Cheekwinner(); if (winner != ' ') { break; } //电脑落子 Computermove(); //判断胜负 winner=Cheekwinner(); if (winner != ' ') { break; } } if (winner == 'X') { printf("您赢了!\n"); } else if (winner == 'O') { printf("您真菜!\n"); } else if (winner == 'q') { printf("您和电脑五五开"); }}int main() { while (1) { int ret=neum(); if (ret == 1) { GAME(); } else if (ret == 2) { printf("GOODBAY\n"); return; } else { printf("您输入的选项有误"); } } system("pause"); return 0;}
转载地址:https://blog.csdn.net/a_hang_szz/article/details/88841652 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月20日 09时59分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
洛谷 P3367 【模板】并查集
2019-04-28
【算法学习】高级数据结构2 种类并查集
2019-04-28
洛谷 P1525 关押罪犯【种类并查集】
2021-07-01
洛谷 P2024 [NOI2001]食物链【种类并查集】
2021-07-01
POJ 1703 Find them, Catch them【种类并查集】
2021-07-01
POJ 2492 A Bug‘s Life【种类并查集】
2021-07-01
POJ 2236 Wireless Network【并查集】
2021-07-01
LeetCode C++ 214. Shortest Palindrome【字符串】困难
2021-07-01
洛谷 P2580 于是他错误的点名开始了【字典树/Map】
2021-07-01
HDU 3336 Count the string【KMP的next数组性质】
2021-07-01
洛谷 P1196 [NOI2002]银河英雄传说【带权并查集】
2021-07-01
HDU 4825 Xor Sum【01字典树/贪心】(两数最大/最小异或和)
2021-07-01
洛谷 P4551 最长异或路径【01字典树/贪心】
2021-07-01
LeetCode 921. 使括号有效的最少添加(栈)
2021-07-01
LeetCode 1018. 可被 5 整除的二进制前缀
2021-07-01
LeetCode 961. 重复 N 次的元素
2021-07-01
LeetCode 925. 长按键入(双指针)
2021-07-01
LeetCode 1309. 解码字母到整数映射
2021-07-01