如何用C语言来实现——五子棋游戏
每天进步一点点,坚持带来大改变!!!
目录
前言:
实现思路:
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—>函数产生随机值:在空格的地方赋值"#";
注:rand和srand 头文件#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语言来实现——五子棋游戏相关推荐
- 用c语言做一个五子棋程序,C语言制作简单五子棋游戏
原标题:C语言制作简单五子棋游戏 C语言制作简单的五子棋游戏 学习C语言的人很多,但是用C语言很少,而用来为自己所用,来做游戏的人就更少了,很多人都是跟着学校学习,学校讲到哪就坐到哪,但是以后却还是不 ...
- 一个使用纯Win32 SDK和C语言实现的五子棋游戏
引言:GobangGame 这是一个使用纯Win32 SDK和C语言实现的五子棋游戏 在这个游戏中实现的功能 [x] 绘制一个15 * 15的棋盘 [x] 绘制5个着重点位置 [x] 根据鼠标左键的点 ...
- c语言带坐标五子棋代码复制,C语言编写的五子棋游戏源代码
已结贴√ 问题点数:20 回复次数:28 C语言编写的五子棋游戏源代码 # include # include # include # include//插入输入输出头文件 # include//字符 ...
- 简单五子棋游戏c语言简单,C语言制作简单五子棋游戏
#pragma comment(lib,'winmm.lib') //玩游戏 void PlayGame() { //鼠标操作 int chess[N][N] = { 0 };//标志没有棋子的标志 ...
- 如何用C语言开发图形化游戏
原文:https://www.toutiao.com/i6951600048111190532/ 当你C语言学到一段时间后,也许对命令行程序感到厌倦了,也许你想要做一款游戏,但是光目前的知识,无法用命 ...
- 如何用C语言实现【猜拳游戏】
前言 在学习了循环.分支.和函数之后,可以写一些简单的小游戏来给自己的编程之路增添一份乐趣.不仅提升了编码能力,还可以边学边玩,简直妙哉妙哉! 目录 ⛄一.游戏逻辑 ❄️ 二.思维导图 ☁️ 三.游戏 ...
- 【全网最强C语言学习】五子棋游戏
目录 一.前言 二.头文件 三.menu菜单函数 四.初始化棋盘Initboard函数 五.显示棋盘Displayboard函数 六.落子函数 七.判断输赢ifwin 八.人机.人人模式的选择 九.作 ...
- 如何用C语言实现圈叉游戏(-)
今天情人节,还是在学习C语言 自己写了一遍发现自己写的没有书上的代码更简练 就把书上的代码稍微修改了一下 下面看游戏界面 和昨天的米字棋差不多,有时间会结合米字旗的代码做些修改 上代码: /*井字游戏 ...
- c语言画叉,如何用C语言实现圈叉游戏(-)
今天情人节,还是在学习C语言 自己写了一遍发现自己写的没有书上的代码更简练 就把书上的代码稍微修改了一下 下面看游戏界面 和昨天的米字棋差不多,有时间会结合米字旗的代码做些修改 上代码: /* 井字游 ...
最新文章
- 网络管理员比赛回顾04-DHCP
- 数据中心可以从云计算学习可持续性运营
- k8s kustomize 简明教程:安装 kustomization.yml常用字段解读
- 后缀树的构造方法-Ukkonen详解 [转]
- python 3d大数据可视化软件_十大顶级大数据可视化工具推荐
- 初学JAVA,javaoo小结
- shell记录报警系统执行的危险命令
- Android 功耗(10)---电流波形图(power monitor)
- 贝叶斯定理到贝叶斯滤波器
- ICRA2021会议-----SLAM方向汇总
- indesign打开黑屏 mac_看完这篇文章,90%的电脑黑屏问题都可以解决了!
- uniapp微信小程序使用分享功能
- 什么是智能家电?消费者不知判定标准
- 数据库Clinvar简介
- C# 获取每年春节对应的公历日期
- python展开阅读全文_展开阅读全文 js 爬虫操作
- 【C++ 】STL求全排列和组合
- Oracle-11:联合查询
- AVPlayer 实现简单的视频播放功能
- 项目外包 质量把控从头理
热门文章
- 比格云:2019年云综合收入2.3亿元,用心做利润
- 正式赛-ZZULIOJ-1882- 蛤玮的魔法
- 95.第十九章 MySQL数据库 -- 单表操作(五)
- 2021.1.24-参加YMO青少年奥林匹克数学竞赛决赛(银牌)
- uni-app 开发APP 自定义轮播图 swiper 指示点位置和样式
- 正则大作战 基础篇(一)
- 2021年12月中国汽车发动机生产企业销售量排行榜:排名前三的企业销量环比均有所增长,且只销售汽油发动机(附月榜TOP58详单)
- 党旗飘飘平台正确打开方法 | JS定时点击按钮
- 项目名称:银行ATM存取款机系统设计与实现(sql语句模拟操作)
- AI一分钟 | 传美团37亿美元收购摩拜;苹果在给Mac设计处理器,2020年替代英特尔