c语言编写扫雷小游戏下载大全,C语言实现扫雷小游戏
发布日期:2021-06-24 17:13:14 浏览次数:2 分类:技术文章

本文共 3593 字,大约阅读时间需要 11 分钟。

本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下

主函数:main.c

#include "game.h"

void Menu()

{

printf("##########################\n");

printf("##1.play 0.exit##########\n");

printf("##########################\n");

printf("## Please Enter select! ##\n");

}

int main()

{

Menu();

srand((unsigned int)time(NULL));

int quit = 0;

while (!quit)

{

int select = 0;

printf("请输入你的选择:\n");

scanf("%d", &select);

switch (select)

{

case 1:

game();

break;

case 2:

quit = 1;

break;

default :

printf("你输入有误,请重新输入:\n");

break;

}

}

printf("Bye Bye!\n");

system("pause");

return 0;

}

子函数:game.c

#include "game.h"

void game()

{

char mine[ROWS][COLS] = { 0 };

char show[ROWS][COLS] = { 0 };

memset(mine, '0', sizeof(mine));//初始化数组置为0

memset(show, '*', sizeof(show));//初始化数组置为*

int no_y, no_x;

set_mine(mine,ROWS,COLS,&no_x,&no_y);//布雷 ‘1'表示雷

int x = 0;

int y = 0;

int time = 100 - NUM;

while (time > 0)

{

system("cls");//清屏

Show(show, ROWS, COLS);//打印 棋盘

printf("请输入坐标:\n");

scanf("%d%d", &x, &y);

if (x<1 || x>10 || y<1 || y>10)

{

printf("你输入有误,请重新输入:\n");

continue;

}

if (show[x][y] != '*')

{

printf("你输入有误,请重新输入:\n");

continue;

}

if (mine[x][y] == '1')

{

if (time == 80)//如果第一次有雷,用一个没雷的与这个交换

{

mine[x][y] = '0';

mine[no_y][no_y] = '1';

}

else

{

printf("game over!\n");

Show(mine, ROWS, COLS);

break;

}

}

show[x][y] = get_mine_count(mine, x, y) + '0';

Expand(mine, show, x, y);

time--;

}

}

void set_mine(char mine[ROWS][COLS],int col,int row,int *no_x,int *no_y)//声明布雷函数

{

int count = NUM;//设置计数器,统计布雷的个数

while (count > 0)

{

int x = rand() % (col-2) + 1;

int y = rand() % (col-2) + 1;

if ((mine[x][y]) == '0')

{

mine[x][y] = '1';

count--;

}

}

for (int i = 1; i <= 10; i++)

{

for (int j = 1; i <= 10; j++)

{

if (mine[i][j] == '0')

{

no_x = i;

no_y = j;

return;

}

}

}

}

void Show(char mine[ROWS][COLS], int row, int col)//声明打印棋盘函数

{

int i = 0;

int j = 0;

printf(" ");

for (i = 1; i <= 10 ; i++)

{

printf("%2d |", i);

}

printf("\n");

for (i = 1; i <= 11; i++)

{

printf("----");

}

printf("\n");

for (i = 1; i <= 10 ; i++)

{

printf("%2d |", i);

for (j = 1; j <= 10; j++)

{

printf("%2c |", mine[i][j]);

}

printf("\n");

for (int i = 1; i <= 11; i++)

{

printf("----");

}

printf("\n");

}

}

int get_mine_count(char mine[ROWS][COLS], int x, int y)//雷数统计

{

return 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]+ mine[x - 1][y] - 8 * '0';

}

void Expand(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y)

{

if (x >= 1 && x <= 10 && y >= 1 && y <= 10)

{

if (get_mine_count(mine, x, y) + '0' == '0') //表示x,y周围没雷

{

show[x][y] = '0';

if (show[x - 1][y - 1] == '*')

{

Expand(mine, show, x - 1, y - 1);

}

if (show[x - 1][y] == '*')

{

Expand(mine, show, x - 1, y );

}

if (show[x - 1][y + 1] == '*')

{

Expand(mine, show, x - 1, y + 1);

}

if (show[x ][y - 1] == '*')

{

Expand(mine, show, x , y - 1);

}

if (show[x][y + 1] == '*')

{

Expand(mine, show, x , y + 1);

}

if (show[x + 1][y - 1] == '*')

{

Expand(mine, show, x + 1, y - 1);

}

if (show[x + 1][y] == '*')

{

Expand(mine, show, x + 1, y );

}

if (show[x + 1][y + 1] == '*')

{

Expand(mine, show, x + 1, y + 1);

}

}

}

}

函数声明:game.h

#ifndef _GAME_H_

#define _GAME_H_

#include

#include

#pragma warning(disable:4996)

#include

#include

#define ROWS 12

#define COLS 12

#define NUM 20 //雷数

void game();

void set_mine(char mine[ROWS][COLS],int row, int col, int *no_x, int *no_y);

void Show(char mine[ROWS][COLS], int row, int col);

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

void Expand(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y);

#endif

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

转载地址:https://blog.csdn.net/weixin_34017915/article/details/117040528 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android studio最新最全视频,史上最详Android Studio入门及使用详解视频教程全套
下一篇:linux gdb反汇编,Linux gdb调试

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月14日 02时37分19秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章