三子棋

  • 小结

三子棋是五子棋的简化版,一局游戏的具体流程是:
1.创建棋盘并初始化。
2.打印棋盘。
3.玩家落子(玩家通过输入行列坐标的方式来落子)。
4.判定胜负关系
5.电脑落子(随机位置落子)
6.判定胜负关系。
回到2继续执行。


C语言代码如下(示例):

#include<stdio.h>
#include<string.h>
#include<time.h>#pragma warning (disable:4996)#define Max_Row 3
#define Max_Col 3//初始化棋盘
void init(char chessBoard[Max_Row][Max_Col])
{for (int row = 0; row < Max_Row; row++){for (int col = 0; col < Max_Col; col++){chessBoard[row][col] = ' ';}}
}
//显示棋盘
void printChessBoard(char chessBoard[Max_Row][Max_Col])
{printf("+---+---+---+\n");for (int row = 0; row < Max_Row; row++){printf("| %c | %c | %c |\n",chessBoard[row][0],chessBoard[row][1], chessBoard[row][2]);printf("+---+---+---+\n");}
}
//玩家落子
void playerMove(char chessBoard[Max_Row][Max_Col])
{while (1){printf("请玩家输入坐标(row,col):");int row = 0;int col = 0;scanf("%d %d", &row, &col);//校验玩家输入的坐标是否合法if (row < 0 || row >= Max_Row|| col < 0 || col >= Max_Col){printf("您的坐标位置不在合法范围[0,2]内!\n");continue;}if (chessBoard[row][col] != ' '){printf("您的坐标位置已经有子!\n");continue;}chessBoard[row][col] = 'x';break;}
}
//电脑落子
void computerMove(char chessBoard[Max_Row][Max_Col])
{while (1){int row = rand() % Max_Row;int col = rand() % Max_Col;//确保随机数不能已经有子的位置if (chessBoard[row][col] != ' '){continue;}chessBoard[row][col] = 'o';break;}
}
//判断棋盘是否已满
int isFull(char chessBoard[Max_Row][Max_Col])
{//找空格,如果找不到就是满了for (int row = 0; row < Max_Row; row++){for (int col = 0; col < Max_Col; col++){if (chessBoard[row][col] == ' '){return 0;}}}return 1;
}
//判断输赢的条件返回x玩家获胜,返回o电脑获胜,q表示和棋,' '胜负未分
char isWin(char chessBoard[Max_Row][Max_Col])
{//判断所有行for (int row = 0; row < Max_Row; row++){if (chessBoard[row][0] != ' '&& chessBoard[row][0] == chessBoard[row][1]&& chessBoard[row][0] == chessBoard[row][2]){return chessBoard[row][0];}}//判断所有列for (int col = 0; col < Max_Col; col++){if (chessBoard[0][col] != ' '&& chessBoard[0][col] == chessBoard[1][col]&& chessBoard[0][col] == chessBoard[2][col]){return chessBoard[0][col];}}//判断两个对角线if (chessBoard[0][0] != ' '&& chessBoard[0][0] == chessBoard[1][1]&& chessBoard[0][0] == chessBoard[2][2]){return chessBoard[0][0];}if (chessBoard[2][0] != ' '&&chessBoard[2][0] == chessBoard[1][1]&& chessBoard[2][0] == chessBoard[0][2]){return chessBoard[2][0];}//判断是否为和棋,看棋盘中是否有剩余空间if (isFull(chessBoard)){return 'q';}return ' ';//单引号中间是一个空格
}void game()
{//创建棋盘并初始化char chessBoard[Max_Row][Max_Col] = { 0 };init(chessBoard);char winner=' ';while (1){printChessBoard(chessBoard);//显示棋盘playerMove(chessBoard);//玩家落子winner=isWin(chessBoard);//判断输赢if (winner != ' '){break;}computerMove(chessBoard);//电脑落子winner = isWin(chessBoard);//判断输赢if (winner != ' '){break;}}printChessBoard(chessBoard);//显示最终输赢的盘面if (winner =='x'){printf("恭喜您赢了!\n");}else if (winner =='o'){printf("很遗憾,您输了!\n");}else{printf("打成平局!\n");}
}int menu()
{printf("========================\n");printf("1.开始游戏\n");printf("0.结束游戏\n");printf("========================\n");printf("请输入您的选择:");int choice = 0;scanf("%d",&choice);return choice;
}int main()
{srand((unsigned int)time(0));while (1){int choice = menu();if (choice == 1){game();}else if (choice == 0){printf("goodbye!\n");break;}}system("pause");return 0;
}

具体效果如图所示:


小结

以上就是今天简单的一个小游戏编程,对我们学过的数组知识,可以更好的理解与应用,通过最近一段时间的学习,基本上对C语言的基本知识有了更深刻的理解,希望我们在学习的道路上能继续坚持,继续向更高的楼梯爬去。


写作不易,大侠请留步,来个赞再走吆!!!


三子棋小游戏(可扩展为五子棋)相关推荐

  1. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)

    作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...

  2. 三子棋小游戏(超详细)

    目录 一.实现三子棋游戏的基本逻辑 二.具体的函数实现 1. 菜单函数 2. 棋盘的实现 2.1 棋盘的初始化 2.2 棋盘的打印 3. 玩家下棋 4. 电脑下棋 5.判断棋盘状态 三. 三个文件 3 ...

  3. 使用C语言编写三子棋小游戏

    使用C语言编写三子棋小游戏: 首先进行分析: 1.需要将游戏实现分为三个部分:头文件,函数功能实现,游戏组合测试. 2.游戏可以循环进行,不必多次打开,可采用 do...while循环结构. 3.游戏 ...

  4. C语言实现三子棋小游戏(编程思路以及代码详解)

    目录 前言 一.三子棋游戏的实现逻辑 二.创建菜单并控制游戏开始或游戏结束 三.创建棋盘并且初始化棋盘 四.打印棋盘并验证打印棋盘和初始化棋盘模块的实现 五.玩家下棋 六.电脑下棋 六.输赢判断 七. ...

  5. 如何制作三子棋小游戏

    首先,一个游戏的制作,必须由大化小,分步完成. 当我们想要制作三子棋小游戏时,必须先搞清楚这个小游戏的逻辑和原理. 三子棋是黑白棋的一种.三子棋是一种民间传统游戏,又叫九宫棋.圈圈叉叉.一条龙.井字棋 ...

  6. C语言小项目--三子棋小游戏

    学了这么长时间的C语言,你是否觉得没有一个没写过稍微长点的代码显得很没有成就感!不怕,今天带你做一个小游戏,领略一下写C和小游戏的快乐.写完记得给自己一个鼓励哦! 一.三子棋小游戏 想必大家都玩过三子 ...

  7. vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)

    前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大.今天对那个程序做了两点改进: 1.现在可以实现在任意大小的棋盘上下棋了. 2.因为棋盘可能变大,为了玩家方便确定坐标, ...

  8. 呆头呆脑的电脑----三子棋小游戏(C语言版)

    目录 1.需求分析 2.程序架构 3.代码实现(分函数呈现) (1)主函数代码实现 分析: 异常处理: (2)菜单函数的实现 分析: (3)游戏函数的实现 分析: (4)棋盘的初始化 分析: (5)棋 ...

  9. 趣讲用c语言实现三子棋小游戏

    目录 直接先看看最后运行效果吧 三子棋如何设计的,及其步骤 1,源文件已经头文件的创建 2.创建主函数 3.test函数的创建 4.game函数的创建和运行 5.五个函数的实现 a.init_boar ...

  10. 三子棋小游戏带你走进编程世界(c语言版)

    目录 一.游戏实现的整体思路 二.实现游戏大体框架 二.游戏函数的实现 1.初始化键盘 2.打印棋盘 3.下棋及胜负判断 (1)玩家下棋 (2)电脑下棋 (3)判断输赢 三.结语及源码 三子棋想必大家 ...

最新文章

  1. 从当前日期算起,获取几天前的日期和几个月前的日期
  2. KeyDown,KeyPress和KeyUp详解(转)
  3. java中日期格式转换
  4. scala:对象object
  5. k-means算法学习1
  6. 打开浏览器不是主页_浏览器首页被篡改!教你几个快速解决的方法
  7. 解决git pull 命令失效,不能从远程服务器上拉取代码问题
  8. OpenResty之ngx.ssl
  9. Eclipse中如何更改字体大小?
  10. DOS 入侵、群发邮件、心脏起搏器……病毒攻击简史!
  11. 凸优化学习笔记(三):凸优化问题
  12. Vue导出excel文件
  13. 华为U8500使用心得
  14. 云脉文档管理小程序轻松解决文档管理难题
  15. Gitee+Typora+PicGo+脚本
  16. RIM Hong Kong地址和地图
  17. EFR32 xG1x的bootloader被擦除
  18. 问题排除:电机摩擦力怎么计算?
  19. 【计算机网络系列】网络概述与体系结构
  20. Android 11及以上授予文件管理权限

热门文章

  1. Python学习初级编程实例(一)
  2. [译]我是如何开始制作CSS图片的
  3. 列表变成向量 列表变向量 list vector
  4. python手机小游戏刷分器_如何用5行Python代码写出刷分游戏脚本!Python真牛!
  5. php 用回车符间隔成数组,PHP 将逗号、空格、回车分隔的字符串转换为数组的函数...
  6. Linux中录制并回放终端会话
  7. html中汉字代码变成数字代码,Angular.js 实现数字转换汉字实例代码
  8. 六元均匀直线阵的各元间距为_天线原理考试卷B.doc
  9. Activiti工作流+idea2021入门筑基上篇-修身
  10. 传说中的猫扑 0 楼续