欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實(shí)現(xiàn)掃雷游戲詳細(xì)代碼

 更新時(shí)間:2020年11月30日 16:53:18   作者:CYQAQ  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷游戲的具體步驟和詳細(xì)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言實(shí)現(xiàn)掃雷游戲的詳細(xì)代碼,供大家參考,具體內(nèi)容如下

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

本文的掃雷游戲主要實(shí)現(xiàn)以下的功能:

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

用到的IDE為VS2013

二、源代碼

創(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 <stdio.h>
#include <stdlib.h>
#include "saolei.h"
#include <Windows.h>

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("請輸入一個(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é)果

END

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言實(shí)現(xiàn)統(tǒng)計(jì)100以內(nèi)所有素?cái)?shù)的個(gè)數(shù)

    C語言實(shí)現(xiàn)統(tǒng)計(jì)100以內(nèi)所有素?cái)?shù)的個(gè)數(shù)

    本文詳細(xì)講解了C語言實(shí)現(xiàn)統(tǒng)計(jì)100以內(nèi)所有素?cái)?shù)個(gè)數(shù)的方法,文中通過示例代碼介紹的非常詳細(xì)。需要的朋友可以收藏下,方便下次瀏覽觀看
    2021-11-11
  • C語言實(shí)現(xiàn)宿舍管理系統(tǒng)設(shè)計(jì)

    C語言實(shí)現(xiàn)宿舍管理系統(tǒng)設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)宿舍管理系統(tǒng)設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++中線性代數(shù)計(jì)算Eigen庫的使用教程詳解

    C++中線性代數(shù)計(jì)算Eigen庫的使用教程詳解

    Eigen是一個(gè)基于線性代數(shù)的C++模板庫,主要用于矩陣、向量、數(shù)值求解和相關(guān)算法,本文主要為大家簡單聊聊Eigen庫的使用,希望對(duì)大家有所幫助
    2023-12-12
  • C++的STL中accumulate函數(shù)的使用方法

    C++的STL中accumulate函數(shù)的使用方法

    這篇文章主要介紹了C++的STL中accumulate的使用方法,accumulate作用是累加求和即自定義類型數(shù)據(jù)處理,下文具體的操作方法需要的小伙伴可以參考一下
    2022-03-03
  • C++20 格式化字符串的實(shí)現(xiàn)

    C++20 格式化字符串的實(shí)現(xiàn)

    本文主要講述了C++20中新引入的std::format功能,該功能用于格式化字符串,提供了一種簡潔、類型安全且靈活的方式來構(gòu)建格式化字符串,文章從使用場景、格式化規(guī)則、自定義類型的格式化等方面進(jìn)行了詳細(xì)的介紹,感興趣的可以了解一下
    2024-10-10
  • 用typedef定義類型詳細(xì)總結(jié)

    用typedef定義類型詳細(xì)總結(jié)

    用typedef可以聲明各種類型名,但不能用來定義變量,用typedef可以聲明數(shù)組類型、字符串類型、使用比較方便
    2013-10-10
  • c++ 構(gòu)造函數(shù)中調(diào)用虛函數(shù)的實(shí)現(xiàn)方法

    c++ 構(gòu)造函數(shù)中調(diào)用虛函數(shù)的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猚++ 構(gòu)造函數(shù)中調(diào)用虛函數(shù)的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++11語法之右值引用的示例講解

    C++11語法之右值引用的示例講解

    右值引用,一般是在深拷貝的類,實(shí)現(xiàn)移動(dòng)構(gòu)造和移動(dòng)賦值,能夠解決左值引用無法做到的傳返回值的效率問題,下面跟隨小編一起學(xué)習(xí)下C++11語法之右值引用的問題
    2022-04-04
  • 《C++ primer plus》讀書筆記(三)

    《C++ primer plus》讀書筆記(三)

    本文是C++讀書筆記系列的第三篇,是讀完《C++ primer plus》一書第九、十兩章記錄下來的筆記,學(xué)習(xí)C++的同學(xué)可以看看參考下。
    2014-10-10
  • C語言函數(shù)指針詳解

    C語言函數(shù)指針詳解

    大家好,本篇文章主要講的是C語言函數(shù)指針詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01

最新評(píng)論