扫雷记录

 

recording

 

 

#include<iostream>
#include<time.h>
using namespace std;

//定义一个二维数组为扫雷做准备,随机布雷,
int boomMap[10][10] = //创建一个二维数组
{
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
    {0,0,0,0,0,0,0,0,0,0},
};
//在点击开始后,随机将一些数变成雷(1),将雷周围的数字由其周围雷数改为相应的数字
//写一个函数用来生成雷,参数为需要的雷数
void boomInit(int boomNum)
{
    for(int i = 0;i<boomNum;i++)
    {
        //随机两个数
        int row = rand()%10;
        int col = rand()%10;
        //定义一个临时数组来存储之前随机的两个数
        int tempArray[20][2];
        for(int ti=0;ti<i+1;ti++)//遍历该临时数组
        {
            if(tempArray[ti][0]==row&&tempArray[ti][1]==col)//这次随机的两个数与之前随机的数两两分别比较,要求不同时相等
            {
                i--;//如果同时相等则i减一
                break;//跳出当前for语句
            }else{//如果不同时相等
                //将这两个数存入临时数组中
                tempArray[i][0]=row;
                tempArray[i][1]=col;
                //将雷将入该数组对应位置
                boomMap[row][col]=1;
                break;//跳出当前for语句
            }
        }
    }
}
//定义一个函数参数为一个元素的下标,判断该元素周围有几个雷
int boomJudge(int row,int col)
{
    int count = 0;//定义一个变量存有几个雷

    //遍历该数周围一圈
    for(int i=row-1;i<=row+1;i++)
    {
        for(int j=col-1;j<=col+1;j++)
        {
            if((i!=row||j!=col)&&(boomMap[i][j]==1||boomMap[i][j]==3))//判断是否为雷
            {
                count++;//为雷则计数加一
            }
        }
    }
    return count;//返回雷数
}
//定义一个函数翻开指定元素
void cellOpen(int row,int col)
{
    if(boomMap[row][col]<2)//判断选择的元素是否被翻开(小于2则没有被翻开)
    {
        boomMap[row][col] += 2;//是则给该元素值加2以翻开此元素
    }
}
//定义一个函数用来形成地图形式,和变换
void mapInit()
{
    //遍历数组
    for(int i =0;i<10;i++)
    {
        for(int j = 0;j<10;j++)
        {
            //判断数组元素值以给出不同的方案内容
            switch(boomMap[i][j]<2)//判断的值只有1或0
            {
            case 1://第一种
                cout<<"■";//输出该符号以表示当前元素未被翻看
                break;//跳出当前switch
            case 0://第二种
                switch(boomMap[i][j])//在该值不小于2时,看该值等于几
                {
                case 2://为2
                    if(boomJudge(i,j)==0)//判断下标为i,j的元素周围有无雷
                    {
                        cout<<"  ";//无则输出空格
                    }else//有则
                    {
                        cout<<boomJudge(i,j)<<" ";//输出该函数的返回值
                    }
                    break;//跳出当前switch语句
                case 3://为3
                    cout<<"¤";//输出炸弹
                    break;//跳出当前switch
                }
                break;//跳出当前switch
            }
        }
        cout<<endl;//换行输出
    }
}

//定义一个函数来判断选择翻开的元素是否为炸弹,如果不是则判断其周围有几个炸弹,参数为元素下标
int gameJudge()//定义一个函数判断游戏什么时候结束
{
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            if(boomMap[i][j]==3)
            {
                cout<<"gameover"<<endl;
                return 1;//结束函数
            }
        }
    }
    return 0;
}

int main()
{
    srand(time(nullptr));
    boomInit(10);
    int row,col;
    for(int i=0;;i++)
    {
        mapInit();
        if(gameJudge())//判断是否猜雷
        {
            break;//是则跳出循环结束程序
        }
        cin>>row>>col;
        cellOpen(row,col);
        recursion(row,col);
    }

    system("pause");
    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值