资讯专栏INFORMATION COLUMN

c语言实现简单版扫雷

番茄西红柿 / 3272人阅读

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

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语言

    摘要:展示雷盘和初始化雷盘不一样,展示雷盘只需要用即可,并不需要将都展示出来,只是为了我们更好的计算扫雷的位置周围的雷的数量。 目录 1、需求分析 2、程序架构 3、代码实现(分函数呈现) (1)主函数代码实现 分析: 异常处理: (2)游戏主函数实现 分析: (3)初始化函数的实现 分析: (4...

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

    摘要:设计实现扫雷游戏大致思路创建文件想法实现设计一个函数,实现建议菜单循环和分支选择游戏选项创造一个扫雷版面版面的大小最后是要可控的如何存放雷和版面的信息呢考虑排查雷时候的思路,我们要判断该位置周围个格子里面是否有雷初始化 ...

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

    摘要:新人小白的第一篇博客,有什么不好之处望多提意见。这个扫雷小游戏主要是基于二维数组,循环与基本的函数知识等。请输入坐标提示玩家输入坐标。换行是为了看着好看,要不然打印出来的数组会变形的。用来接收判断输赢的函数的返回值。 ​​​​​​​新人小白的第一篇博客,有什么不好之处望多提意见。      ...

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

    摘要:作者时间网站地址摘要语言实现我们小时候玩过的扫雷游戏,最近看到了一些扫雷游戏的简单实现,但是总有功能上的缺失,玩起来不那么的原汁原味,因此我增加了一些新功能确保玩家首次排雷一定不会炸死。 ...

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

    摘要:目录前言游戏实现函数的实现游戏相关规则说明的函数棋盘初始化函数的实现随机生成雷的函数的实现打印数组函数的实现修改数组的函数的实现扫雷过程函数的实现修改数组的函数的实现汇总结语前言相信大家小时候都玩过扫雷小游戏吧在网络并 ...

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

    摘要:条消息语言入门三子棋语言实现详细版的博客博客条消息语言入门三子棋语言实现详细版的博客博客我们将雷盘初始化为统一的符号。 目录 1.原理简介 2.分布目标及代码实现 3.总结 1.原理简介  首先我们需要一个空的雷盘,在其中随机埋入十枚雷,当我们排这颗雷时,若此位置为雷,则游戏失败,若不...

    caige 评论0 收藏0

发表评论

0条评论

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