C語言實現掃雷

來源:互聯網
上載者:User

標籤:玩家   int   接下來   ***   efault   效果   else   監視   game   

實現用C語言編寫一個掃雷遊戲大家想必都玩過掃雷,無論那個版本都有難度供已選擇,下面來分享一個自己用C語言編寫的掃雷遊戲吧!編寫語言:C語言編寫軟體:visual studio 2017

1.首先是將遊戲的測試模組寫好,要有提示玩家進入的菜單函數以及選擇函數等各種需要編寫的函數想出一個整體架構來

//測試模組test。c #include "game.h"void Menu(){    printf("***********************************************************************\n");    printf("************************1.PLAY          0.EXIT*************************\n");    printf("***********************************************************************\n");}int Game(){    int x = 0;    int y = 0;    int i = 0;    int j = 0;    int ret = 0;    int num = count;    char real[ROWS][COLS] = {‘0‘};    char show[ROWS][COLS] = {‘*‘};    srand((unsigned)time(NULL));    Init(real,ROWS, COLS, ‘0‘);    Init(show, ROWS, COLS, ‘*‘);    SetMine(real, ROWS, COLS, count);    Display(show, ROW, COL);    printf("Pelase Input x and y :\n");    scanf_s("%d%d", &x, &y);    if (real[x][y] == ‘1‘)//保證第一次不踩到雷    {        do        {            SetMine(real, ROWS, COLS, count);        } while (real[x][y] == ‘1‘);    }    show[x][y] = SearchMind(real, &x, &y, ROWS, COLS) + ‘0‘;    for (i = 0; i <ROWS; i++)//管理員監視器模組    {        //printf("%3d", i);         for (j = 0; j < COLS; j++)        {            printf("%3c", real[i][j]);        }        printf("\n");    }    printf("\n");    Display(show, ROW, COL);    while ((ROW*COL) > (ROW*COL - num))    {        printf("Pelase Input x and y :\n");        scanf_s("%d%d", &x, &y);        ret = SearchMind(real, &x, &y, ROWS, COLS) + 1;        if (ret!=0)//不是踩到雷的情況進入        {            show[x][y] = SearchMind(real, &x, &y, ROWS, COLS) + ‘0‘;//轉化成字元型            Display(show, ROW, COL);        }        if (ret == 0)//踩到雷的情況進入        {            return 0;        }        num--;    }    return 1;}int main(){    Menu();    while (1)    {        int m = 0;        scanf_s("%d", &m);        switch (m)        {        case 1:        {            if (Game())            {                printf("you win\n");            }            else            {                printf("you failed\n");                Menu();            }            break;         }        case 2:            return 0;            break;        default:            printf("請重新輸入\n");            break;        }    }}

測試函數中的標頭檔 #include "game.h",而不是#include

接下來是標頭檔game.h

#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#define ROWS 11#define COLS 11#define ROW 9#define COL 9#define count 10void Init(char arr[ROWS][COLS],int rows, int cols, const char ch);void SetMine(char str[ROWS][COLS], int rows, int cols, int cot);void Display(char str[ROWS][COLS], int rows, int cols);int SearchMind(char str[ROWS][COLS], int* x, int* y, int rows, int cols);#endif

接下來是最重要的部分也是該遊戲的核心部分遊戲函數檔案game.c

 #include "game.h"void Init(char arr[ROWS][COLS], int rows, int cols, const char ch){    int i = 0;    int j = 0;    for (i = 0; i < rows; i++)    {        for (j = 0; j < cols; j++)        {            arr[i][j] = ch;        }    }}//隨機埋雷 SetMine()void SetMine(char str[ROWS][COLS], int rows, int cols, int cot){    int x = 0;    int y = 0;    while (cot > 0)    {        x = rand() % 9 + 1;        y = rand() % 9 + 1;        if (str[x][y]==‘0‘)        {            str[x][y] = ‘1‘;            cot--;        }    }}//顯示棋盤 Display() void Display(char str[ROWS][COLS], int rows, int cols){    int i = 0;    int j = 0;    for (i = -1; i < rows; i++)    {        printf("%3d", i+1);    }    printf("\n");    for (i = 1; i <=rows; i++)    {        printf("%3d", i);         for (j = 1; j <= cols; j++)        {            printf("%3c", str[i][j]);        }        printf("\n");    }}//輸入座標,判斷周圍的雷數,並回饋數字,為0時遞迴SearchMine() int SearchMind(char str[ROWS][COLS], int* x, int* y, int rows,int cols){    int number = 0;    //判斷是否踩到雷    if (str[*x][*y] == ‘1‘)    {        return -1;    }    number = str[*x - 1][*y - 1] + str[*x - 1][*y] + str[*x - 1][*y + 1]        + str[*x][*y - 1] + str[*x][*y + 1]        + str[*x + 1][*y - 1] + str[*x + 1][*y] + str[*x + 1][*y + 1] - 8 * ‘0‘;        //if (number == 0)        //{        //  //改變x,y的值實現爆炸效果        //  number = SearchMind(str, &x, &y, rows, cols);        //}//遞迴        return number;}//判斷輸贏 Distinguish()

C語言實現掃雷

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.