bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

如何利用C語言實現簡單掃雷小游戲-創新互聯

這篇文章主要講解了“如何利用C語言實現簡單掃雷小游戲”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何利用C語言實現簡單掃雷小游戲”吧!

創新互聯建站主打移動網站、成都做網站、成都網站設計、網站改版、網絡推廣、網站維護、域名與空間、等互聯網信息服務,為各行業提供服務。在技術實力的保障下,我們為客戶承諾穩定,放心的服務,根據網站的內容與功能再決定采用什么樣的設計。最后,要實現符合網站需求的內容、功能與設計,我們還會規劃穩定安全的技術方案做保障。

掃雷是一款大眾類的益智小游戲。游戲目標是在短的時間內根據點擊格子出現的數字找出所有非雷格子,同時避免踩雷,踩到一個雷即全盤皆輸。

首先帶大家簡單來了解一下掃雷的游戲機制:

隨便點一個格子,會有一塊,上面的數字就代表數字周圍八個格子會有幾個雷,是1他周圍就只有1個雷,2就有兩個雷,以此類推,直到找出全部沒有雷的格子就算玩家贏。只要點到一個有雷的格子就判定玩家輸。

了解了 機制之后就來編寫程序。將程序分為test.c、game.c和game.h三個部分。其中test.c中編寫主函數,game.c中實現游戲的功能,game.h中存放頭文件以及對于函數的聲明。

在test.c模塊中,首先定義一個menu來存放一個游戲開始的菜單

int menu(){ printf("********************\n"); printf("********************\n"); printf("****1、開始游戲*****\n"); printf("****0、退出游戲*****\n"); printf("********************\n"); printf("********************\n");}

編寫game函數用來存放游戲實現模塊

void game(){}

編寫主函數來調用game。通過do–while循環來實現menu,并用switch語句來選擇游戲開始和結束

int main(){ int input = 0; do { menu(); printf("請選擇:\n"); scanf("%d", &input); switch (input) { case 1: printf("游戲開始:\n"); game(); break; case 0: printf("游戲退出\n"); break; default: printf("請輸入正確的數字:\n"); break; } } while (input); return 0;}

現在進入game模塊的代碼實現

首先需要編寫一個函數來實現掃雷的界面這里我們用InitBoard函數來實現9x9的掃雷界面。用*代表沒有被點開的格子,用1表示雷,0表示空格子。

void InitBoard(char board[][COLS], int rows, int cols, char set){ int i = 0; int j = 0; for (i = 0;i < rows;i++) { for (j = 0;j < cols;j++) { board[i][j] = set; } }}

在test.c中的game函數中調用函數

//存放雷  char mine[ROWS][COLS] = { 0 }; //排查雷  char mineInfo[ROWS][COLS] = { 0 }; InitBoard(mine, ROWS, COLS, '0'); InitBoard(mineInfo, ROWS, COLS, '*');

在game.c模塊中編寫ShowBoard函數將之前編寫的掃雷界面打印出來

void ShowBoard(char board[][COLS],int row,int col){ int i = 0; int j = 0; printf("===================================\n"); for (i = 0;i <= row;i++) { printf("%d ", i);    //打印 橫坐標 } printf("\n"); for (i = 1;i <=col;i++) { printf("%d ",i);     //打印縱坐標 for (j = 1;j <= col;j++) { printf("%c ", board[i][j]); } printf("\n"); } printf("===================================\n");}

此時運行結果為;

再來編寫SetMine函數設置雷用rand函數隨機設置雷的坐標,雷的數量為MINE_NUM這里我們設置10個雷。

void SetMine(char mine[][COLS], int row, int col){ int x = 0; int y = 0; int count = 0; while (count < MINE_NUM) { x = rand() % row + 1; y = rand() % col + 1; if (mine[x][y] == '0') { mine[x][y] = '1'; count++; } }}

用函數來計算當前格子周圍雷的個數。注意由于我們定義的雷為char類型,在計算數量的時候需要將其轉化為int類型。將加起來的數據-8 * ‘0'。

static int GetMineCount(char mine[][COLS], 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 + 1][y + 1] + mine[x + 1][y] +   + mine[x + 1][y - 1] + mine[x][y - 1] - 8 * '0';}

最后我們用FindMine函數來實現玩家掃雷的操作

void FindMine(char mine[][COLS], char mineInfo[][COLS], int row, int col){ int count = 0; int x = 0; int y = 0; while (count < row*col - MINE_NUM) { printf("請輸入坐標:"); scanf("%d%d", &x, &y); if (x >= 1 && y <= 9 && y >= 1 && x <= 9) { if (mine[x][y] == '1') { printf("你被炸死了\n"); ShowBoard(mine, row, col); break; } else { int ret = GetMineCount(mine, x, y); mineInfo[x][y] = ret + '0'; ShowBoard(mineInfo, row, col); count++; } } else { printf("輸入的坐標不合法\n"); } }}

記得在test.c中的game函數中調用game.c中實現游戲功能的函數。

void game(){ char mine[ROWS][COLS] = { 0 }; char mineInfo[ROWS][COLS] = { 0 }; InitBoard(mine, ROWS, COLS, '0'); InitBoard(mineInfo, ROWS, COLS, '*'); ShowBoard(mineInfo, ROW, COL); SetMine(mine, ROW, COL); FindMine(mine, mineInfo, ROW, COL);}

頭文件的編寫:

#ifndef _GAME_H_#define _GAME_H_#include<stdio.h>#include<stdlib.h>#include<time.h>#define MINE_NUM 10#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2void InitBoard(char board[][COLS], int rows, int cols, char set);void ShowBoard(char board[][COLS], int row, int col);void SetMine(char mine[][COLS], int row, int col);void FindMine(char mine[][COLS], char mineInfo[][COLS], int row, int col);#endif // !_GAME_H

至此一個簡單的掃雷程序編寫完畢

感謝各位的閱讀,以上就是“如何利用C語言實現簡單掃雷小游戲”的內容了,經過本文的學習后,相信大家對如何利用C語言實現簡單掃雷小游戲這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯網站建設公司,,小編將為大家推送更多相關知識點的文章,歡迎關注!

當前標題:如何利用C語言實現簡單掃雷小游戲-創新互聯
文章地址:http://vcdvsql.cn/article32/iehsc.html

成都網站建設公司_創新互聯,為您提供小程序開發外貿建站自適應網站網站導航網站策劃云服務器

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

小程序開發