三子棋游戏是一个很好地数组应用实例,在这篇博客中我将分享我在初学C语言时编写三子棋游戏的思路和过程。

1.模块设置

设置一个测试模块test.c和一个函数模块game.c,测试模块放置主函数,函数模块放置初始化函数、打印棋盘的函数、放置棋子的函数等。

2.编写一个菜单

三子棋游戏初始菜单,制作一个简易菜单,输入1进入游戏,输入0退出游戏,输入其他值要求重新输入,使用switch语句。

void menu()
{printf("******************************\n");printf("****1.play**********0.exit****\n");printf("******************************\n");
}void game()
{printf("11111\n");
}int main()
{int input = 0;do{menu();printf("请选择>:\n");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

3.初始化棋盘

三子棋格子为3×3,为了方便后续扩展游戏,在头文件game.h中定义行ROW=3,列COL=3。初始化是将3×3数组的9个位置都填充上" ",将初始化函数封装为intiboard()。

void Intiboard(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++){board[i][j] = ' ';}}return 0;
}

4.绘制棋盘

3×3的棋盘由---|---|---组成,打印顺序为board[i][j],|;---,|。将棋盘绘制函数封装成Displayboard()。

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 < row - 1){int j = 0;for (j = 0; j < col; j++){printf("---");if (j < col - 1){printf("|");}}printf("\n");}}
}

5.玩家下棋

玩家下棋,输入棋子坐标(x,y),先判断x,y是否合法,判断在数组board中board[x][y]位置上是否是空格,如是空格放置字符'*',若不是则重新输入坐标。为了符合要求和方便玩家使用,(x >= 1 && x <= row && y >= 1 && y <= col。

void playmove(char board[ROW][COL], int row, int col)
{int x = 0;int y = 0;printf("玩家下棋:\n");while (1){printf("输入坐标:\n");scanf("%d%d", &x, &y);if (x >= 1 && x <= row&&y >= 1 && y <= col){if (board[x - 1][y - 1] == ' '){board[x - 1][y - 1] = '*';break;}else{printf("坐标被占用,请重新输入\n");}}else{printf("非法输入,请重新输入\n");}}}

6.电脑下棋

电脑下棋,输入棋子坐标(x,y),利用rand()函数生成随机数,要求(x>0&&x<row&&y>0&&y<col),令x=rand()%row,y=rand()%col,则不需要判断是否合法。在判断判断在数组board中board[x][y]位置上是否是空格,如是空格放置字符'+',若不是则重新输入坐标。

void computermove(char board[ROW][COL], int row, int col)
{printf("电脑下棋\n");while (1){int x = rand() % row;int y = rand() % col;if (board[x][y] == ' '){board[x][y] = '+';break;}else{printf("请从新输入\n");}}
}

7.判断游戏胜负

判断胜负规则是三个一样的符号先连成一条线的一方胜利,棋盘上没有落子的位置就是平局,

char iswin(char board[ROW][COL], int row, int col)
{int i = 0;for (i = 0; i < row; i++)//三行{if (board[i][0] == board[i][1] && board[i][2] == board[i][1]&&board[i][0]!=' '){return 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[0][0] != ' '){return board[0][0];}if (board[0][2] = board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' '){return board[1][1];}int ret = full(board, row, col);if (ret == 1){return 'D';}else{return 'C';}
}

总结

三子棋是一个很基础的小游戏,很适合初学者体会数组,函数,分支语句,条件语句,循环语句等内容的应用。

c语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANS1C,作为C语言最初的标准。[1]目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
c语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、TurboC等。

C语言,制作三子棋游戏相关推荐

  1. c语言程序下三子棋,C语言实现三子棋游戏(初级版)

    本文实例为大家分享了C语言实现三子棋游戏的具体代码,供大家参考,具体内容如下 game.h #include #include #include #define ROW 3 #define COL 3 ...

  2. C语言实现三子棋游戏 代码+思路+电脑下棋算法

    C语言实现三子棋游戏 代码+思路+电脑下棋算法 重点: 当检测到电脑已经两子连续时,将会尝试获得胜利. 在检测到玩家即将胜利(连城两子)时,进行拦截 尝试胜利的优先级高于拦截,意味着如果玩家不能再下一 ...

  3. 【C语言】三子棋游戏的实现(玩家VS玩家 or 玩家VS电脑)

    目    录 一.三子棋游戏介绍 二.游戏功能函数分析 1 菜单显示函数 2 菜单选择函数 3 选择确认函数 4 显示当前棋盘状态函数 5 棋盘初始化函数 6 玩家下棋函数 7 电脑下棋函数 8 棋局 ...

  4. C语言实现三子棋游戏(棋盘可自行扩展)

    目录 三子棋简单介绍 实现方式 游戏外部测试(test.c文件) 游戏内容具体实现(game.c和game.h) 三子棋简单介绍 大家都玩过五子棋吧,三子棋和这个类似,就是三子连成一线就获得胜利. 大 ...

  5. 用C语言实现三子棋游戏(附上思路+项目展示+源代码)

    文章目录 前言 一.三子棋游戏整体实现思路 二.实现步骤 分模板实现 (以及具体应用实列) 1.test.c 源文件讲解: 2. game.c 源文件讲解: 3.game.h 源文件讲解 三 game ...

  6. 使用c语言实现三子棋游戏

    下面简介如何使用c语言的基础语法实现三子游戏的底层逻辑: 首先是菜单模块 使用switch语句进入游戏模块 前置交互完成,开始进入游戏函数. 第一部分棋盘创建,使用二维数组实现. a.初始化棋盘 为什 ...

  7. C语言实现三子棋游戏(规范化)

    `在复习了数组之后,对有些经典的数组题进行了,其中一道就是三子棋游戏这一功能的实现.下面附上我的个人理解和代码,希望各位大佬不吝指教. 首先有一个万能游戏模板,在c语言中有好多实现游戏的代码,我总结了 ...

  8. C语言程序设计——三子棋游戏

    三子棋游戏又叫井字棋游戏,是很多人小时候都玩过的一种小游戏,游戏的玩法是两名玩家在三行三列的九个格子子里依次下棋,若一方的棋子有三个在横.竖,斜线三种中的任何一种连成一条线就获得游戏胜利.接下来就让我 ...

  9. C语言实现三子棋游戏—可扩展到任意N子棋

    C语言实现三子棋 游戏介绍 游戏编程思路 游戏代码详解 主函数 游戏菜单函数 游戏逻辑函数 初始化棋盘 打印棋盘 玩家下棋 电脑下棋 判断输赢 完整代码 test.c game_chess.c gam ...

最新文章

  1. 【数据库】SQL极速入门(多种方式查询用户复借次数)
  2. 【干货】2014Q4手游崩溃数据报告,iphone6第1、三星第2
  3. scala to java_Scala 2.13 以后Java集合与Scala集合互相转换
  4. IDEA快速 实现 SpringMVC 整合xfire 发布 WebService 服务
  5. MATLAB半色调,基于改进协方差矩阵的半色调图像分类研究
  6. java newtonsoft.json_Newtonsoft.Json 的序列化与反序列化
  7. java 并发queue_深入浅出 Java Concurrency (19): 并发容器 part 4 并发队列与Queue简介
  8. Matlab实现Faster-RCNN目标检测
  9. 手眼标定原理(眼在手上和眼在手外)
  10. r矢量球坐标系旋度_唯心识学075·如何理解三维直角坐标系中的旋度表达式
  11. win10切换输入法快捷键_改掉Win10难用的输入法
  12. 无人洗车小程序源码开发
  13. [笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
  14. java服务器Nav寻路
  15. 【PP模块】工艺路线详解(Routing)
  16. mysql use temporary_一次mysql 优化 (Using temporary ; Using filesort)
  17. 软件测试工程师笔试题以及答案汇总
  18. 杨柳絮-Info:春天将不再漫天飞“雪”,济源治理杨柳絮在行动
  19. gcc编译-hal库-stm32f4xx串口IAP升级
  20. 重新思考无边界世界中的网络安全

热门文章

  1. java 二叉树的实现以及前序、中序、后续遍历实现
  2. 参数模型matlab,matlab 模型参数确定
  3. 综合勤务管控系统服务器,公安勤务管理系统
  4. minepy、treePlotter导包的问题
  5. 2021-10-11 C语言字符数组输出出现乱码
  6. 【算法大杂烩】常见算法的归类和总结——消息摘要算法
  7. Excel快速将中文歌词翻译成原版日语
  8. ssh工具paramiko pyqt工具
  9. stardict和goldendict配置使用
  10. 【bearpi物联网应用笔记】hi3861通过mqtt连接onenet