C语言开发实现扫雷游戏

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

简单描述:

输入要要扫的位置.
如果是雷,则游戏失败.
如果将所有不是雷的位置都扫了一遍,则游戏胜利.

主要细节

1、初始化(玩家扫雷图,地雷布局图)

展示出来的地图(玩家能看到的地图)showMap

for (int row = 0; row < ROW; row++){

for (int col = 0; col < COL; col++){
showMap[row][col] = '*';
}
}

地雷的布局地图(玩家看不到的地图)mineMap

for (int row = 0; row < ROW; row++){

for (int col = 0; col < COL; col++){
mineMap[row][col] = '*';
}
}
int count = 0;
while (count<MINECOUNT){
int row = rand() % 9;
int col = rand() % 9;
mineMap[row][col] = 'L';
count++;
}
}

3、打印地图

void print(char Map[ROW][COL]){
printf(" |0|1|2|3|4|5|6|7|8|\n");
for (int row = 0; row < ROW; row++){
printf("%d |", row);
for (int col = 0; col < COL; col++){
printf("%c ", Map[row][col]);
}
printf("\n");
}
}

5、玩家输入要扫的位置信息(9*9格子中某一特定位置)

void Input(char showMap[ROW][COL], char mineMap[ROW][COL], int* row, int* col){
while (1){
printf("请输入您要点的位置坐标:");
scanf("%d %d", row, col);
if (((*row) < 0) || ((*row) >= ROW)
|| ((*col) < 0) || ((*col) >= COL)){
printf("输入有误 ");
continue;
}
if (showMap[*row][*col] == '*'){
showMap[*row][*col] = ' ';
break;
}
}
}

7、判断某一位置是不是地雷

//返回1表示雷;返回0表示不是雷
int isMine(char mineMap[ROW][COL], int row, int col){
if (mineMap[row][col] == 'L'){
return 1;
}
return 0;
}

9、某一位置附近地雷的个数

int MineNerborhood(char mineMap[ROW][COL], int row, int col){
if (row < 0 || row >= ROW
|| col < 0 || col >= COL){
return '0';
}
int count = 0;
for (int r = row - 1; r <= row + 1; r++){
for (int c = col - 1; c <= col + 1; c++){
if (mineMap[r][c] == 'L'){
count++;
}
}
}
return count + '0';
}

源代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define ROW 9
#define COL 9
#define MINECOUNT 10

void Input(char showMap[ROW][COL], char mineMap[ROW][COL], int* row, int* col){
while (1){
printf("请输入您要点的位置坐标:");
scanf("%d %d", row, col);
if (((*row) < 0) || ((*row) >= ROW)
|| ((*col) < 0) || ((*col) >= COL)){
printf("输入有误 ");
continue;
}
if (showMap[*row][*col] == '*'){
showMap[*row][*col] = ' ';
break;
}
}
}

//返回1表示雷;返回0表示不是雷
int isMine(char mineMap[ROW][COL], int row, int col){
if (mineMap[row][col] == 'L'){
return 1;
}
return 0;
}
//
void init(char showMap[ROW][COL], char mineMap[ROW][COL]){

for (int row = 0; row < ROW; row++){

for (int col = 0; col < COL; col++){
showMap[row][col] = '*';
}
}
for (int row = 0; row < ROW; row++){

for (int col = 0; col < COL; col++){
mineMap[row][col] = '*';
}
}
int count = 0;
while (count<MINECOUNT){
int row = rand() % 9;
int col = rand() % 9;
mineMap[row][col] = 'L';
count++;
}
}
void print(char Map[ROW][COL]){
printf(" |0|1|2|3|4|5|6|7|8|\n");
for (int row = 0; row < ROW; row++){
printf("%d |", row);
for (int col = 0; col < COL; col++){
printf("%c ", Map[row][col]);
}
printf("\n");
}
}
//(row,col)附近格子地雷的个数
int MineNerborhood(char mineMap[ROW][COL], int row, int col){
if (row < 0 || row >= ROW
|| col < 0 || col >= COL){
return '0';
}
int count = 0;
for (int r = row - 1; r <= row + 1; r++){
for (int c = col - 1; c <= col + 1; c++){
if (mineMap[r][c] == 'L'){
count++;
}
}
}
return count + '0';
}
//一局游戏
void game(){
srand(time(0));
//展示给玩家的地图
char showMap[ROW][COL];
//雷的布局图
char mineMap[ROW][COL];
//对两个地图进行初始化
init(showMap, mineMap);
//print(mineMap);
//玩家已经扫到的不是雷的格子的数目
int notMineCount = 0;
printf("扫雷游戏开始啦!\n");
while (1){
//打印地图
print(showMap);
//输入地点
int row, col;
Input(showMap, mineMap, &row, &col);
//判断是否是雷区
if (isMine(mineMap, row, col) == 1){
printf(" 大兄弟,踩雷咧!\n给您看看雷的布局\n");
print(mineMap);
break;
}
//判断附近雷的情况
showMap[row][col]=MineNerborhood(mineMap, row, col);

notMineCount++;
//判断是否赢了
if (notMineCount == ROW*COL - MINECOUNT){
print(mineMap);
printf("恭喜您赢啦!\n");
break;
}
}

}
int menu(){
printf("===================\n");
printf("1.开始游戏\n");
printf("0.结束游戏\n");
printf("===================\n");
printf("请输入您的选择:");
int choice;
scanf("%d", &choice);
return choice;
}
int main(){
while (1){
int choice = menu();
if (choice == 1){
game();
}else if (choice==0){
break;
}else{
printf("输入有误,请重新输入\n");
}
}
system("pause");
return 0;
}

运行结果:



更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

java经典小游戏汇总

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程宝库

项目开发环境:开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1,三方库:OpenGL。项目功能:是图形旋转起来。项目源码如下:/************* ...