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

基于C語言代碼實現(xiàn)掃雷游戲

 更新時間:2020年11月10日 08:40:04   作者:楠c  
這篇文章主要為大家詳細介紹了基于C語言代碼實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

掃雷(第一次多文件應用)

掃雷的思路

game.h

#ifndef _GAME_H_
#define _GAME_H_
#include<stdio.h>
#include <time.h>
#include<string.h>
#include<windows.h>
#pragma warning(disable:4996)
#define ROW 12
#define COL 12
//定義20個雷
#define NUMS 20
void Menu();
void Game();

#endif

main.c

#include "game.h"

int main(){
 int quit = 0;
 int select = 0;
 while (!quit){
 Menu();
 scanf("%d", &select);
 switch (select){
 case 1:
 Game();
 break;
 case 2:
  quit = 1;
 break;
 default:
 printf("請重新輸入");
 break;
 }
 
 }
 system("pause");
 return 0;
}

game.c

#include "game.h"

void Menu()
{
 printf("##########################\n");
 printf("## 1. Play  2. Exit ##\n");
 printf("##########################\n");
 printf("請輸入# ");
}
//設置20個隨機雷
void SetMines(char mine_board[][COL], int row, int col)
{
 int count = NUMS;
 while (count){
 int x = rand() % 10 + 1;
 int y = rand() % 10 + 1;
 if (mine_board[x][y] == '0'){
 mine_board[x][y] = '1';
 count--;
 }
 }
}
//判斷周圍有幾個雷
int GetMines(char mine[][COL], int row, int col, int x, int y)
{
 return mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][y + 1] + \
 mine[x][y - 1] + mine[x][y + 1] + mine[x + 1][y - 1] + \
 mine[x + 1][y] + mine[x + 1][y + 1] - 8 * '0';
}
//設置界面的下劃線
static void ShowLine(int nums)
{
 printf("---");
 for (int i = 0; i < nums; i++){
 printf("-");
 }
 printf("\n");
}
//一個顯示界面,傳入界面數(shù)組顯示掃雷界面,傳入布雷數(shù)組顯示雷區(qū)界面
void ShowBoard(char show_board[][COL], int row, int col)
{
 printf(" ");
 for (int i = 1; i < row - 1; i++){
 printf(" %d ", i);
 }
 printf("\n");
 ShowLine(2 * col + col + 4);

 for (int i = 1; i < row - 1; i++){
 printf("%2d|", i);
 for (int j = 1; j < col - 1; j++){
 printf(" %c |", show_board[i][j]);
 }
 printf("\n");
 ShowLine(2 * col + col + 4);
 }
}

void Game()
{
 char show_board[ROW][COL];
 char mine_board[ROW][COL];
 memset(show_board, '*', sizeof(show_board));
 memset(mine_board, '0', sizeof(mine_board));
 srand((unsigned long)time(NULL));

 SetMines(mine_board, ROW, COL);
 int count = (ROW - 2)*(COL - 2) - NUMS;
 int x = 0;
 int y = 0;
 do{
 ShowBoard(show_board, ROW, COL);
 printf("請輸入位置# ");
 scanf("%d %d", &x, &y);
 if (x < 1 || x > 10 || y < 1 || y >10){
 printf("輸入越界,請重新輸入!\n");
 continue;
 }
 if (show_board[x][y] != '*'){
 printf("該位置已經被排除,請重新輸入!\n");
 continue;
 }
 if (mine_board[x][y] == '1'){
 break;
 }
 int num = GetMines(mine_board, ROW, COL, x, y);
 show_board[x][y] = num + '0';
 count--;
 system("cls");
 } while (count > 0);
 //count>0說明坐標是雷,break提前退出了
 if (count > 0){
 printf("你被炸死了!\n");
 }
 else{
 printf("你贏了!\n");
 }
 printf("下面是雷區(qū)的排布!\n");
 ShowBoard(mine_board, ROW, COL);
}

更多有趣的經典小游戲實現(xiàn)專題,分享給大家:

C++經典小游戲匯總

python經典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經典游戲 玩不停

java經典小游戲匯總

javascript經典小游戲匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C語言深入探究直接插入排序與希爾排序使用案例講解

    C語言深入探究直接插入排序與希爾排序使用案例講解

    算法中排序是十分重要的,而每一個學習計算機的都會在初期的時候接觸到這種排序,下面這篇文章主要給大家介紹了關于c語言直接插入排序與希爾排序使用的相關資料,需要的朋友可以參考下
    2022-05-05
  • C++函數(shù)重載的定義與原因詳解

    C++函數(shù)重載的定義與原因詳解

    這篇文章主要為大家詳細介紹了Python實現(xiàn)學生成績管理系統(tǒng),使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言中宏定義的教學詳解

    C語言中宏定義的教學詳解

    在C語言中,宏定義是預處理器的指令,主要用于為各種數(shù)據(jù)創(chuàng)建別名,這篇文章主要來和大家分享一下宏定義的相關基礎知識,需要的小伙伴可以了解一下
    2023-07-07
  • 在vs2017上配置AppGameKit庫的圖文教程

    在vs2017上配置AppGameKit庫的圖文教程

    這篇文章主要介紹了在vs2017上配置AppGameKit庫的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 數(shù)據(jù)結構順序表操作示例

    數(shù)據(jù)結構順序表操作示例

    這篇文章主要介紹了數(shù)據(jù)結構順序表操作示例,其中有在第I個元素前插入數(shù)據(jù)x,元素從0開始計數(shù)、刪除第i個元素,元素從0開始計數(shù)的方法,需要的朋友可以參考下
    2014-03-03
  • C++實現(xiàn)LeetCode(92.倒置鏈表之二)

    C++實現(xiàn)LeetCode(92.倒置鏈表之二)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(倒置鏈表之二),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C語言時間函數(shù)的ctime()和gmtime()你了解嗎

    C語言時間函數(shù)的ctime()和gmtime()你了解嗎

    這篇文章主要為大家詳細介紹了C語言時間函數(shù)的ctime()和gmtime(),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • c++11&14-智能指針要點匯總

    c++11&14-智能指針要點匯總

    這篇文章主要介紹了c++11&14-智能指針的要點,文中代碼非常詳細,供大家學習和參考,感興趣的朋友可以了解下
    2020-06-06
  • C++中std::string::npos的用法

    C++中std::string::npos的用法

    這篇文章主要介紹了C++中std::string::npos的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言如何實現(xiàn)Unix時間戳與本地時間轉化

    C語言如何實現(xiàn)Unix時間戳與本地時間轉化

    這篇文章主要介紹了C語言如何實現(xiàn)Unix時間戳與本地時間轉化的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03

最新評論