基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷游戲
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易掃雷游戲的具體代碼,供大家參考,具體內(nèi)容如下
1、頭文件
#define _CRT_SECURE_NO_WARNINGS //包含頭文件 #include <stdio.h> #include <stdlib.h> //定義數(shù)值 #define ROW 9 #define COL 9 #define ROWS ROW+2 #define COLS COL+2 //定義雷的數(shù)量 #define mine_num 10 //函數(shù)定義 //初始化 void init_board(char board[ROWS][COLS], int row, int col, char set); //打印棋盤(pán) void print_board(char board[ROWS][COLS], int row, int col); //布雷 void set_mine(char mine[ROWS][COLS], int row, int col); //掃雷 void find_mine(char mine[ROWS][COLS], char board[ROWS][COLS], int row, int col);
2、游戲?qū)崿F(xiàn)函數(shù)
#include "game.h"
//初始化
void init_board(char board[ROWS][COLS], int row, int col, char set) {
?? ?int x = 0;
?? ?int y = 0;
?? ?for (x = 0; x < row; x++) {
?? ??? ?for (y = 0; y < col; y++) {
?? ??? ??? ?board[x][y] = set;
?? ??? ?}
?? ?}
}
//打印棋盤(pán)
void print_board(char board[ROWS][COLS], int row, int col) {
?? ?int x = 0;
?? ?int y = 0;
?? ?for (x = 0; x <= row; x++) {
?? ??? ?printf("%d ", x);
?? ?}
?? ?printf("\n");
?? ?for (x = 1; x <= row; x++) {
?? ??? ?printf("%d ", x);
?? ??? ?for (y = 1; y <= col; y++) {
?? ??? ??? ?printf("%c ", board[x][y]);
?? ??? ?}
?? ??? ?printf("\n");
?? ?}
}
//布雷
void set_mine(char mine[ROWS][COLS], int row, int col) {
?? ?int count = mine_num;
?? ?while (count) {
?? ??? ?int x = rand() % row + 1;
?? ??? ?int y = rand() % col + 1;
?? ??? ?if (mine[x][y] == '0') {
?? ??? ??? ?mine[x][y] = '1';
?? ??? ??? ?count--;
?? ??? ?}
?? ?}
}
//計(jì)算周?chē)椎臄?shù)量
int get_mine(char mine[ROWS][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][y + 1]
?? ??? ?+ mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1]
?? ??? ?- 8 * '0';
}
//掃雷
void find_mine(char mine[ROWS][COLS], char board[ROWS][COLS], int row, int col) {
?? ?//獲取坐標(biāo)
?? ?int x = 0;
?? ?int y = 0;
?? ?int count = row * col - mine_num;
?? ?while (count) {
?? ??? ?printf("請(qǐng)輸入要排查的坐標(biāo)>:\n");
?? ??? ?scanf("%d%d", &x, &y);
?? ??? ?//判斷坐標(biāo)的合法性
?? ??? ?if (x >= 1 && y >= 1 && x <= row && y <= col) {
?? ??? ??? ?if (mine[x][y] == '1') {
?? ??? ??? ??? ?printf("是雷?。?!炸死了\n");
?? ??? ??? ??? ?print_board(mine, ROW, COL);
?? ??? ??? ??? ?break;
?? ??? ??? ?}
?? ??? ??? ?else {
?? ??? ??? ??? ?int num = get_mine(mine, x, y);
?? ??? ??? ??? ?board[x][y] = num + '0';
?? ??? ??? ??? ?count--;
?? ??? ??? ??? ?print_board(board, ROW, COL);
?? ??? ??? ?}
?? ??? ?}
?? ??? ?else {
?? ??? ??? ?printf("你輸入的坐標(biāo)不合法,請(qǐng)重新輸入\n");
?? ??? ?}
?? ?}
?? ?if (count == 0) {
?? ??? ?printf("恭喜你排雷成功?。?!\n");
?? ?}
}3、主程序
#include "game.h"
//打印游戲菜單
void menu() {
?? ?printf("**************************\n");
?? ?printf("********* 掃 ? 雷 ********\n");
?? ?printf("********* 1. play ********\n");
?? ?printf("********* 0. exit ********\n");
?? ?printf("**************************\n");
}
//游戲?qū)崿F(xiàn)
void game() {
?? ?//創(chuàng)建數(shù)組存儲(chǔ)雷和游戲棋盤(pán)
?? ?char mine[ROWS][COLS] = { 0 };
?? ?char board[ROWS][COLS] = { 0 };
?? ?//初始化布雷
?? ?init_board(mine, ROWS, COLS, '0');
?? ?//初始化游戲棋盤(pán)
?? ?init_board(board, ROWS, COLS, '*');
?? ?//打印布雷棋盤(pán)
?? ?//printf("------布雷棋盤(pán)------\n");
?? ?//print_board(mine, ROW, COL);
?? ?//打印掃雷棋盤(pán)
?? ?printf("------掃雷棋盤(pán)------\n");
?? ?print_board(board, ROW, COL);
?? ?//布雷
?? ?set_mine(mine, ROW, COL);
?? ?printf("------布雷棋盤(pán)------\n");
?? ?//print_board(mine, ROW, COL);
?? ?//掃雷
?? ?find_mine(mine, board, ROW, COL);
}
int main(void) {
?? ?int num = 0;
?? ?srand((unsigned int)time(NULL));
?? ?do {
?? ??? ?menu();
?? ??? ?printf("請(qǐng)選擇菜單!>:");
?? ??? ?scanf("%d", &num);
?? ??? ?switch (num) {
?? ??? ?case 1:
?? ??? ??? ?game();
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?printf("退出游戲\n");
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?printf("你的選擇有誤,請(qǐng)重新選擇\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?} while (num);
?? ?system("pause");
?? ?return 0;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語(yǔ)言實(shí)現(xiàn)自定義掃雷游戲(遞歸版)
- C語(yǔ)言實(shí)現(xiàn)第一次防死版掃雷游戲
- C語(yǔ)言實(shí)現(xiàn)遞歸版掃雷游戲?qū)嵗?/a>
- C語(yǔ)言實(shí)現(xiàn)掃雷游戲詳解(附源碼)
- 基于C語(yǔ)言掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn)
- C語(yǔ)言實(shí)現(xiàn)掃雷游戲小項(xiàng)目
- 基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷小游戲
- C語(yǔ)言掃雷游戲的簡(jiǎn)單實(shí)現(xiàn)
- C語(yǔ)言實(shí)現(xiàn)掃雷游戲詳細(xì)流程
相關(guān)文章
Visual Studio新建類從默認(rèn)internal改為public
本文將介紹如何將Visual Studio中的internal修飾符更改為public,以實(shí)現(xiàn)更廣泛的訪問(wèn)和重用,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
c++ 連接兩個(gè)字符串實(shí)現(xiàn)代碼 實(shí)現(xiàn)類似strcat功能
c++ 連接兩個(gè)字符串實(shí)現(xiàn)代碼 實(shí)現(xiàn)類似strcat功能,需要的朋友可以參考下2012-05-05
C語(yǔ)言實(shí)現(xiàn)數(shù)獨(dú)游戲的求解
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)數(shù)獨(dú)游戲的求解,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
C++實(shí)現(xiàn)將內(nèi)容寫(xiě)入文件的方法總結(jié)
本文主要總結(jié)了一下C/C++將內(nèi)容寫(xiě)入文件的方法,C的方法有些單調(diào),畢竟沒(méi)有庫(kù)函數(shù)。C++則豐富些,下面我把搜集到的整理一下,供大家參考2023-04-04
C++中Operator類型強(qiáng)制轉(zhuǎn)換成員函數(shù)解析
轉(zhuǎn)換函數(shù)定義了由<類型說(shuō)明符1>到<類型說(shuō)明符2>之間的映射關(guān)系。可見(jiàn),轉(zhuǎn)換函數(shù)是用來(lái)將一種類型的數(shù)據(jù)轉(zhuǎn)換成為另一種類型2013-09-09
用c++實(shí)現(xiàn)將文本每個(gè)單詞首字母轉(zhuǎn)換為大寫(xiě)
本篇文章是對(duì)用c++實(shí)現(xiàn)將文本每個(gè)單詞首字母轉(zhuǎn)換為大寫(xiě)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05

