服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言数组应用实现扫雷游戏

C语言数组应用实现扫雷游戏

2022-12-20 16:15xxzaa C/C++

这篇文章主要为大家详细介绍了C语言数组应用实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言数组应用实现扫雷游戏的具体代码,供大家参考,具体内容如下

扫雷游戏(10×10的面板):

1.定义两个12×12的字符型数组;
2.show_board[][]:初始化全为*
mine_board[][]:随机赋值字符’0’或’1’
3.统计雷的个数:周围8个位置的值累加-8×’0’

代码:

game.h

#ifndef _GAME_H_
#define _GAME_H_

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#define ROW 12
#define COL 12
#define NUMS 20     //雷的个数
#pragma warning(disable:4996) 

void Menu();
void Game();

#endif

game.c

#include "game.h"
void Menu()
{
    printf("########################
");
    printf("#####1.Play  2.Exit#####
");
    printf("########################
");
    printf("请输入:");
}
void SetMines(char board[][COL], int row,int col){
    int num = NUMS;
    while (num){
        int x = rand() % 10 + 1;
        int y = rand() % 10 + 1;
        if (board[x][y] == "0"){
            board[x][y] = "1";
            num--;
        }
    }

}
int GetNums(char board[][COL], int row,int col, int x, int y)
{
    return board[x-1][y-1] + board[x-1][y] + 
           board[x-1][y+1] + board[x][y+1] + 
           board[x+1][y+1] + board[x+1][y] + 
           board[x+1][y-1] + board[x][y-1] - 8 * "0";
}
void ShowBoard(char board[][COL], int row, int col){
    printf("  ");
    for (int i = 1; i < col - 1; i++){
        printf(" %2d ", i);
    }
    printf("
");
    printf("—————————————————————
");
    for (int i = 1; i < row - 1; i++){
        printf("%2d|", i);
        for (int j = 1; j < col - 1; j++){
            printf(" %c |", board[i][j]);
        }
        printf("
");
        printf("—————————————————————
");
    }
}
void Game()
{
    system("cls");
    srand((unsigned long)time(NULL));
    char show_board[ROW][COL];
    char mine_board[ROW][COL];
    memset(show_board,"*", sizeof(show_board)); 
    memset(mine_board,"0", sizeof(mine_board)); //初始化二维数组

    SetMines(mine_board,ROW,COL); //布雷
    int count = (ROW - 2)*(COL - 2) - NUMS;
    int x = 0;
    int y = 0;
    do{
        ShowBoard(show_board,ROW,COL);
        printf("请输入坐标:");
        scanf("%d %d", &x, &y);
        if (x<1 || x>ROW - 2 || y<1 || y>COL - 2){
            printf("输入位置越界,请重新输入!
");
            continue;
        }
        if (show_board[x][y] != "*"){
            printf("该位置已被排除,请重新输入!
");
            continue;
        }
        if (mine_board[x][y] == "1"){

            break;
        }
        int num = GetNums(mine_board,ROW,COL,x, y);
        show_board[x][y] = num + "0";
        count--;
        system("cls");
    } while (count > 0);
    if (count > 0){
        printf("你被炸死了!
");
        ShowBoard(mine_board, ROW, COL);
    }
    else{
        printf("恭喜,你通过游戏!
");
    }
}

main.c

#include "game.h"

int main()
{
    int quit = 0;
    int select = 0;
    while (!quit){
        Menu();
        scanf("%d", &select);

        switch (select){
        case 1:
            Game();
            break;
        case 2:
            quit = 1;
            break;
        default:
            printf("输入有误,请重新输入!
 ");
            break;
        }
    }
    printf("ByeBye!
");
    system("pause");
    return 0;
}

运行结果

C语言数组应用实现扫雷游戏

C语言数组应用实现扫雷游戏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文地址:https://blog.csdn.net/zhaoyupeng123/article/details/109487004

延伸 · 阅读

精彩推荐
  • C/C++C++数组的定义详情

    C++数组的定义详情

    这篇文章主要介绍了C++数组的定义详情,上一篇文章我们学习了类型,接下俩我们九在类型的基础上展开本篇内容数组的常用方法以及C++标准库提供的一些关...

    一个热爱学习的深度渣渣11472022-03-10
  • C/C++C++超详细讲解智能指针

    C++超详细讲解智能指针

    为了解决内存泄漏的问题,C++中提出了智能指针。内存泄漏的产生原因有很多,即使我们正确的使用malloc和free关键字也有可能产生内存泄漏,如在malloc和...

    清风自在 流水潺潺5712022-12-14
  • C/C++C语言超全面讲解函数的使用方法上

    C语言超全面讲解函数的使用方法上

    函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数,由于篇幅过大,分为...

    马桶上看算法4202022-11-14
  • C/C++C++实现连连看游戏核心代码

    C++实现连连看游戏核心代码

    这篇文章主要为大家详细介绍了C++实现连连看游戏核心代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    遨游网络huster10992021-07-16
  • C/C++学好C++必须做到的50条 绝对经典!

    学好C++必须做到的50条 绝对经典!

    学好C++必须做到的50条,绝对经典!想要学好C++的朋友一定要认真阅读本文,更要做到以下50条...

    C++教程网5132021-04-16
  • C/C++C语言数组全面详细讲解

    C语言数组全面详细讲解

    数组是一组有序的数据的集合,数组中元素类型相同,由数组名和下标唯一地确定,数组中数据不仅数据类型相同,而且在计算机内存里连续存放,地址编...

    龟π气功4202022-11-25
  • C/C++C++ Opencv imfill孔洞填充函数的实现思路与代码

    C++ Opencv imfill孔洞填充函数的实现思路与代码

    在Matlab下,使用imfill可以很容易的完成孔洞填充操作,下面这篇文章主要给大家介绍了关于C++ Opencv imfill孔洞填充函数的实现思路与代码,文中通过示例代码介...

    LYK_DoDo10582022-01-12
  • C/C++详解C语言读取文件求某一列的平均值

    详解C语言读取文件求某一列的平均值

    本文粗浅比较了C语言中常用的几种读取文件的函数的效率,并给出了几段求取某列平均值的代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大...

    hxj77702022-09-22