用C语言实现排雷游戏
目录
- 设计简单的游戏界面菜单
- 排雷过程
- 相应的代码
- 一级目录排雷游戏的缺陷与不足
- 一级目录改进
- 总结
设计简单的游戏界面菜单
文章图片
输入数字1,进入游戏;
文章图片
输入数字0,退出游戏;输入其他数字,将显示输入错误,重新输入;
文章图片
排雷过程 输入坐标,将显示是否排到雷,或者没有。
文章图片
显示的数字,将是该坐标周围八个坐标总共有几个雷。(如图,则有3颗)。如果输入的坐标超出坐标范围,将会提示,坐标非法输入,重新输入。
文章图片
如果你输入的坐标有雷,将会出现,你被炸,游戏结束!
文章图片
如果排雷成功,将显示你成功排雷。(这里设置了雷数是80个,将直接操作显示出来)。
文章图片
相应的代码 测试代码在------text.c
#include"game.h"
void menu(){printf("****************\n"); printf(" 1. PLAY *\n"); printf(" 0. EXIT ******\n"); printf("*******************\n"); }void game(){//雷的信息;//1.布置雷的信息;char mine[ROWS][COLS]={0}; //1111//2.排查雷char show[ROWS][COLS]={0}; //初始化;InitBoard(mine,ROWS,COLS,‘0'); InitBoard(show,ROWS,COLS,''); //打印棋盘;//DisplayBoard(mine,ROW,COL); DisplayBoard(show,ROW,COL); //布置雷;SetMine(mine,ROW,COL); DisplayBoard(mine,ROW,COL); //扫雷;FindMine(mine,show,ROW,COL); }void test(){int input = 0; srand((unsigned int)time(NULL)); do{menu(); printf(“请选择:>\n”); scanf("%d",&input); switch(input){case 1:game(); break; case 0:printf(“退出游戏\n”); break; default:printf(“选择错误,请重新选择!\n”); break; }}while(input); }int main(){test(); return 0; }2. 函数的声明#define ROW 9 //显示时棋盘的行数;#define COL 9 //显示时棋盘的列数;#define ROWS ROW+2#define COLS COL+2#define EASY_COUNT 10 //雷的总数;#include #include #includevoid InitBoard(char board[ROWS][COLS],int rows,int cols,int set); void DisplayBoard(char board[ROW][COLS],int row,int col); void SetMine(char board[ROWS][COLS],int row,int col); void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col); 3. 相关函数的定义#include “game.h”void InitBoard(char board[ROWS][COLS],int rows,int cols,int set){int i = 0; int j = 0; for(i = 0; i<=rows; i++){for(j = 0; j<=cols; j++){board[i][j] = set; }}}void DisplayBoard(char board[ROW][COLS],int row,int col){int i = 0; int j = 0; //打印列号;for( i =0; i<=col; i++){printf("%d “,i); }printf(”\n"); for(i = 1; i<=row; i++){printf("%d “,i); //行号for(j = 1; j<=col; j++){printf(”%c “,board[i][j]); }printf(”\n"); }}void SetMine(char board[ROWS][COLS],int row,int col){int count = EASY_COUNT; while(count){int x = rand()%row+1; int y = rand()%col+1; if(board[x][y]==‘0'){board[x][y]=‘1'; count–; }}}int get_mine_count(char mine[ROWS][COLS],int x,int y){return mine[x-1][y]+mine[x-1][y-1]+mine[x][y-1]+mine[x+1][y-1]+mine[x+1][y]+mine[x+1][y+1]+mine[x][y+1]+mine[x-1][y+1]-8*‘0'; }void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col){int x = 0; int y = 0; int win = 0; while(win \n”); scanf("%d%d",&x,&y); if(x>=1&&x<=row&&y>=1&&y<=col){if(mine[x][y]‘1'){printf(“很遗憾,你被炸死了\n”); DisplayBoard(mine,ROW,COL); break; }else//计算雷的个数;{int count = get_mine_count(mine,x,y); show[x][y]=count+‘0'; DisplayBoard(show,ROW,COL); win++; }}else{printf(“输入非法坐标,请重新输入\n”); }}if(winrowcol-EASY_COUNT){printf(“恭喜你,排雷成功\n”); DisplayBoard(mine,ROW,COL); }}
一级目录排雷游戏的缺陷与不足 设计排雷游戏非常的简易,而且对于输入坐标只能一个一个排,并不能在一定的情况下,将不是雷的空位显示出来,所以排雷过程中需要花费大量的时间。设计上面并不是很美观,只能是简易的游戏!
一级目录改进 需要运用递归去改进排雷游戏中关键的一步!
总结 【用C语言实现排雷游戏】到此这篇关于用C语言实现排雷游戏的文章就介绍到这了,更多相关C语言排雷游戏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 用C语言实现自动售货机
- vue中使用过滤器filters的this为undefined的问题
- 如何在Unix或Linux中使用管道()
- 用于数据分析的Violin Plot用法详解
- jQuery post()方法用法示例介绍
- 算法题(Knight巡回问题的Warnsdorff算法实现)
- 苹果手机打电话别人听不到我语言
- 华为若何启用googleplay服务
- 路由器怎么重启
- android模拟器用命令和DDMS模拟来电和短信