您好,登錄后才能下訂單哦!
本篇內容主要講解“C語言如何實現簡單掃雷小游戲”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言如何實現簡單掃雷小游戲”吧!
今天學習了制作簡易掃雷游戲,代碼如下
提示:以下是本篇文章正文內容,下面案例可供參考
代碼如下(示例):
#pragma once #define ROW 9 #define COL 9 #define ROWS ROW+2 #define COLS COL+2 #define EASY_COUNT 10 #include<stdlib.h> #include<time.h> //初始化棋盤 void initboard(char board[ROWS][COLS], int rows, int cols,char s); //打印棋盤 void displayboard(char board[ROWS][COLS], int row, int col); //布置雷 void setmine(char board[ROWS][COLS], int row, int col); //排查雷 void findmine(char board[ROWS][COLS], char show[ROWS][COLS], int row, int col);
1.引入庫
ps:game.h即前面的函數頭文件,引用自己創建的文件用“ ”
代碼如下(示例):
#define _CRT_SECURE_NO_WARNINGS #include"game.h" #include<stdio.h> void initboard(char board[ROWS][COLS], int rows, int cols,char s) { int i = 0; for (i = 0;i < rows;i++) { int j = 0; for (j = 0;j < cols;j++) { board[i][j] = s; } } } void displayboard(char board[ROWS][COLS], int row, int col) { int i = 0; printf("--------------------------------\n"); for (i = 0;i <= 9;i++) { printf("%d ", i); } printf("\n"); for (i = 1;i <= row;i++) { int j = 0; printf("%d ", i); for (j = 1;j <= col;j++) { printf("%c ", board[i][j]); } printf("\n"); } printf("--------------------------------\n"); } void setmine(char board[ROWS][COLS], int row, int col) { int count = EASY_COUNT; while (count) { //1.生成隨機下標(1-9) int x = rand() % row + 1; int y = rand() % col + 1; if (board[x][y] != '1')//布置雷要考慮某塊地方是否已經被安放過雷 { board[x][y] = '1'; count--;//判斷雷布置成功(沒有覆蓋其他雷),雷個數才減少 } } } int getminecount(char mine[ROWS][COLS],int x,int y) { return mine[x - 1][y] + mine[x - 1][y - 1] + 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';//符號數字-‘0'=數字(十進制),詳情見ascll碼表 } void findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) { int x = 0; int y = 0; int win = 0; while (win<row*col-EASY_COUNT) { printf("請輸入要排查的坐標:>"); scanf("%d %d", &x, &y); if (x >= 1 && x <= row && y >= 1 && y <= col) { if (mine[x][y] == '1') { printf("你踩到了雷!\n"); displayboard(mine, ROW, COL); break; } else { int count = getminecount(mine, x, y); show[x][y] = count + '0'; displayboard(show, ROW, COL); win++; } } else { printf("坐標輸入錯誤,請重新輸入:\n"); } } if (win == row * col - EASY_COUNT) { printf("You win!\n"); displayboard(show, ROW, COL); } }
2.主體文件
代碼如下(示例):
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include"game.h" void menu() { printf("************************\n"); printf("******** 1.play ********\n"); printf("******** 0.exit ********\n"); printf("************************\n"); } void game() { char mine[ROWS][COLS] = {0};//存放雷的信息 char show[ROWS][COLS] = {0};//存放排查出雷的信息 //初始化棋盤 initboard(mine, ROWS, COLS,'0');//用‘0'覆蓋 initboard(show, ROWS, COLS,'*');//用‘*'覆蓋 /*displayboard(mine,ROW,COL); displayboard(show, ROW, COL);*/ //布置雷 setmine(mine, ROW, COL); displayboard(show, ROW, COL); //displayboard(mine, ROW, COL);//對檢查能否通關時,進行一次排查要完成一次掃雷游戲,時間太長,也不方便,可以將9*9的棋盤雷設置為80個,打印出雷所在位置,再進行排查1次即可 //排查雷 findmine(mine,show,ROW,COL); } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("請輸入1進行游戲 或0退出游戲\n"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戲\n"); break; default: printf("選擇錯誤\n"); break; } } while (input); }
這里的制作的掃雷還有兩個地方需要酌情改進,一個是點擊一個空白處,可以擴散其他空白,減少游戲繁瑣性;另一個就是確定一個坐標為雷時,可以進行“插旗子”將雷區標記出來。其余的對雷進行隨機擺放、遍歷出雷的個數,確定該坐標附近有多少雷、踩雷或掃雷成功等問題在本文中都已得到解決,希望對讀者有所幫助。
到此,相信大家對“C語言如何實現簡單掃雷小游戲”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。