• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C语言实现简单的三子棋小游戏

c语言 搞代码 4年前 (2022-01-06) 14次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了C语言实现简单的三子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

学习完数组就能用C语言写出的简单小游戏:

编译器使用的为VS2013

代码分为三个部分

1、头文件 game.h
2、源文件 game.c 用来存放游戏中所有的函数
3、源文件 test.c 用来存放游戏的主题部分

代码如下:

game.h部分

 #include #include #include #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); //判断输赢 此时函数有返回值了 不能再用void了,返回值为字符要用char char CheckWin(char board[ROW][COL], int row, int col);

game.c部分

 #include"game.h" void InitBoard(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++) { 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 \n"); scanf("%d%d", &x, &y); if (x > 0 && x  0 && y <= col)//判断坐标的合法性,横纵坐标是否在1到3之间 { if (board[x - 1][y - 1] != ' ') { printf("坐标被占用,请重新输入\n"); } else { board[x-1][y-1] = '*'; break;//玩家落子后循环跳出 } } else { printf("坐标非法,请重新输入\n"); } } } void ComputerMove(char board[ROW][COL], int row, int col) { printf("电脑走\n"); while (1) { int x = rand() % row;//rand()为获得随机值得函数,获取的随机值模row即3就可以得到在0到2之间的一个随机值 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 CheckWin(char board[ROW][COL], int row, int col)//判断赢得情况,返回值为字符 //玩家赢返回值为 * //电脑赢时返回值为 # //平局时返回值为 Q //仍可以下棋且为分胜负时返回值为 C { int i = 0; for (i = 0; i <row; i++)//一行相同时 { if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[0][i] != ' ') { return board[i][0];//返回值为board[i][0]不用考虑是返回 * 还是 #两者都可以返回 } } for (i = 0; i <col; i++)//一列相同时 { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ') { return board[0][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]; } //棋盘全部下满仍未分胜负的情况 if (IsFull(board, row, col) == 1)//IsFull为判断棋盘是否全满时,当全满时返回值为1,未满时为0 { return 'Q'; } return 'C';//返回值为C游戏继续 }

test.c部分

 #include"game.h" void menu() { printf("**********************\n"); printf("****** 1.PIAY ******\n"); printf("****** 2.EXIT ******\n"); printf("**********************\n"); } void game() { char ret; char board[ROW][COL];//数据是一个二维数组 InitBoard(board, ROW, COL);//初始化棋盘,将棋盘全初始化为空格 DisplayBoard(board, ROW, COL); while (1) { PlayerMove(board, ROW, COL);//棋手下棋 ret = CheckWin(board, ROW, COL); if (ret != 'C') { break; } DisplayBoard(board, ROW, COL);//打印棋盘 ComputerMove(board, ROW, COL);//电脑移动 ret = CheckWin(board, ROW, COL); if (ret != 'C') { break; } DisplayBoard(board, ROW, COL); } if (ret == '*') { printf("玩家获胜\n"); } else if (ret == '#') { printf("电脑获胜\n"); } else if (ret == 'Q') { printf("未分胜负,平局\n"); } DisplayBoard(board, ROW, COL); } int main() { srand((unsigned int)time(NULL));//srand 函数和rand 函数配合使用可生成一个随机值 int input = 0; do { menu();//打印菜单 printf("请输入: 1->开始游戏 0->退出游戏\n"); scanf("%d", &input); switch (input) { case 1: game();//三子棋游戏 break; case 0: printf("退出游戏<div style="color:transparent">来源gaodai.ma#com搞##代!^码网</div>\n"); break; default: printf("输入错误,请重新输入.\n"); break; } } while (input); return 0; }

注: srand函数是随机数发生器的初始化函数,srand和rand()函数配合使用产生伪随机数序列,但如果只是这两个函数结合则程序每一次运行产生的随机数将会相同,也就达不到随机的目的了,因此在srand函数中要添加一个随时在变动的值,而在计算机中时间是在不断变化的,因此可以用time()函数读取系统时间(此处涉及到一个概念叫:时间戳),time函数中直接用空指针NULL即可,这样就可以达到生成随机数的目的了。

以上就是C语言实现简单的三子棋小游戏的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C语言实现简单的三子棋小游戏

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址