基于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ǔ)言?huà)呃子螒虻脑O(shè)計(jì)與實(shí)現(xiàn)
- C語(yǔ)言實(shí)現(xiàn)掃雷游戲小項(xiàng)目
- 基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的掃雷小游戲
- C語(yǔ)言?huà)呃子螒虻暮?jiǎn)單實(shí)現(xiàn)
- C語(yǔ)言實(shí)現(xiàn)掃雷游戲詳細(xì)流程
相關(guān)文章
C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié)
這篇文章主要介紹了C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié),包括getpw()函數(shù)和getpwnam()函數(shù)以及getpwuid()函數(shù),需要的朋友可以參考下2015-08-08C++?OpenGL實(shí)現(xiàn)旋轉(zhuǎn)立方體的繪制
這篇文章主要主要為大家詳細(xì)介紹了如何利用C++和OpenGL實(shí)現(xiàn)旋轉(zhuǎn)立方體的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手嘗試一下2022-07-07C++實(shí)現(xiàn)LeetCode(32.最長(zhǎng)有效括號(hào))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(32.最長(zhǎng)有效括號(hào)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07老生常談C語(yǔ)言動(dòng)態(tài)函數(shù)庫(kù)的制作和使用(推薦)
下面小編就為大家?guī)?lái)一篇老生常談C語(yǔ)言動(dòng)態(tài)函數(shù)庫(kù)的制作和使用(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08C和MFC巧妙獲取外網(wǎng)IP的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了C和MFC巧妙獲取外網(wǎng)IP的兩種實(shí)現(xiàn)方法,功能非常的實(shí)用,需要的朋友可以參考下2014-07-07C語(yǔ)言+MySQL實(shí)現(xiàn)推箱子游戲
經(jīng)典的推箱子是一個(gè)來(lái)自日本的古老游戲,目的是在訓(xùn)練你的邏輯思考能力。本文將通過(guò)C語(yǔ)言和MySQL實(shí)現(xiàn)推箱子這一經(jīng)典游戲,感興趣的可以了解一下2022-02-02C語(yǔ)言程序設(shè)計(jì)之指針的應(yīng)用詳解
為了讓大家能夠更準(zhǔn)確的了解C語(yǔ)言中指針的使用,本文為大家準(zhǔn)備了四個(gè)指針相關(guān)的例題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-11-11C++實(shí)現(xiàn)簡(jiǎn)單的信息管理系統(tǒng)
這篇文章主要為大家介紹了C++實(shí)現(xiàn)簡(jiǎn)單的信息管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04C++中名稱(chēng)空間namespace的使用方法示例
namespace中文意思是命名空間或者叫名字空間,下面這篇文章主要給大家介紹了關(guān)于C++中名稱(chēng)空間namespace使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。2017-12-12