基于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); //打印棋盤 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;
?? ??? ?}
?? ?}
}
//打印棋盤
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ì)算周圍雷的數(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ǔ)雷和游戲棋盤
?? ?char mine[ROWS][COLS] = { 0 };
?? ?char board[ROWS][COLS] = { 0 };
?? ?//初始化布雷
?? ?init_board(mine, ROWS, COLS, '0');
?? ?//初始化游戲棋盤
?? ?init_board(board, ROWS, COLS, '*');
?? ?//打印布雷棋盤
?? ?//printf("------布雷棋盤------\n");
?? ?//print_board(mine, ROW, COL);
?? ?//打印掃雷棋盤
?? ?printf("------掃雷棋盤------\n");
?? ?print_board(board, ROW, COL);
?? ?//布雷
?? ?set_mine(mine, ROW, COL);
?? ?printf("------布雷棋盤------\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)文章
C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié)
這篇文章主要介紹了C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié),包括getpw()函數(shù)和getpwnam()函數(shù)以及getpwuid()函數(shù),需要的朋友可以參考下2015-08-08
C++?OpenGL實(shí)現(xiàn)旋轉(zhuǎn)立方體的繪制
這篇文章主要主要為大家詳細(xì)介紹了如何利用C++和OpenGL實(shí)現(xiàn)旋轉(zhuǎn)立方體的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手嘗試一下2022-07-07
C++實(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-08
C和MFC巧妙獲取外網(wǎng)IP的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了C和MFC巧妙獲取外網(wǎng)IP的兩種實(shí)現(xiàn)方法,功能非常的實(shí)用,需要的朋友可以參考下2014-07-07
C語(yǔ)言+MySQL實(shí)現(xiàn)推箱子游戲
經(jīng)典的推箱子是一個(gè)來(lái)自日本的古老游戲,目的是在訓(xùn)練你的邏輯思考能力。本文將通過(guò)C語(yǔ)言和MySQL實(shí)現(xiàn)推箱子這一經(jīng)典游戲,感興趣的可以了解一下2022-02-02
C語(yǔ)言程序設(shè)計(jì)之指針的應(yīng)用詳解
為了讓大家能夠更準(zhǔn)確的了解C語(yǔ)言中指針的使用,本文為大家準(zhǔn)備了四個(gè)指針相關(guān)的例題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-11-11
C++實(shí)現(xiàn)簡(jiǎn)單的信息管理系統(tǒng)
這篇文章主要為大家介紹了C++實(shí)現(xiàn)簡(jiǎn)單的信息管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04

