真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

利用C語言實(shí)現(xiàn)一個(gè)掃雷游戲-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)利用C語言實(shí)現(xiàn)一個(gè)掃雷游戲,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)下冶,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

一、思想實(shí)現(xiàn)


主要實(shí)現(xiàn)以下的功能:

1.顯示雷和其信息
2.輸入一個(gè)坐標(biāo)可觀測(cè)其周圍九格內(nèi)的地雷數(shù)
3.點(diǎn)擊到地雷則游戲結(jié)束

用到的IDE為VS2013

利用C語言實(shí)現(xiàn)一個(gè)掃雷游戲

二、源代碼

創(chuàng)建一個(gè)頭文件saolei.h
存放關(guān)于所有自定義函數(shù)的聲明

#define COL 9
char** creatMat(int row, int col);
void intMat(char** Mat, int row, int col, char ch);
void setMine(char** Mat, int row, int col);
void showMat(char** Mat, int row, int col);
int getMineNum(char** Mat, int row, int col, int x, int y);
void game(char** mineMat, char** mineInfo, int row, int col);

創(chuàng)建一個(gè)源文件SaoLei.c
來存放具體的游戲?qū)崿F(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1
#include 
#include 
#include "saolei.h"
#include 

char** creatMat(int row,int col)
{
 //創(chuàng)建一個(gè)指針數(shù)組
 char** Mat = (char**)malloc(sizeof(char *)*(row+2));//多創(chuàng)建2行2列方便計(jì)算邊界角落的數(shù)值
 //開辟每一行元素的空間
 for (int i = 0; i < row+2; ++i)
 {
 Mat[i] = (char*)malloc(sizeof(char)*(col+2));
 }
 return Mat;
}

void intMat(char** Mat, int row, int col, char ch)
{
 for (int i = 0; i < row+2; ++i)
 {
 for (int j = 0; j < col+2; ++j)
 {
 Mat[i][j] = ch;
 }
 }
}

void setMine(char** Mat, int row, int col)//雷的位置
{
 int count = MINE_NUM;//布置雷的個(gè)數(shù)
 while (count)
 {
 //x:1`row,y:1~col
 int x = rand() % row + 1;
 int y = rand() % col + 1;
 if (Mat[x][y] != '*')
 {
 Mat[x][y] = '*';
 --count;
 }
 }
}

void showMat(char** Mat, int row, int col)
{
 printf("------------------------------\n");
 //顯示列
 for (int i = 0; i <= col; ++i)
 {
 printf("%d ", i);
 }
 printf("\n");
 //顯示行
 for (int i = 1; i <= row; ++i)
 {
 printf("%d ", i);
 for (int j = 1; j <= col; ++j)
 {
 printf("%c ", Mat[i][j]);
 }
 printf("\n");
 }
 printf("------------------------------\n");
}

int getMineNum(char** Mat, int row, int col, int x, int y)
{//旋轉(zhuǎn)矩陣
 static int posOffset[8][2] = { { -1, -1 }, { -1, 0 }, { -1, 1 }, { 0, -1 }, { 0, 1 }, { 1, -1 }, { 1, 0 }, { 1, 1 } };
 int count = 0;
 for (int i = 0; i < 8; ++i)
 {
 int nx = x + posOffset[i][0];
 int ny = y + posOffset[i][1];
 if (Mat[nx][ny] == '*')
 {
 ++count;
 }
 }
 return 0;
}

void game(char** mineMat, char** mineInfo, int row, int col)
{
 int step = 0;
 while (step < row * col - MINE_NUM)
 {
 int x, y;
 printf("請(qǐng)輸入一個(gè)坐標(biāo):\n");
 scanf("%d%d", &x, &y);
 if (mineMat[x][y] == '*')
 {
 printf("game over!\n");
 showMat(mineMat, row, col);
 break;
 }
 //獲取x,y周圍雷的個(gè)數(shù)
 int num = getMineNum(mineMat, row, col, x, y);
 mineInfo[x][y] = num + '0';
 showMat(mineInfo, row, col);
 ++step;//成功走了一步
 }
 if (step == row * col - MINE_NUM)
 {
 printf("win!\n");
 }
}

void test()
{
 char** mineMat = creatMat(ROW, COL);
 char** mineInfo = creatMat(ROW, COL);

 intMat(mineMat, ROW, COL, '0');
 intMat(mineInfo, ROW, COL, '*');
 setMine(mineMat, ROW, COL);
 printf("雷:");
 showMat(mineMat, ROW, COL);
 printf("雷的信息:");
 showMat(mineInfo, ROW, COL);

 game(mineMat, mineInfo, ROW, COL);
}

int main()
{
 test();
 system("pause");
 return 0;
}

三、游戲結(jié)果

利用C語言實(shí)現(xiàn)一個(gè)掃雷游戲

利用C語言實(shí)現(xiàn)一個(gè)掃雷游戲

看完上述內(nèi)容,你們對(duì)利用C語言實(shí)現(xiàn)一個(gè)掃雷游戲有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文名稱:利用C語言實(shí)現(xiàn)一個(gè)掃雷游戲-創(chuàng)新互聯(lián)
文章路徑:http://weahome.cn/article/coosic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部