成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

掃雷小游戲(C語言實現(xiàn))

Coding01 / 2824人閱讀

摘要:寫在前面我們已經(jīng)寫過了三子棋小游戲肯定沒玩過癮,我們再寫個掃雷小游戲吧目錄寫在前面認識游戲游戲規(guī)則游戲框架游戲?qū)崿F(xiàn)效果展示全部代碼文件文件文件認識游戲相信大家對掃雷都不陌生每臺電腦必備的小游戲游戲規(guī)則就是在規(guī)定的時間將

寫在前面

我們已經(jīng)寫過了三子棋小游戲肯定沒玩過癮,我們再寫個掃雷小游戲吧!

認識游戲

相信大家對掃雷都不陌生!每臺電腦必備的小游戲!

游戲規(guī)則

就是在規(guī)定的時間將埋藏的地雷全部找到,即游戲勝利!

勝利條件:你需要在不點錯雷的情況下盡可能快的將所有的雷都標記出來,如果你點錯,就得重新開始,所以掃雷也有一定的運氣成分。

簡單說
就是將所有不是雷的地方全部標記出來,剩下地雷,游戲勝利,如果標記點到了地雷,游戲失?。?/p>

如何找到不是地雷標記出來呢?

每點開一個小格子,如果是雷,就游戲結(jié)束,如果不是就會出現(xiàn)數(shù)字,出現(xiàn)的數(shù)字表示,周圍一圈雷的個數(shù)!

2表示周圍一圈的地雷數(shù)為2個。
根據(jù)這些數(shù)字即可將地雷全部排除走向勝利!

游戲框架

游戲框架和三子棋一樣!

//游戲框架	int input = 0;	do 	{		menu();//菜單		scanf("%d", &input); //選擇		switch (input)		{		case 1:game();			break;		case 0:printf("退出游戲/n");			break;		default:printf("輸入錯誤,請重新輸入/n");			break;		}	} while (input);

我們寫小游戲的框架基本上都是這樣!

游戲?qū)崿F(xiàn)

游戲的實現(xiàn)是我們這個游戲的重點內(nèi)容!
我們?nèi)绾尾拍軐⒂螒驅(qū)崿F(xiàn)呢?
先從原理入手!

  • 埋雷
    如何買雷呢?
    我們所玩的掃雷都是由許多小格子組成的矩陣!
    所以我們可以利用二維數(shù)組埋地雷!

  • 顯示該點周圍雷的個數(shù)
    周圍雷數(shù)的計算,就是判斷改點周圍是非為雷,并且計算個數(shù)顯示給玩家!

  • 判斷游戲狀態(tài)
    點到地雷說明游戲結(jié)束,將所有地雷找到,游戲勝利。

實現(xiàn)思想
用一個二維數(shù)組埋雷
另一個二維數(shù)組顯示給玩家

當我們將雷弄成AxA的雷陣藏雷,會發(fā)現(xiàn)如果我們進行周圍雷數(shù)的查找是會發(fā)生數(shù)組越界,所以我們可以創(chuàng)建(A+2)x(A+2)的雷陣,然后埋雷在AxA中!

void game(){	//初始化布雷數(shù)組—— > 初始化棋盤數(shù)組—— > 	//設(shè)置地雷—— > 顯示棋盤—— > 玩家掃雷	//埋雷	char mine[ROWS][COLS] = { 0 }; //雷區(qū)圖	char show[ROWS][COLS] = { 0 }; //玩家圖	//初始化棋盤	InitBoard(mine, ROWS, COLS,"0");	InitBoard(show, ROWS, COLS, "*");	//設(shè)置地雷	SetMine(mine, ROW, COL,MineCount);	PrintBoard(show, ROW, COL);	//玩家掃雷	int count = ROW*COL-MineCount;	while (CheckMine(mine,show, ROW, COL))	{		count--;		PrintBoard(show, ROW, COL);		if (count == 0)		{			printf("恭喜你,游戲勝利/n");			PrintBoard(mine, ROW, COL);			break;		}	}}
//初始化棋盤void InitBoard(char board[ROW][COL], int row, int col, char x){	int i = 0;	for (i = 0; i < row; i++)	{		int j = 0;		for (j = 0; j < col; j++)		{			board[i][j] = x;		}	}	return ;}
//打印棋盤void PrintBoard(char board[ROW][COL], int row, int col){	  int i = 0;	  //打印列號	  for (i = 0; i <= col; i++)		  printf(" %d ", i);	      printf("/n");	for (i = 0; i < row; i++)	{		printf(" %d ", i+1);		int j = 0;		for (j = 0; j <col; j++)		{			printf(" %c ", board[i][j]);		}		printf("/n");	}	return;}
//埋雷void SetMine(char board[ROW][COL], int row, int col, int count){	while (count)	{		int i = rand() % row;		int j = rand() % col;		if (board[i][j] == "0")		{			board[i][j] = "1";			count--;	    }	}}

核心代碼

//查雷int CheckMine(char mine[ROW][COL],char show[ROW][COL], int row, int col){	printf("請輸入你要掃雷的坐標:>");	while (1)	{		int i = 0, j = 0;		scanf("%d%d", &i, &j);		if (i >=1 && i <= row && j >=1 && j <= col)		{			if (mine[i-1][j-1] != "1")			{				int  count=IsMineCount(mine,i-1,j-1);				show[i-1][j-1] = count+"0";				return 1;			}			else			{				printf("很遺憾,你被炸死了/n");				PrintBoard(mine, ROW, COL);				return 0;			}		}	}	}int  IsMineCount(char mine[ROW][COL], int x, int y){	int count = 0;	int i= 0;	for (i = x - 1; i <= x + 1; i++)	{  		int j = 0;		for (j = y - 1; j <=y + 1; j++)		{			if (mine[i][j] == "1")			{				count++;			}		}	}	return count;}

效果展示



全部代碼

test.c文件

#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h"void menu(){	printf("******************************/n");	printf("**********    1.play    ******/n");	printf("**********    0.exit    ******/n");	printf("******************************/n");	printf("Input(1/0):>");}void game(){	//初始化布雷數(shù)組—— > 初始化棋盤數(shù)組—— > 設(shè)置地雷	//—— > 顯示棋盤—— > 玩家掃雷	//埋雷	char mine[ROWS][COLS] = { 0 }; //雷區(qū)圖	char show[ROWS][COLS] = { 0 }; //玩家圖	//初始化棋盤	InitBoard(mine, ROWS, COLS,"0");	InitBoard(show, ROWS, COLS, "*");	//設(shè)置地雷	SetMine(mine, ROW, COL,MineCount);	PrintBoard(show, ROW, COL);	//玩家掃雷	int count = ROW*COL-MineCount;	while (CheckMine(mine,show, ROW, COL))	{		count--;		PrintBoard(show, ROW, COL);		if (count == 0)		{			printf("恭喜你,游戲勝利/n");			break;		}	}}

game.h文件

#pragma once#include#include#include#define ROW 9  #define COL 9#define ROWS ROW+2#define COLS COL+2#define MineCount 6void InitBoard(char board[ROWS][COLS],int row,int col,char x);void SetMine(char board[ROWS][COLS], int row, int col,int count);void PrintBoard(char board[ROW][COL], int row, int col);int  CheckMine (char mine[ROWS][COLS], char show[ROW][COL], int row, int col);int IsMineCount(char mine[ROWS][COLS],int i, int j);

game.c文件

#include"game.h"void InitBoard(char board[ROW][COL], int row, int col, char x){	int i = 0;	for (i = 0; i < row; i++)	{		int j = 0;		for (j = 0; j < col; j++)		{			board[i][j] = x;		}	}	return ;}void SetMine(char board[ROW][COL], int row, int col, int count){	while (count)	{		int i = rand() % row;		int j = rand() % col;		if (board[i][j] == "0")		{			board[i][j] = "1";			count--;	    }	}}void PrintBoard(char board[ROW][COL], int row, int col){	  int i = 0;	  //打印列號	  for (i = 0; i <= col; i++)		  printf(" %d ", i);	      printf("/n");	for (i = 0; i < row; i++)	{		printf(" %d ", i+1);		int j = 0;		for (j = 0; j <col; j++)		{			printf(" %c ", board[i][j]);		}		printf("/n");	}	return;}int CheckMine(char mine[ROW][COL],char show[ROW][COL], int row, int col){	printf("請輸入你要掃雷的坐標:>");	while (1)	{		int i = 0, j = 0;		scanf("%d%d", &i, &j);		if (i >=1 && i <= row && j >=1 && j <= col)		{			if (mine[i-1][j-1] != "1")			{				int  count=IsMineCount(mine,i-1,j-1);				show[i-1][j-1] = count+"0";				return 1;			}			else			{				printf("很遺憾,你被炸死了/n");				return 0;			}		}	}	}int  IsMineCount(char mine[ROW][COL], int x, int y){	int count = 0;	int i= 0;	for (i = x - 1; i <= x + 1; i++)	{  		int j = 0;		for (j = y - 1; j <=y + 1; j++)		{			if (mine[i][j] == "1")			{				count++;			}		}	}	return count;}
持續(xù)更新.....

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/119105.html

相關(guān)文章

  • [ C語言 ] 掃雷 ------> 用C語言實現(xiàn)game2

    摘要:函數(shù)游戲菜單請選擇掃雷游戲退出游戲選擇錯誤解析函數(shù)內(nèi)部利用時間戳,形成隨機數(shù),主要目的是實現(xiàn)游戲中地雷的隨機埋放。 前言 本篇文章使用C語言實現(xiàn)簡單小游戲---掃雷。(文章最后有完整代碼鏈接) 想必大多數(shù)人都玩過或者了解過掃雷的游戲規(guī)則,但是在這里,我們在一起重溫一下掃雷的游戲規(guī)則,也更好...

    I_Am 評論0 收藏0
  • C語言實現(xiàn)入門級游戲——掃雷

    摘要:上一期咱們用語言實現(xiàn)了三子棋的小游戲語言實現(xiàn)三子棋今天我們再來寫個掃雷的游戲,說起掃雷,相信大家都不陌生,可能許多朋友還是玩掃雷的高手。 ? ? ?上一期咱們用C語言實現(xiàn)了三子棋的小游戲? C語言實現(xiàn)三子棋? ? ? ?今天我們再來寫個掃雷的游戲,說起掃雷,相信大家都不陌生,可能許多朋友還是...

    nevermind 評論0 收藏0
  • C語言實現(xiàn)游戲】(二)掃雷(遞歸實現(xiàn)排雷)

    摘要:玩家選擇開始游戲后,出現(xiàn)雷盤,并且隨機布置雷。雷盤的數(shù)組大小為,方便計算掃雷時周圍雷的數(shù)量,并防止數(shù)組越界。放置布置的雷的信息放置排查出雷的信息初始化雷盤初始化展示界面打印展示界面效果如下布置雷隨機在數(shù)組中讓十個變成作為雷。 目錄 前言 一、游戲思路 二、游戲框架 1.菜單界面 1.菜單:...

    U2FsdGVkX1x 評論0 收藏0
  • C語言初階學習——掃雷游戲(遞歸)

    摘要:目錄前言前言前期的準備前期的準備游戲代碼的具體實現(xiàn)游戲代碼的具體實現(xiàn)完整版的掃雷小游戲代碼完整版的掃雷小游戲代碼總結(jié)總結(jié)前言掃雷是一款大眾類的益智小游戲,于年發(fā)行。 目錄 前言 前期的準備 游戲代碼的具體實現(xiàn) 1、text.c 2、game.h 3、game.c 完整版的掃雷小游戲代碼: 1...

    zhonghanwen 評論0 收藏0
  • 掃雷C語言版)

    摘要:展示雷盤和初始化雷盤不一樣,展示雷盤只需要用即可,并不需要將都展示出來,只是為了我們更好的計算掃雷的位置周圍的雷的數(shù)量。 目錄 1、需求分析 2、程序架構(gòu) 3、代碼實現(xiàn)(分函數(shù)呈現(xiàn)) (1)主函數(shù)代碼實現(xiàn) 分析: 異常處理: (2)游戲主函數(shù)實現(xiàn) 分析: (3)初始化函數(shù)的實現(xiàn) 分析: (4...

    EscapedDog 評論0 收藏0

發(fā)表評論

0條評論

Coding01

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<