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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输入12,输出12*12的乘法口诀表。
下一篇:C语言模拟用户输入密码

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月20日 09时59分47秒