扫雷游戏

【扫雷游戏】非淡泊无以明志,非宁静无以致远。这篇文章主要讲述扫雷游戏相关的知识,希望能为你提供帮助。

game.h
#pragma  once
#include  < stdio.h>
#include  < stdlib.h>
#include  < time.h>

#define  ROW  9
#define  COL  9

#define  EASY_COUNT  80

#define  ROWS  ROW+2
#define  COLS  COL+2

void& nbsp; InitBoard(char& nbsp; board[ROWS][COLS],& nbsp; int& nbsp; rows,int& nbsp; cols,char& nbsp; set& nbsp; );
void& nbsp; DisplayBoard(char& nbsp; board[ROWS][COLS],& nbsp; int& nbsp; row,& nbsp; int& nbsp; col);
void& nbsp; SetMine(char& nbsp; board[ROWS][COLS],& nbsp; int& nbsp; row,& nbsp; int& nbsp; col);
void& nbsp; FindMine(char& nbsp; mine[ROWS][COLS],char& nbsp; show[ROWS][COLS],& nbsp; int& nbsp; row,& nbsp; int& nbsp; col);

game.c
#define  _CRT_SECURE_NO_WARNINGS  1
#include  "game.h"
void& nbsp; InitBoard(char& nbsp; board[ROWS][COLS],& nbsp; int& nbsp; rows,& nbsp; int& nbsp; cols,char& nbsp; set)

int& nbsp; i& nbsp; =& nbsp; 0;
int& nbsp; j& nbsp; =& nbsp; 0;
for& nbsp; (i& nbsp; =& nbsp; 0; & nbsp; i& nbsp; & lt; & nbsp; rows; & nbsp; i++)

for& nbsp; (j& nbsp; =& nbsp; 0; & nbsp; j& nbsp; & lt; & nbsp; cols; j++)

board& nbsp; [i][j]& nbsp; =& nbsp; set;



void& nbsp; DisplayBoard(char& nbsp; board[ROWS][COLS],& nbsp; int& nbsp; row,& nbsp; int& nbsp; col)

int& nbsp; i& nbsp; =& nbsp; 0;
int& nbsp; j& nbsp; =& nbsp; 0;
//打印列号
for& nbsp; (i& nbsp; =& nbsp; 0; & nbsp; i& nbsp; & lt; & nbsp; col; & nbsp; i++)

printf(& quot; %d& nbsp; & nbsp; & quot; ,& nbsp; i);

printf(& quot; \\n& quot; );
for& nbsp; (i& nbsp; =& nbsp; 1; & nbsp; i& nbsp; & lt; & nbsp; row; & nbsp; i++)

printf(& quot; %d& nbsp; & nbsp; & quot; ,& nbsp; i);
for& nbsp; (j& nbsp; =& nbsp; 1; & nbsp; j& nbsp; & lt; & nbsp; col; & nbsp; j++)

printf(& quot; %c& nbsp; & nbsp; & quot; ,board[i][j]);

printf(& quot; \\n& quot; );


void& nbsp; SetMine(char& nbsp; board[ROWS][COLS],& nbsp; int& nbsp; row,& nbsp; int& nbsp; col)

int& nbsp; count& nbsp; =& nbsp; EASY_COUNT;
while& nbsp; (count)

int& nbsp; x& nbsp; =& nbsp; rand()& nbsp; %& nbsp; row& nbsp; +& nbsp; 1; //1-9
int& nbsp; y& nbsp; =& nbsp; rand()& nbsp; %& nbsp; col& nbsp; +& nbsp; 1;
if& nbsp; (board[x][y]& nbsp; ==& nbsp; & #39; 0& #39; )

board[x][y]& nbsp; =& nbsp; & #39; 1& #39; ;
count--;



int& nbsp; get_mine_count(char& nbsp; mine[ROWS][COLS],& nbsp; int& nbsp; x,& nbsp; int& nbsp; y)

return& nbsp; mine[x& nbsp; -& nbsp; 1][y]& nbsp; +& nbsp; mine[x& nbsp; -& nbsp; 1][y& nbsp; -& nbsp; 1]& nbsp; +& nbsp; mine[x][y& nbsp; -& nbsp; 1]& nbsp; +& nbsp; mine[x& nbsp; +& nbsp; 1][y& nbsp; -& nbsp; 1]
+& nbsp; mine[x& nbsp; +& nbsp; 1][y]& nbsp; +& nbsp; mine[x& nbsp; +& nbsp; 1][y& nbsp; +& nbsp; 1]& nbsp; +& nbsp; mine[x][y& nbsp; +& nbsp; 1]& nbsp; +& nbsp; mine[x& nbsp; -& nbsp; 1][y& nbsp; +& nbsp; 1]& nbsp; -& nbsp; 8& nbsp; *& nbsp; & #39; 0& #39; ;

void& nbsp; FindMine(char& nbsp; mine[ROWS][COLS],& nbsp; char& nbsp; show[ROWS][COLS],& nbsp; int& nbsp; row,& nbsp; int& nbsp; col)

int& nbsp; x& nbsp; =& nbsp; 0;
int& nbsp; y& nbsp; =& nbsp; 0;
int& nbsp; win& nbsp; =& nbsp; 0;
while& nbsp; (win& lt; row*col-EASY_COUNT)

printf(& quot; 请输入排查雷的坐标:& gt; & quot; );
scanf(& quot; %d%d& quot; ,& nbsp; & amp; x,& nbsp; & amp; y);
if& nbsp; (x& nbsp; & gt; =& nbsp; 1& nbsp; & amp; & amp; & nbsp; x& nbsp; & lt; =& nbsp; row& nbsp; & amp; & amp; & nbsp; y& nbsp; & gt; =& nbsp; 1& nbsp; & amp; & amp; & nbsp; y& nbsp; & lt; =& nbsp; col)

//坐标合法
if& nbsp; (mine[x][y]& nbsp; ==& nbsp; & #39; 1& #39; )//踩雷

printf(& quot; 很遗憾,你被炸死了!\\n& quot; );
DisplayBoard(mine,& nbsp; row,& nbsp; col);
break;

else//不是雷

int& nbsp; count& nbsp; =& nbsp; get_mine_count(mine,x,y);
show[x][y]& nbsp; =& nbsp; count& nbsp; +& nbsp; & #39; 0& #39; ;
DisplayBoard(show,& nbsp; row,& nbsp; col);
win++;


else

printf(& quot; 输入坐标非法,请重新输入!\\n& quot; );



if& nbsp; (win& nbsp; ==& nbsp; row& nbsp; *& nbsp; col& nbsp; -& nbsp; EASY_COUNT)

printf(& quot; 恭喜你,排雷成功!\\n& quot; );
//DisplayBoard(mine,  row,  col);



test.c
#define  _CRT_SECURE_NO_WARNINGS  1
#include  < stdio.h>
#include  "game.h"
void& nbsp; menu()

printf(& quot; *********************\\n& quot; );
printf(& quot; ***1.paly***0.exit***\\n& quot; );
printf(& quot; *********************\\n& quot; );


void& nbsp; game()

//雷的信息存储
char& nbsp; mine[ROWS][COLS]& nbsp; =& nbsp; 0;
//排查出雷的信息
char& nbsp; show[ROWS][COLS]& nbsp; =& nbsp; & nbsp; 0& nbsp; ;
//初始化
InitBoard(mine,ROWS,COLS,& #39; 0& #39; );
InitBoard(show,& nbsp; ROWS,& nbsp; COLS,& #39; *& #39; );
//打印棋盘
//DisplayBoard(mine,ROW,COL); //显示棋盘
DisplayBoard(show,& nbsp; ROW,& nbsp; COL);
//布置雷
SetMine(mine,& nbsp; ROW,& nbsp; COL);
DisplayBoard(mine,& nbsp; ROW,& nbsp; COL);
//扫雷
FindMine(mine,show,& nbsp; ROW,& nbsp; COL);

void& nbsp; test()

int& nbsp; input& nbsp; =& nbsp; 0;
srand((unsigned& nbsp; int)time(NULL));

do& nbsp;
menu();
printf(& quot; 请选择:& gt; & quot; );
scanf(& quot; %d& quot; ,& nbsp; & amp; input);
switch& nbsp; (input)

case& nbsp; 1:
game();
break;
case& nbsp; 0:
printf(& quot; 退出游戏& quot; );
default:
printf(& quot; 选择错误,重新选择!\\n& quot; );
break;

& nbsp; while& nbsp; (input);

int& nbsp; main()

test();
return& nbsp; 0;


    推荐阅读