目录
前言
扫雷是一个很有趣的小游戏,下面我将用c语言来实现扫雷游戏的编写
提示:以下是本篇文章正文内容,下面案例可供参考
一、思路
分三个文件来写:
saoleitest.c:写游戏的基本框架
saolei.c:写游戏需要的各种函数
saolei.h:写游戏所需要的头文件、函数声明、符号定义
游戏思路:
1.初始化棋盘:
布置雷mine---雷:'1'
不是雷 '0',开始时全部初始化为'0'
显示结果show:---一开始全部初始化为'*'
打印棋盘
2.布置雷
电脑随机生成坐标,然后把雷放在这些坐标里。
3.排雷
首先输入一个坐标
(1)是雷:很遗憾,你被炸死了---游戏结束
(2)不是雷:找出周围八个格子有几个雷,然后游戏继续
(3)最后排查出所有的雷,游戏结束。
二、代码
1.saolei.h代码:
//头文件
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//定义符号常量
#define ROW 9
#define COL 9
#define EASYLEI 78
//因为要排查所选坐标的周围八个格,为了使边上的格子排查不越界,所以上下左右各加一行格子
#define ROWS ROW+2
#define COLS COL+2//函数名:
void menu(); //打印菜单函数
void chuboard(char board[ROWS][COLS],char ret);//棋盘初始化函数
void displayboard(char board[ROWS][COLS],int row,int col);//打印棋盘函数
void setboard(char board[ROWS][COLS],int row,int col);//布置雷的函数
void shaiboard(char board1[ROWS][COLS],int row,int col,char board2[ROWS][COLS]);//排查雷的函数
2.saoleitest.c
代码如下:
#include "saolei.h"
game(){
char mine[ROWS][COLS]={0};//布置雷的棋盘
char show[ROWS][COLS]={0};//显示排查结果的棋盘
//初始化棋盘
chuboard(mine,'0');
chuboard(show,'*');
//打印棋盘
//displayboard(mine,ROW,COL);
displayboard(show,ROW,COL);
//布置雷
setboard(mine,ROW,COL);
displayboard(mine,ROW,COL);
//排雷
shaiboard(mine,ROW,COL,show);
}
int main(){
char mine[ROWS][COLS]={0};//布置雷的棋盘
char show[ROWS][COLS]={0};//显示排查结果的棋盘
int input=0;
srand((unsigned int)time(NULL));
//游戏开场菜单设置:
do{
menu();
printf("请输入0或1\n");
scanf("%d",&input);
switch(input){
case 1:game();
break;
case 0:printf("退出游戏\n");
break;
default:printf("输入错误,请重新输入\n");
break;
}
}while(input);
return 0;
}
3.saolei.c
#include "saolei.h"
//打印菜单
void menu(){
printf("1.play\n");
printf("0.exit\n");
}
//棋牌初始化
void chuboard(char board[ROWS][COLS],char ret){
int i=0;
int j=0;
for(i=0;i<ROWS;++i){
for(j=0;j<COLS;++j){
board[i][j]=ret;
}
}
}
//打印棋盘
void displayboard(char board[ROWS][COLS],int row,int col){
int i=0;
int j=0;
printf(" \n");
printf("-----扫雷游戏-----\n");
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");
}
printf("-----扫雷游戏-----\n");
}//布置雷的函数
void setboard(char board[ROWS][COLS],int row,int col){
int count=EASYLEI;
int x=0;
int y=0;
while(count){
x=rand()%row+1;
y=rand()%col+1;
if(board[x][y]=='0'){
board[x][y]='1';
count--;}
}
}//排雷的函数
void shaiboard(char board1[ROWS][COLS],int row,int col,char board2[ROWS][COLS]){
int x=0;
int y=0;
int spare=row*col-EASYLEI;
while(spare){
printf("请输入坐标:\n");
scanf("%d%d",&x,&y);
if(board1[x][y]=='1'){
printf("很遗憾,你被炸死了,游戏结束\n");
break;
}
else{
board2[x][y]='0'+(board1[x-1][y-1]+board1[x-1][y]
+board1[x-1][y+1]+board1[x][y-1]+board1[x][y+1]
+board1[x+1][y-1]+board1[x+1][y]+board1[x+1][y+1]-8*'0');
spare--;
displayboard(board2,ROW,COL);
}
}
if(spare==0){
printf("恭喜你,扫雷完成!\n");
}
}
总结
以上就是对c语言实现扫雷小游戏的代码~