每天进步一点点,坚持带来大改变!!!

目录

前言:

实现思路:

1.代码搭建:

2.框架搭建:

3.游戏功能实现:

1.创建棋盘并用空格初始化:

2.打印棋盘:

3.玩家下棋:

4.电脑下棋:

5.判断输赢:

7.整体代码:

8.玩游戏链接:


前言:

之前我们已经学习了函数,循环和数组,接下来我们使用这些C语言知识来搭建一个五子棋游戏。

实现思路:

1.代码搭建:

test.c文件实现整个游戏框架和思路,game.c文件实现整个游戏的具体游戏功能,game.h文件实现整个游戏需要的声明。

2.框架搭建:

让玩家来选择开始游戏,或者退出游戏,为了让玩家玩完一把继续下一把,采用do……while循环

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

3.游戏功能实现:

在game()函数内实现

1.创建棋盘并用空格初始化:

#define Row 5
#define Col 5

//创建棋盘
char board[Row][Col] = { 0 };

//初始化棋盘:用空换

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] = ' ';}}
}

2.打印棋盘:

思路:1.先打印"  %c  "然后打印"|"

2.先打印"---",然后打印"|"

3.玩家下棋:

思路:首先从键盘录入两个坐标,判断坐标的合法性,如果是空格则赋值"*"(玩家下的棋子);

4.电脑下棋:

思路:调用rand—>srand—>time—>函数产生随机值:在空格的地方赋值"#";

注:randsrand 头文件#include<stdlib.h>;

time函数头文件#include<time.h>

使用rand函数需要在主函数调用一下sranf函数;

5.判断输赢:

思路:如果返回"*"则代表玩家赢,返回"#"则代表电脑赢,返回"Q"则代表平局,返回"C"则代表继续

//满了,返回1
//不满,返回0
char Is_Full(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 Is_Win(char board[Row][Col], int row, int col)
{//横五行int i = 0;int j = 0;for (i = 0; i < row; i++){if (board[i][0] == board[i][1] && board[i][1] == board[i][2] &&board[i][2] == board[i][3] && board[i][3] == board[i][4] &&board[i][4] != ' '){return board[i][2];}}//列五行for (j = 0; j < col; j++){if (board[0][j] == board[1][j] && board[1][j] == board[2][j] &&board[2][j] == board[3][j] && board[3][j] == board[4][j] &&board[4][j] != ' ')return board[1][j];}//对角线if (board[0][0] == board[1][1] && board[2][2] == board[2][2] &&board[2][2] == board[3][3] && board[3][3] == board[4][4] &&board[4][4] != ' '){return board[1][1];}if (board[0][4] == board[1][3] && board[1][3] == board[2][2] &&board[2][2] == board[3][1] && board[3][1] == board[4][0] &&board[4][0] != ' ')return board[0][4];//没有人赢,平局if (Is_Full(board, Row, Col)){return 'Q';}//游戏继续return 'C';
}

7.整体代码:

test.c

#define _CRT_SECURE_NO_WARNINGS
#include"game.h"void menu()
{printf("*********************\n");printf("**1.play   0.exit  **\n");printf("*********************\n");
}
void game()
{char ret = 0;//创建棋盘char board[Row][Col] = { 0 };//初始化棋盘Initboard(board, Row, Col);//打印棋盘Displayboard(board, Row, Col);while (1){//玩家下棋PlayerMove(board, Row, Col);ret = Is_Win(board, Row, Col);if (ret != 'C'){break;}//电脑下棋ComputerMove(board, Row, Col);Is_Win(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));int input = 0;do{menu();printf("请选择:");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");break;}} while (input);return 0;
}

game.h

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define Row 5
#define Col 5void 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);char Is_Win(char board[Row][Col], int row, int col);

game.c

#define _CRT_SECURE_NO_WARNINGS
#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;int j = 0;for (i = 0; i < row; i++){for (j = 0; j < col; j++){printf(" %c ", board[i][j]);if (j < col - 1){printf("|");}}printf("\n");if (i < row - 1){for (j = 0; j < col; j++){printf("---");if (j < col - 1){printf("|");}}printf("\n");}}
}
void PlayerMove(char board[Row][Col], int row, int col)
{int x = 0;int y = 0;printf("玩家下棋,请输入坐标:");while (1){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");break;}}else{printf("坐标非法,请重新输入:\n");break;}}
}
void ComputerMove(char board[Row][Col], int row, int col)
{int x = 0;int y = 0;while (1){x = rand() % 5;//随机产生:0 1 2 3 4;y = rand() % 5;if (board[x][y] == ' '){board[x][y] = '#';break;}}
}
//满了,返回1
//不满,返回0
char Is_Full(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 Is_Win(char board[Row][Col], int row, int col)
{//横五行int i = 0;int j = 0;for (i = 0; i < row; i++){if (board[i][0] == board[i][1] && board[i][1] == board[i][2] &&board[i][2] == board[i][3] && board[i][3] == board[i][4] &&board[i][4] != ' '){return board[i][2];}}//列五行for (j = 0; j < col; j++){if (board[0][j] == board[1][j] && board[1][j] == board[2][j] &&board[2][j] == board[3][j] && board[3][j] == board[4][j] &&board[4][j] != ' ')return board[1][j];}//对角线if (board[0][0] == board[1][1] && board[2][2] == board[2][2] &&board[2][2] == board[3][3] && board[3][3] == board[4][4] &&board[4][4] != ' '){return board[1][1];}if (board[0][4] == board[1][3] && board[1][3] == board[2][2] &&board[2][2] == board[3][1] && board[3][1] == board[4][0] &&board[4][0] != ' ')return board[0][4];//没有人赢,平局if (Is_Full(board, Row, Col)){return 'Q';}//游戏继续return 'C';
}

8.玩游戏链接:

1651207073891-CSDN直播

每一段努力的过程都是值得被尊重的,没有天生完美的人生,只有努力过越来越好的生活。

如何用C语言来实现——五子棋游戏相关推荐

  1. 用c语言做一个五子棋程序,C语言制作简单五子棋游戏

    原标题:C语言制作简单五子棋游戏 C语言制作简单的五子棋游戏 学习C语言的人很多,但是用C语言很少,而用来为自己所用,来做游戏的人就更少了,很多人都是跟着学校学习,学校讲到哪就坐到哪,但是以后却还是不 ...

  2. 一个使用纯Win32 SDK和C语言实现的五子棋游戏

    引言:GobangGame 这是一个使用纯Win32 SDK和C语言实现的五子棋游戏 在这个游戏中实现的功能 [x] 绘制一个15 * 15的棋盘 [x] 绘制5个着重点位置 [x] 根据鼠标左键的点 ...

  3. c语言带坐标五子棋代码复制,C语言编写的五子棋游戏源代码

    已结贴√ 问题点数:20 回复次数:28 C语言编写的五子棋游戏源代码 # include # include # include # include//插入输入输出头文件 # include//字符 ...

  4. 简单五子棋游戏c语言简单,C语言制作简单五子棋游戏

    #pragma comment(lib,'winmm.lib') //玩游戏 void PlayGame() { //鼠标操作 int chess[N][N] = { 0 };//标志没有棋子的标志 ...

  5. 如何用C语言开发图形化游戏

    原文:https://www.toutiao.com/i6951600048111190532/ 当你C语言学到一段时间后,也许对命令行程序感到厌倦了,也许你想要做一款游戏,但是光目前的知识,无法用命 ...

  6. 如何用C语言实现【猜拳游戏】

    前言 在学习了循环.分支.和函数之后,可以写一些简单的小游戏来给自己的编程之路增添一份乐趣.不仅提升了编码能力,还可以边学边玩,简直妙哉妙哉! 目录 ⛄一.游戏逻辑 ❄️ 二.思维导图 ☁️ 三.游戏 ...

  7. 【全网最强C语言学习】五子棋游戏

    目录 一.前言 二.头文件 三.menu菜单函数 四.初始化棋盘Initboard函数 五.显示棋盘Displayboard函数 六.落子函数 七.判断输赢ifwin 八.人机.人人模式的选择 九.作 ...

  8. 如何用C语言实现圈叉游戏(-)

    今天情人节,还是在学习C语言 自己写了一遍发现自己写的没有书上的代码更简练 就把书上的代码稍微修改了一下 下面看游戏界面 和昨天的米字棋差不多,有时间会结合米字旗的代码做些修改 上代码: /*井字游戏 ...

  9. c语言画叉,如何用C语言实现圈叉游戏(-)

    今天情人节,还是在学习C语言 自己写了一遍发现自己写的没有书上的代码更简练 就把书上的代码稍微修改了一下 下面看游戏界面 和昨天的米字棋差不多,有时间会结合米字旗的代码做些修改 上代码: /* 井字游 ...

最新文章

  1. 网络管理员比赛回顾04-DHCP
  2. 数据中心可以从云计算学习可持续性运营
  3. k8s kustomize 简明教程:安装 kustomization.yml常用字段解读
  4. 后缀树的构造方法-Ukkonen详解 [转]
  5. python 3d大数据可视化软件_十大顶级大数据可视化工具推荐
  6. 初学JAVA,javaoo小结
  7. shell记录报警系统执行的危险命令
  8. Android 功耗(10)---电流波形图(power monitor)
  9. 贝叶斯定理到贝叶斯滤波器
  10. ICRA2021会议-----SLAM方向汇总
  11. indesign打开黑屏 mac_看完这篇文章,90%的电脑黑屏问题都可以解决了!
  12. uniapp微信小程序使用分享功能
  13. 什么是智能家电?消费者不知判定标准
  14. 数据库Clinvar简介
  15. C# 获取每年春节对应的公历日期
  16. python展开阅读全文_展开阅读全文 js 爬虫操作
  17. 【C++ 】STL求全排列和组合
  18. Oracle-11:联合查询
  19. AVPlayer 实现简单的视频播放功能
  20. 项目外包 质量把控从头理

热门文章

  1. 比格云:2019年云综合收入2.3亿元,用心做利润
  2. 正式赛-ZZULIOJ-1882- 蛤玮的魔法
  3. 95.第十九章 MySQL数据库 -- 单表操作(五)
  4. 2021.1.24-参加YMO青少年奥林匹克数学竞赛决赛(银牌)
  5. uni-app 开发APP 自定义轮播图 swiper 指示点位置和样式
  6. 正则大作战 基础篇(一)
  7. 2021年12月中国汽车发动机生产企业销售量排行榜:排名前三的企业销量环比均有所增长,且只销售汽油发动机(附月榜TOP58详单)
  8. 党旗飘飘平台正确打开方法 | JS定时点击按钮
  9. 项目名称:银行ATM存取款机系统设计与实现(sql语句模拟操作)
  10. AI一分钟 | 传美团37亿美元收购摩拜;苹果在给Mac设计处理器,2020年替代英特尔