91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用C語言編寫一個簡單對掃雷小游戲

發布時間:2020-11-11 15:13:01 來源:億速云 閱讀:169 作者:Leah 欄目:開發技術

使用C語言編寫一個簡單對掃雷小游戲?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

掃雷的思路

使用C語言編寫一個簡單對掃雷小游戲

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");
}
//一個顯示界面,傳入界面數組顯示掃雷界面,傳入布雷數組顯示雷區界面
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("下面是雷區的排布!\n");
 ShowBoard(mine_board, ROW, COL);
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍州市| 宜宾县| 武清区| 伊通| 石河子市| 丹寨县| 漳浦县| 佛教| 富阳市| 扶风县| 神农架林区| 朝阳区| 德格县| 西丰县| 桐柏县| 读书| 定州市| 淄博市| 永德县| 楚雄市| 山丹县| 偏关县| 通辽市| 浑源县| 务川| 梁河县| 沅陵县| 遂川县| 新干县| 黔西| 鄂州市| 辽源市| 于田县| 苍梧县| 太谷县| 石棉县| 黄浦区| 八宿县| 阳高县| 西峡县| 东乡族自治县|