实现一个三字棋游戏,通过数组提供位置,由人和电脑轮流进行下棋,由于个人水平,仅能实现电脑随机下棋,并进行判断输赢,可进行循环游戏.

首先创建文本

yuanma.c//游戏实现
game.c//代码编译
标.h//函数名声明

先进行展示,判断玩家是否有意进行下棋

#include<stdio.h>
void menu()
{printf("***********************\n");printf("******  1  play *******\n");printf("******  0  out  *******\n");printf("***********************\n");
}
int main()
{int input = 0;do{menu();printf("请进行输入\n");scanf("%d", &input);switch (input){case 0:printf("退出游戏\n");break;case 1:printf("开始游戏\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

实现效果

判断玩家是否进行游戏完成,开始游戏内容设置

棋盘大小利用define来进行控制,方便后续修改

#define LOR 3
#define ROW 3

清空棋盘

void initbroad(char broad[LOR][ROW], int lor, int row)
{int i = 0;int j = 0;for (i = 0; i < lor ; i++){for (j = 0; j < row ; j++){broad[i][j] = ' ';}}
}

展示棋盘

void Displaybroad(char broad[LOR][ROW], int lor, int row)
{int i = 0;int j = 0;for (i = 0; i < lor; i++){for (j = 0; j < row; j++){printf(" %c ", broad[i][j]);if (j < row - 1)printf("|");}printf("\n");if (i < lor - 1){for (j = 0; j < row; j++){printf("---");if (j < row - 1){printf("|");}}}printf("\n");}
}

玩家下棋

void playerMover(char broad[LOR][ROW], int lor, int row)
{int x = 0;int y = 0;while (1){printf("请输入坐标\n");scanf("%d%d", &x, &y);if (x > 0 && x <= LOR && y > 0 && y <= ROW){if (broad[x - 1][y - 1] == ' '){broad[x - 1][y - 1] = '*';break;}else{printf("坐标被占用,请重新输入\n");}}else{printf("坐标非法,超出范围\n");}}
}

电脑下棋

void playerCompture(char broad[LOR][ROW], int lor, int row)
{int x = 0;int y = 0;printf("电脑下棋:\n");while (1){x = rand() % lor;y = rand() % row;if (broad[x][y] == ' '){broad[x][y]='#';break;}}}

判断输赢

char Comper2(char broad[LOR][ROW], int lor, int row)
{int i = 0;int j = 0;for (i = 0; i < lor; i++){for (j = 0; j < row; j++){if (broad[i][j] == ' ')return 0;}}return 1;
}
char Comper1(char broad[LOR][ROW], int lor, int row)
{int i = 0;for (i = 0; i < lor; i++){if (broad[i][0] == broad[i][1] && broad[i][1] == broad[i][2] && broad[i][0] == broad[i][2] && broad[i][0] != ' '){return broad[i][0];}}for (i = 0; i < row; i++){if (broad[0][i] == broad[1][i] && broad[1][i] == broad[2][i] && broad[2][i] == broad[0][i] && broad[0][i] != ' ')return broad[0][i];}if (broad[0][0] == broad[1][1] && broad[1][1] == broad[2][2] && broad[1][1] != ' ')return broad[1][1];if (broad[0][2] == broad[1][1] && broad[1][1] == broad[2][0] && broad[1][1] != ' ')return broad[1][1];if (Comper2(broad, ROW, LOR)){return 'Q';}return 'C';
}

完整游戏进行

void game()
{char broad[ROW][LOR];initbroad(broad, ROW, LOR);Displaybroad(broad, ROW, LOR);char ret = 0;while (1){playerMover(broad, ROW, LOR);Displaybroad(broad, ROW, LOR);ret = Comper1(broad, ROW, LOR);if (ret != 'C'){break;}playerCompture(broad, ROW, LOR);Displaybroad(broad, ROW, LOR);Comper1(broad, ROW, LOR);char ret = Comper1(broad, ROW, LOR);if (ret != 'C'){break;}}if (ret == '*'){printf("玩家赢\n");}else if (ret == '#'){printf("电脑赢\n");}else{printf("平局\n");}}

标.h  文件包含函数声明

请多多指教

利用数组来实现简单三子棋游戏相关推荐

  1. 利用C语言代码实现三子棋游戏

    目录 1. 创建test.c文件用以测试三子棋游戏的逻辑 1.1 主函数 1.2 test函数 1.3 menu函数 1.4 game函数 2. 创建game.h头文件进行函数的声明,符号的定义 3. ...

  2. c语言编程实现简单三子棋游戏

    分别创建test.c   game.c 两个源文件,以及game.h头文件   这里的三子棋游戏是指棋盘为3*3,玩家与电脑之间的对决,先将各自的棋下为一排(横/竖/斜)者获胜,电脑所    下位置是 ...

  3. 【C语言】简单三子棋游戏/井字棋游戏

    基本实现思路: 写出棋盘界面 通过二维数组来编辑棋子 玩家下棋/电脑下棋(随机) 输赢/平局的判断 在程序中,新建出两个源文件:"test.c" 和 "game.c&qu ...

  4. 【C语言/C++】三子棋游戏(数组知识扩充)

    文章目录 1.引言 2.代码规划 3.构思代码 4.代码模块实现 1.游戏界面功能 2.初始化棋盘 3.打印棋盘 4.玩家下棋逻辑 5.简易电脑下棋逻辑 6.判断胜负 7.判断游戏是否平局 1.引言 ...

  5. c语言:三子棋游戏(二维数组的运用)

    三子棋游戏(又称9宫格游戏): 游戏规则: 玩家和电脑随机下子,当一方的三子连成一条线,可以为 横连  纵连  斜连.或者棋盘下满则此时判断为平局,游戏结束 实现程序的思路: 首先我们需要定义游戏菜单 ...

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

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

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

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

  8. 如何用C语言来实现【三子棋游戏】

    目录 一.前言 二.思维导图 三.思路分析 四.运行结果 五.算法细节 1.游戏相关的测试 2.游戏函数的声明 3.游戏函数的实现 (1)初始化棋盘的函数 (2)打印棋盘的函数 (3)玩家下棋的函数 ...

  9. C语言-三子棋游戏的实现

    C语言-三子棋游戏的实现 目录 C语言-三子棋游戏的实现 游戏背景介绍 游戏实现思路 test模块 menu模块 **game模块** init_board(初始化棋盘) print_board(打印 ...

最新文章

  1. 把报表的数据导出Excel
  2. 技术面试官告诉你面试应该怎么准备?
  3. 2个多边形,其中一个包围另一个,如何将中间的环带区域涂成红色
  4. 解决popup不随着window一起移动的问题
  5. 废弃fastjson!大型项目迁移Gson保姆级实战
  6. 43岁被裁员,200万年薪泡汤:这4件事你要尽早明白
  7. tnsnames.ora配置未生效_nginx高可用配置未生效问题跟踪
  8. 关于变量的命名和属性(C#)
  9. 万能电子狗升级工具_HUD抬头显示,车萝卜再推新品,屏幕全新升级
  10. 机翻测评 | 友商翻译 VS 火山翻译-中译英语向
  11. 同时大量连接导致的DDOS攻击,导致收发器宕机,用户大面积超时掉线
  12. celery英语_图文海涛英语 分类记单词第112天:中止cease天花板ceiling
  13. 【使用pycharm管理github仓库】github代码版本控制
  14. Ubuntu下Rhythmbox乱码的解决办法
  15. Java - Eclipse: quot;Error notifying a preference change listenerquot;
  16. passwd_pro
  17. hdu2822(会双搜后再写次)
  18. 刷水~~~~~~~~~~~
  19. Linux手机众筹1000万
  20. 跳舞吧机器人爷叶运鹏_【学海有舟,从“融”出发】我,一个残障学生,觉得自己来学校会拖累同学,咋办?...

热门文章

  1. linux 启动logstash_linux – 从bash脚本启动时Logstash shutdown停止
  2. Python 炫技操作:Python 绘制属于你的世界地图
  3. 考研高数之无穷级数题型三:将函数展开成幂级数和傅里叶级数(题目讲解)
  4. godaddy网站备案_如何将GoDaddy网站构建器网站移至WordPress
  5. 乌合之众-大众心理研究(十四)
  6. 【STC8学习笔记】STC8A8K64S4A12 ADC模数转换,使用串口打印出来
  7. CPT302多代理人系统 个人笔记
  8. 多点拟合求平面的RANSAC算法
  9. 炬力方案系统修改杂记
  10. asp网站Repuest获取Http网络读卡器刷卡数据Response回应驱动读卡器显示响声