扫雷(未完善版本)

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);
    settingMine(mine,Row,Col);
    //displayBoard(mine,Row,Col);
    findMine(mine,show,Row,Col);
}
void menu()
{
    printf("***************************\n");
    printf("****      1:play       ****\n");
    printf("****      0:exit       ****\n");
    printf("***************************\n");
}
void test()
{    
    int intput;
    srand((unsigned int)time(NULL));
    do
    {
        menu();
        printf("请选择模式\n");
        scanf("%d",&intput);
        switch(intput)
        {
            case 1:game();
            break;
            case 0:printf("退出游戏\n");
            break;
            default:printf("请输入其他值\n");
            break;
        }

    }while(intput);
}

int main()
{
    test();
    return 0;
}

game.c

#define _CRT_SECURE_NO_WARNINGS 1 
#include"game.h"

void initBoard(char Board[Rows][Cols],int rows,int cols,char ret)
{
    int i,j;
    for(i=0;i<rows;i++)
        for(j=0;j<cols;j++)
        {
            Board[i][j]=ret;
        }
}

void displayBoard(char Board[Rows][Cols],int row,int col)
{
    int i,j;
    for(i=0;i<=col;i++)
    {
        printf("%d ",i);
    }
    putchar('\n');
    for(i=1;i<=col;i++)
    {    printf("%d ",i);
        for(j=1;j<=row;j++)
        {
            printf("%c ",Board[i][j]);
        }
        putchar('\n');
    }
    putchar('\n');
}

void settingMine(char Board[Rows][Cols],int row,int col)
{
    int count=easyModel;
    while(count)
    {
        int x=rand()%row+1;
        int y=rand()%col+1;
        if(Board[x][y]=='0')
        {
            Board[x][y]='1';
            count--;
        }
    }
}
int statMine(char mine[Rows][Cols],int x,int y)
{

    return    (mine[x-1][y]+mine[x-1][y+1]+mine[x-1][y-1]
            +mine[x+1][y]+mine[x+1][y-1]+mine[x+1][y+1]
            +mine[x][y-1]+mine[x][y+1])-8*'0';
        
}
void findMine(char mine[Rows][Cols],char show[Rows][Cols],int row,int col)
{
    int x,y;
    int win=0;
    while(win<row*col-easyModel)
    {
        printf("请输入坐标\n");
        scanf("%d%d",&x,&y);
        if(x<=row&&x>=1&&y<=col&&y>=1)
        {
            if(mine[x][y]=='1')
            {
                printf("恭喜你被炸死了\n");
                displayBoard(mine,row,col);
                break;
            }
            else
            {    
                int ret;
                ret=statMine(mine,x,y);
                show[x][y]=ret+'0';
                win++;
                displayBoard(show,row,col); 
            }
        }
        else
        {
            printf("请输入正确的坐标值\n");
        }
        if(win==row*col-easyModel)
        {
            printf("恭喜你,你赢了\n");
        }
    }
}

game.h

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define Row 9
#define Col 9

#define Rows Row+2
#define Cols Col+2
#define easyModel 80
void initBoard(char Board[Rows][Cols],int rows,int cols,char ret);
void displayBoard(char Board[Rows][Cols],int row,int col);
void settingMine(char Board[Rows][Cols],int row,int col);
void findMine(char mine[Rows][Cols],char show[Rows][Cols],int row,int col);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值