资讯专栏INFORMATION COLUMN

c语言实现简单版扫雷

番茄西红柿 / 2934人阅读

摘要:声明初始化打印棋盘布置雷扫雷游戏实现初始化棋盘打印棋盘布置雷判断坐标周围雷的数量玩扫雷请输入坐标很不幸,你被炸死了输入坐标非法,请重新输入恭喜你,扫雷成功主程序具体实现步骤创建数组初始化棋盘打印棋盘布置雷扫雷创建一个菜单

game.h

//声明

#define _CRT_SECURE_NO_WARNINGS 1

#define ROW 9                  

#define COL 9

#define ROWS ROW+2

#define COLS COL+2

#define set_count 10

#include

#include

#include

void Initboard(char mine[ROWS][COLS],int rows,int cols,char set);//初始化

void Displayboard(char mine[ROWS][COLS],int row,int col);//打印棋盘

void setboard(char mine[ROWS][COLS],int row,int col);//布置雷

void playmineboard(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);//扫雷

game.c

//游戏实现

#include"game.h"

初始化棋盘

void Initboard(char mine[ROWS][COLS],int rows,int cols,char set)
{
        int i=0;
        int j=0;
        for(i=0;i<rows;i++)
{
               for(j=0;j<cols;j++)
{
                       mine[i][j]=set;
               }
        }
}

打印棋盘

void Displayboard(char mine[ROWS][COLS],int row,int col)
{
        int i=0;
        int j=0;
    for(i=0;i<=col;i++)
        {
               printf("%d ",i);
        }
        printf("/n");
        for(i=1;i<=row;i++)
        {
               printf("%d ",i);
               for(j=1;j<=col;j++)
               {
                       printf("%c ",mine[i][j]);
               }
        printf("/n");
        }
}

布置雷

void setboard(char mine[ROWS][COLS],int row,int col)
{
        int x=0;
        int y=0;
        int count=set_count;
        while(count)
        {
        x=rand()%row+1;
        y=rand()%col+1;
        if(mine[x][y]==0)
        {
               {
               mine[x][y]=1;
               count--;
               }
        }
        }
}

判断坐标周围雷的数量

int set_mine_count(char mine[ROWS][COLS],int x,int y)
{
                 return mine[x][y-1]+
                        mine[x-1][y-1]+
                        mine[x-1][y]+
                        mine[x+1][y-1]+
                        mine[x+1][y]+
                        mine[x+1][y+1]+
                        mine[x][y+1]+
                        mine[x-1][y+1]-8*0;
}

玩扫雷

void playmineboard(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)
{
        int rmp=row*col-set_count;
        int x=0;
        int y=0;
        int count=0;
        while(1)
        {
        printf("请输入坐标>:");
        scanf("%d%d",&x,&y);
        if(x>0&&x<=row&&y>0&&y<=col)
        {
             if(mine[x][y]==0)
             {


                       int count=set_mine_count(mine,x,y);
                       show[x][y]=count+0;

                       Displayboard(show,ROW,COL);
             }
             else
             {
                    printf("很不幸,你被炸死了/n");
                        Displayboard(mine,ROW,COL);
                        break;
             }
        }
        else
        {
               printf("输入坐标非法,请重新输入/n");
        }
        if(count==rmp)
        {
               printf("恭喜你,扫雷成功/n");
               break;
        }
        }
}

test.c

//主程序

#define _CRT_SECURE_NO_WARNINGS 1

#include"game.h"

具体实现步骤

void game()
{
        char mine[ROWS][COLS]={0};//创建数组
        char show[ROWS][COLS]={0};
        Initboard(mine,ROWS,COLS,0);//初始化棋盘
        Initboard(show,ROWS,COLS,*);
        //Displayboard(mine,ROW,COL);//打印棋盘
        Displayboard(show,ROW,COL);
        setboard(mine,ROW,COL);//布置雷
        //Displayboard(mine,ROW,COL);
        playmineboard(mine,show,ROW,COL);//扫雷
}

创建一个菜单

void menu()
{
        printf("*********************************************/n");
        printf("***********   1.  play        ***************/n");
        printf("***********   0.  exlt        ***************/n");
        printf("*********************************************/n");
}

主程序

void test()
{
        int input=0;
        do
        {
               menu();
               printf("请输入/n");
            scanf("%d",&input);
               switch(input)
               {
               case 1:
                       {
                              game();
                              break;
                       }
               case 0:
                       {
                              printf("退出游戏/n");
                              break;
                       }
               default :
                       {
                              printf("输入数字不合法,请重新输入/n");
                              break;
                       }
               }
        }while(input);
}


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125773.html

相关文章

  • 扫雷C语言

    ...呈现) test.c代码 game.h代码 game.c代码 1、需求分析 通过C语言实现简单扫雷小游戏,由于创作者水平有限,未在该游戏中实现图形化界面,同时在真正扫雷游戏中点一个位置成功扫雷多个坐标的功能也未实现,功能较为简单,...

    EscapedDog 评论0 收藏0
  • 请回答c语言-扫雷游戏

    设计实现扫雷游戏 1.大致思路1.1 创建文件1.2 想法实现设计一个menu函数,实现建议菜单`do while`循环和`switch`分支选择游戏选项创造一个扫雷...

    fou7 评论0 收藏0
  • 扫雷连爆(望大佬也可以帮忙优化或提出意见)(C语言)------上

    ​​​​​​​新人小白的第一篇博客,有什么不好之处望多提意见。         这个扫雷小游戏主要是基于二维数组,循环与基本的函数知识等。 本人用的vs2017,在开始上代码之前还是...

    incredible 评论0 收藏0
  • C语言实现扫雷游戏】拓展

    ...o 时间: 2021-11-10 网站地址:[]:https://github.com/sxfinn 摘要 C语言实现我们小时候玩过的扫雷游戏,最近看到了一些扫雷游戏的简单实现,但是总有功能上的缺失,玩起来不那么的“原汁原味”,因此我增加了一些新功能: 确保玩...

    JayChen 评论0 收藏0
  • C | 简易扫雷实现

    ...小游戏便成为了不少人童年的回忆。 今天就让我们就用C语言实现简易扫雷小游戏吧! 游戏实现 我们实现的思路如下: 1.程序开始时打印菜单,让玩家选择开始游戏还是退出游戏 2.玩家选择游戏后进入游戏 3.判断输赢后...

    cloud 评论0 收藏0
  • C语言入门》扫雷小游戏C语言实现

    ...若对三子棋有兴趣可移步我的另一篇博客。(14条消息) 《C语言入门》三子棋C语言实现(详细)_m0_60756071的博客-CSDN博客) 我们将雷盘初始化为统一的符号。 下面是部分代码: #define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2 voi...

    caige 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<