您好,登錄后才能下訂單哦!
本篇內容主要講解“如何使用C語言代碼實現掃雷游戲”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何使用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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。