C語言編程實現掃雷游戲
更新時間:2021年08月01日 13:20:04 作者:莓關系
這篇文章主要為大家詳細介紹了C語言編程實現掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言實現掃雷游戲的具體代碼,供大家參考,具體內容如下
在我們熟知的掃雷中,我們點擊小方塊,小方塊要么出現數字,要么遇到地雷。我打算,使用數組的方式來完成掃雷游戲。使用一個數組用來生成隨機地雷,使用另外一個數組,用來進行游戲,該數組可以先將所有的元素都初始化為'*',表示沒有被掃雷的坐標點。
以下是代碼部分。
這是test.c文件
#define _CRT_SECURE_NO_WARNINGS 1
//掃雷游戲
#include "game.h"
void game()
{
char MineArr[ROWS][COLS] = {0};
char ShowArr[ROWS][COLS] = {0};
//給數組賦初值
//地雷數組全部賦予0,顯示數組全部賦予'*'
Assign(MineArr, ROWS, COLS, '0');
Assign(ShowArr, ROWS, COLS, '*');
//將數組顯示出來,并在數組旁添加坐標號
//Show(MineArr, ROW, COL);
Show(ShowArr, ROW, COL);
//布置地雷
Mine(MineArr, ROW, COL);//將布置地雷后的數組輸出
Show(MineArr, ROW, COL);
//排查地雷
FindMine(MineArr, ShowArr,ROW,COL);
}
int main()
{
int input;
do
{
printf("------------------------------\n");
printf("-------1、開始游戲------------\n");
printf("------------------------------\n");
printf("-------0、退出游戲------------\n");
printf("------------------------------\n");
printf("請選擇:>\n");
scanf("%d", &input);
switch (input)
{
case 1:
printf("掃雷游戲開始\n");
game();
break;
case 0:
printf("退出游戲\n");
break;
default:
printf("輸入錯誤,請重新輸入\n");
break;
}
}
while (input);
return 0;
}
game.h文件
#define _CRT_SECURE_NO_WARNINGS 1 #include "stdio.h" #include <stdlib.h> #include<time.h> #define ROW 9 #define COL 9 #define ROWS ROW+2 #define COLS COL+2 #define Easy_Count 10; void Assign(char Arr[ROW][COL],int rows,int cols,char set);//給數組賦初值 void Show(char Arr[ROW][COL], int rows, int cols);//將數組顯示出來,并在數組旁添加坐標號 void Mine(char Arr[ROW][COL],int rows, int cols);//布置地雷 void FindMine(char Arr1[ROW][COL], char Arr2[ROW][COL], int row, int col); int GetMineCount(char Arr1[ROW][COL],int x,int y);
game.c文件
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void Assign(char Arr[ROW][COL], int rows, int cols, char set)
{
int i = 0;
for (i = 0;i < rows;i++)
{
int j = 0;
for (j = 0;j < cols;j++)
{
Arr[i][j] = set;
}
}
}
void Show(char Arr[ROW][COL], int row, int col)
{
for (int a = 0;a < 10;a++)
{
printf("%d ",a);
}
printf("\n");
int i = 1;
for (i = 1;i <= row;i++)
{
printf("%d ",i);
int j = 1;
for (j = 1;j <= col;j++)
{
printf("%c ", Arr[i][j]);
}
printf("\n");
}
}
void Mine(char Arr[ROW][COL], int rows, int cols)
{
int count = Easy_Count;
while (count)
{
srand((unsigned)time(NULL));
int i = rand() % rows + 1;
int j = rand() % cols + 1;
if (Arr[i][j]!='1')
{
Arr[i][j] = '1';
count--;
}
}
}
int GetMineCount(char Arr1[ROW][COL], int x, int y)
{
return Arr1[x - 1][y + 1] + Arr1[x][y + 1] + Arr1[x + 1][y + 1] +
Arr1[x - 1][y] + Arr1[x + 1][y] +
Arr1[x - 1][y - 1] + Arr1[x][y - 1] + Arr1[x + 1][y - 1] - 8 * '0';
}
void FindMine(char Arr1[ROW][COL], char Arr2[ROW][COL], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
printf("請輸入要排查的坐標:>");
scanf("%d %d", &x, &y);
if (x >= 1 && x <= row && y >= 1 && y <= col)
{
if (Arr1[x][y]=='1')
{
printf("很遺憾,你被炸死了\n");
Show(Arr1, ROW, COL);
break;
}
else
{
int count = GetMineCount(Arr1,x,y);
Arr2[x][y] = count + '0';
Show(Arr2, ROW, COL);
}
}
else
{
printf("坐標非法,請重新輸入\n");
}
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C語言二叉樹常見操作詳解【前序,中序,后序,層次遍歷及非遞歸查找,統(tǒng)計個數,比較,求深度】
這篇文章主要介紹了C語言二叉樹常見操作,結合實例形式詳細分析了基于C語言的二叉樹前序,中序,后序,層次遍歷及非遞歸查找,統(tǒng)計個數,比較,求深度等相關操作技巧與注意事項,需要的朋友可以參考下2018-04-04
c++ TCHAR轉string導致中文缺失或亂碼問題及解決
這篇文章主要介紹了c++ TCHAR轉string導致中文缺失或亂碼問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
c語言之char*和unsigned?char*的區(qū)別及說明
這篇文章主要介紹了c語言之char*和unsigned?char*的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

