您好,登錄后才能下訂單哦!
這篇文章主要介紹了C語言怎樣實現掃雷游戲,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
掃雷是一款大眾類的益智小游戲。游戲目標是根據點擊格子出現的數字找出所有非雷格子,同時避免踩雷,踩到一個雷即全盤皆輸。
1、創建一個用戶交互菜單
2、布雷函數
3、顯示掃雷矩陣
4、玩家自定義坐標
5、計算排雷數
頭文件 clear_mine.h
#pragma once //防止頭文件被重復包含 #define _CRT_SECURE_NO_WARNINGS 1 //實現 scanf 編譯通過 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #define ROW 8 #define COL 8 #define STYLE '?' //初始化 #define NUM 20 //埋雷數 extern void Game();
源文件main.c
向玩家展示菜單欄
#include "clear_mine.h" static void Menu() //用戶交互菜單 { printf("########################\n"); printf("# 1. Play 0.Exit #\n"); printf("########################\n"); } int main() { int quit = 0; int select = 0; while (!quit) { Menu(); printf("Please Enter# "); scanf("%d", &select); switch (select) { case 1: Game(); break; case 0: quit = 1; break; default: printf("Position Error, Try Again!\n"); break; } } printf("byebye!\n"); system("pause"); return 0; }
源文件clear_mine.c
#include "clear_mine.h" static void SetMines(char board[][COL], int row, int col) //布雷 { int count = NUM; while (count) { int x = rand() % (row - 2) + 1; int y = rand() % (col - 2) + 1; //隨機數生成 矩陣長寬分別-2 的隨機數 if (board[x][y] == '0') //非法判斷 只能同一個位置生成一個隨機數 { board[x][y] = '1'; count--; } } } static void ShowLine(int col) { for (int i = 0; i <= (col - 2); i++) { printf("----"); } printf("\n"); } static void ShowBoard(char board[][COL], int row, int col) //顯示掃雷矩陣 { printf(" "); for (int i = 1; i <= (col - 2); i++) //表頭數字打印 { printf("%d ", i); } printf("\n"); ShowLine(col); for (int i = 1; i <= (row - 2); i++) { printf("%-3d|", i); for (int j = 1; j <= (col - 2); j++) { printf(" %c |", board[i][j]); } printf("\n"); ShowLine(col); } } static char CountMines(char board[][COL], int x, int y) //計算某點周圍8個位置雷總數 { return board[x - 1][y - 1] + board[x - 1][y] + board[x - 1][y + 1] + \ board[x][y + 1] + board[x + 1][y + 1] + board[x + 1][y] + \ board[x + 1][y - 1] + board[x][y - 1] - 7 * '0'; } void Game() { srand((unsigned long)time(NULL)); //生成隨機數種子 char show_board[ROW][COL]; char mine_board[ROW][COL]; memset(show_board, STYLE, sizeof(show_board)); //生成用戶顯示矩陣 memset(mine_board, '0', sizeof(mine_board)); //生成掃雷矩陣 SetMines(mine_board, ROW, COL); //布雷 int count = (ROW - 2)*(COL - 2) - NUM; //排雷 while (count) { system("cls"); //清屏 ShowBoard(show_board, ROW, COL); printf("Please Enter Your Position <x,y># "); int x = 0; int y = 0; scanf("%d %d", &x, &y); if (x < 1 || x > 10 || y < 1 || y > 10) //非法性判斷 { printf("Postion Error!\n"); continue; } if (show_board[x][y] != STYLE){ printf("Postion Is not *\n"); continue; } if (mine_board[x][y] == '1'){ printf("game over!\n"); ShowBoard(mine_board, ROW, COL); break; } show_board[x][y] = CountMines(mine_board, x, y); count--; } }
初始化好的掃雷矩陣
游戲體驗結果
感謝你能夠認真閱讀完這篇文章,希望小編分享的“C語言怎樣實現掃雷游戲”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。