摘要:掃雷簡單的可控化掃雷文章目錄掃雷分析一,頭文件二主函數(shù),二初始化打印布置雷找雷代碼整合主要是理解,明確思路,理清思路就是對所學(xué)知識的簡單應(yīng)用分析玩家選擇雷格,出現(xiàn)的數(shù)字即周圍一圈所包含雷的個數(shù),當(dāng)我們不去點(diǎn)擊格子,我們
簡單的可控化掃雷
game.h 示例:完成一個目的,可以先把這一步想好,后續(xù)反復(fù)打磨填充。 代碼如下(示例): 代碼如下(示例): 將雷布置在不可見背后棋盤 game.h test.c game.c 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。 轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/123506.html文章目錄
分析
玩家選擇雷格,出現(xiàn)的數(shù)字即周圍一圈所包含雷的個數(shù),當(dāng)我們不去點(diǎn)擊格子,我們不知道其下的情況,可以試想是不是有一個在背后處理雷的布局,表面有一個玩家操控的布局,我們只需要建立簡單的聯(lián)系使兩個布局發(fā)揮作用。
一,頭文件
#include
二、主函數(shù)
int main(){ test();//游戲最大框架,開始界面的進(jìn)入游戲與相關(guān)選擇 return 0;}
1.test
void test(){ srand((unsigned int)time(NULL)); menu();//菜單打印 int input=0; printf("請選擇>"); do//由選擇來決定下文 { scanf("%d",&input); switch (input) { case 1: game(); break; case 2: break; default: printf("輸入錯誤請重輸入"); break; } } while (1);}
menu
void menu(){ printf("************************************/n"); printf("******* 1 . play *********/n"); printf("******* 2 . exit *********/n"); printf("************************************/n");}
2, game
void game(){//相同類型方便后期啊建立聯(lián)系,對背后的修改可反映到展示函數(shù) char mine[ROWS][COLS] = { 0 };//背后 char show[ROWS][COLS] = { 0 };//玩家看到的//將背后全初始化為0,雷放為一 intborad(mine, ROWS, COLS, "0"); intborad(show, ROWS, COLS, "*");//注釋代碼可供開發(fā)者在制作過程中檢查 //disprond(mine, ROW, COL); //disprond(show, ROW, COL); setball(mine, ROW, COL);//布置雷 //setball(show, ROW, COL); disprond(show, ROW, COL); //disprond(show, ROW, COL); findball(mine, show, ROW, COL);//排雷且建立聯(lián)系}
二、game.c
1.初始化
void intborad(char board[ROWS][COLS], int rows, int cols, char ret)
void intborad(char board[ROWS][COLS], int rows, int cols, char ret){ int i=0; int j=0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { board[i][j] = ret; } }}
2.打印
void disprond(char board[ROWS][COLS], int row, int col){ int i=0; int j=0; //列(列行坐標(biāo)方便玩家操作) for (i = 0; i <= row; i++) { printf(" %d", i); } printf("/n"); //行以及內(nèi)容 for (i = 1; i <= col; i++) { printf(" %d", i); for (j = 1; j <= col; j++) { printf(" %c", board[i][j]); } printf("/n"); }}
3.布置雷
void setball(char board[ROWS][COLS], int row, int col)
void setball(char board[ROWS][COLS], int row, int col){ int count= EASY_COUNT;//見頭文件,埋十顆 while (count) { int x = rand() % row + 1;//隨機(jī)數(shù) int y = rand() % col + 1; if (board[x][y] == "0") { board[x][y] = "1";//雷為1 } count--; }}
4.找雷
void findball(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("請輸入要尋找的坐標(biāo):>"); scanf("%d %d", &x, &y); if (x >= 1 && x <= row && y >= 1 && y <= col)//為了最外圍多加一圈,現(xiàn)在是9*9內(nèi) { if (mine[x][y] == "1")//布置雷時將雷設(shè)為1 { printf("恭喜你被炸死了/n"); disprond(mine, row, col); break; } else { int n = get_mine_count(mine, x, y);//游戲有點(diǎn)某一個擴(kuò)散一片的現(xiàn)象,就周圍都為0,需要不斷尋找 show[x][y] = n + "0";//整形轉(zhuǎn)化為字符,建立聯(lián)系 disprond(show, row, col); win++; } } else { printf("請輸入正確坐標(biāo)/n"); } } if (win == row * col - EASY_COUNT)//71 { printf("排雷成功"); disprond(mine, row, col); }}
.get_mine_count(mine, x, y)
static int get_mine_count(char mine[ROWS][COLS], int x, int y){//檢索周圍雷的個數(shù) return 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] + mine[x - 1][y + 1] - 8 * "0";}
代碼整合
#pragma once#include
#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){ printf("************************************/n"); printf("******* 1 . play *********/n"); printf("******* 2 . exit *********/n"); printf("************************************/n");}void game(){ char mine[ROWS][COLS] = { 0 }; char show[ROWS][COLS] = { 0 }; intborad(mine, ROWS, COLS, "0"); intborad(show, ROWS, COLS, "*"); //disprond(mine, ROW, COL); //disprond(show, ROW, COL); setball(mine, ROW, COL); //setball(show, ROW, COL); disprond(show, ROW, COL); //disprond(show, ROW, COL); findball(mine, show, ROW, COL);}void test(){ srand((unsigned int)time(NULL)); menu(); int input=0; printf("請選擇>"); do { scanf("%d",&input); switch (input) { case 1: game(); break; case 2: break; default: printf("輸入錯誤請重輸入"); break; } } while (1);}int main(){ test(); return 0;}
#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void intborad(char board[ROWS][COLS], int rows, int cols, char ret){ int i=0; int j=0; for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { board[i][j] = ret; } }}void disprond(char board[ROWS][COLS], int row, int col){ int i=0; int j=0; //列 for (i = 0; i <= row; i++) { printf(" %d", i); } printf("/n"); //行以及內(nèi)容 for (i = 1; i <= col; i++) { printf(" %d", i); for (j = 1; j <= col; j++) { printf(" %c", board[i][j]); } printf("/n"); }}void setball(char board[ROWS][COLS], int row, int col){ int count= EASY_COUNT; while (count) { int x = rand() % row + 1; int y = rand() % col + 1; if (board[x][y] == "0") { board[x][y] = "1"; } count--; }}static int get_mine_count(char mine[ROWS][COLS], int x, int y){ return 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] + mine[x - 1][y + 1] - 8 * "0";}void findball(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("請輸入要尋找的坐標(biāo):>"); scanf("%d %d", &x, &y); if (x >= 1 && x <= row && y >= 1 && y <= col) {
摘要:函數(shù)游戲菜單請選擇掃雷游戲退出游戲選擇錯誤解析函數(shù)內(nèi)部利用時間戳,形成隨機(jī)數(shù),主要目的是實(shí)現(xiàn)游戲中地雷的隨機(jī)埋放。 前言 本篇文章使用C語言實(shí)現(xiàn)簡單小游戲---掃雷。(文章最后有完整代碼鏈接) 想必大多數(shù)人都玩過或者了解過掃雷的游戲規(guī)則,但是在這里,我們在一起重溫一下掃雷的游戲規(guī)則,也更好...
摘要:第二條軍規(guī)必須畫圖理解,內(nèi)存布局語言是一門偏底層的語言,可以直接操作訪問內(nèi)存的所以我們應(yīng)該清楚知道,寫出的代碼所對應(yīng)的內(nèi)存布局。如果想學(xué)好語言,三條軍規(guī)勢在必行最后,關(guān)于學(xué)好語言我想說的也就到這里了,感謝你的觀看。 目錄 一.講這個主題的原因 二.關(guān)于選擇問題 三.具體學(xué)習(xí)方法 一.為什么要...
摘要:上一期咱們用語言實(shí)現(xiàn)了三子棋的小游戲語言實(shí)現(xiàn)三子棋今天我們再來寫個掃雷的游戲,說起掃雷,相信大家都不陌生,可能許多朋友還是玩掃雷的高手。 ? ? ?上一期咱們用C語言實(shí)現(xiàn)了三子棋的小游戲? C語言實(shí)現(xiàn)三子棋? ? ? ?今天我們再來寫個掃雷的游戲,說起掃雷,相信大家都不陌生,可能許多朋友還是...
摘要:展示雷盤和初始化雷盤不一樣,展示雷盤只需要用即可,并不需要將都展示出來,只是為了我們更好的計(jì)算掃雷的位置周圍的雷的數(shù)量。 目錄 1、需求分析 2、程序架構(gòu) 3、代碼實(shí)現(xiàn)(分函數(shù)呈現(xiàn)) (1)主函數(shù)代碼實(shí)現(xiàn) 分析: 異常處理: (2)游戲主函數(shù)實(shí)現(xiàn) 分析: (3)初始化函數(shù)的實(shí)現(xiàn) 分析: (4...
摘要:玩家選擇開始游戲后,出現(xiàn)雷盤,并且隨機(jī)布置雷。雷盤的數(shù)組大小為,方便計(jì)算掃雷時周圍雷的數(shù)量,并防止數(shù)組越界。放置布置的雷的信息放置排查出雷的信息初始化雷盤初始化展示界面打印展示界面效果如下布置雷隨機(jī)在數(shù)組中讓十個變成作為雷。 目錄 前言 一、游戲思路 二、游戲框架 1.菜單界面 1.菜單:...
閱讀 3058·2021-11-16 11:45
閱讀 3578·2021-09-29 09:34
閱讀 701·2021-08-16 10:50
閱讀 1569·2019-08-30 15:52
閱讀 1961·2019-08-30 15:45
閱讀 858·2019-08-29 15:23
閱讀 1922·2019-08-26 13:51
閱讀 3298·2019-08-26 12:23