C语言 扫雷初体验

目前本小白刚学会编扫雷,用了我一上午的时间,头都快秃了

通过新学的知识有头文件和源文件的分别  还学了自定义函数,因此本身的编程量看着不是很多,都引用了函数

首先创造扫雷游戏的菜单

void menu()
{
    printf("**************************************************\n");
    printf("******************1.play *************************\n");
    printf("******************2.exit *************************\n");
    printf("**************************************************\n");
}

通过switch语句实现1 游玩0 退出  其他情况输入错误重新选择

这是游戏的主题

之后要创造出扫雷的这个框架

这就要用到数组和循环了

我们把数组分为两个

一个是雷出现的数组  把雷设定为‘1’ 没有类的设为‘0’,这个雷需要设定数量 和出现的地方 而雷的位置必须要随机 这就需要随机函数

一个是周围有多少雷  首先用if语句,如果这个位置为雷,则游戏结束,如果这个位置没有雷则需要判断周围8个位置相加为多少 要注意的是相加的是字符  不是数字  因此后面要减8个‘0’

如果你要创造9x9的雷  则需要创造11x11的数组,因为你要保证9x9里面每个逻辑都相同

而让每个数组里面排列‘0’或‘*’只需要for循环即可执行

当你排除掉所有雷之后  也可以用while循环一直叠加  判断你游戏胜利

//#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
//#include"game.h"
扫雷游戏
//void lei(char mine[ROWS][COLS], int row, int col)
//{
//    int count = jiandan;
//    while (count != 0)
//    {
//        int x = rand() %row + 1;
//        int y = rand() % col + 1;
//        if (mine[x][y] == '0')
//        {
//            mine[x][y] = '1';
//            count--;
//        }
//    }
//}
//void TIP(char board[ROWS][COLS], int rows, int cols, char set)
//{
//    int i = 0;
//    for (i = 0; i < rows; i++)
//    {
//        int j = 0;
//        for (j = 0; j < cols; j++)
//        {
//            board[i][j] = set;
//        }
//    }
//}
//
//int leidegeshu(char mine[ROWS][COLS], int x, int y)
//{
//    return mine[x - 1][y - 1] + mine[x][y - 1]
//        + mine[x + 1][y - 1] + mine[x - 1][y]
//        + mine[x + 1][y] + mine[x - 1][y + 1]
//        + mine[x + 1][y + 1] + mine[x][y + 1]
//        - 8 * '0';
//    
//}
//void dayin(char board[ROWS][COLS], int rows, int cols)
//{
//    int i = 0;
//    for (i = 0; i <= rows; i++)
//    {
//        printf("%d ", i);
//    }
//    printf("\n");
//    for (i = 1; i <= rows; i++)
//    {
//        printf("%d ", i);
//        int j = 0;
//        for (j = 1; j <= cols; j++)
//        {
//            printf("%c ", board[i][j]);
//        }
//        printf("\n");
//    }
//}
//
//void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
//{
//    int x = 0;
//    int y = 0;
//    int win = 0;
//    while (win<row*col-jiandan)
//    {
//        printf("输入排查坐标");
//        scanf("%d %d", &x, &y);
//        if (x >= 1 && x <= row && y >= 1 && y <= col)
//        {
//            if (mine[x][y] == '1')
//            {
//                printf("你死了\n");
//                dayin(mine, ROW, COL);
//                break;
//            }
//            else
//            {
//                int count=leidegeshu(mine, x, y);
//                show[x][y] = count + '0';
//                dayin(show, ROW, COL);
//                win++;
//            }
//        }
//        else
//        {
//            printf("重新输入");
//        }
//    }
//    if (win == row * col - jiandan)
//    {
//        printf("排雷成功\n");
//        dayin(mine, ROW, COL);
//    }
//}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

//#pragma once
//#include<stdio.h>
//#define _CRT_SECURE_NO_WARNINGS 1
//#include<stdio.h>
扫雷游戏
//#define ROW 9
//#define jiandan 10
//#define COL 9
//#define ROWS  11
//#define COLS  11
//#include<time.h>
//void TIP(char board[ROWS][COLS], int rows, int cols, char set);
//void dayin(char board[ROWS][COLS], int rows, int cols);
//void lei(char board[ROWS][COLS], int row, int col);
//void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
//int leidegeshu(char mine[ROWS][COLS], int x, int y);

#include"game.h"
void menu()
{
    printf("**************************************************\n");
    printf("******************1.play *************************\n");
    printf("******************2.exit *************************\n");
    printf("**************************************************\n");
}
void game()
{
    char mine[ROWS][COLS];
    char show[ROWS][COLS];
    TIP(mine, ROWS, COLS, '0');
    printf("\n");
    TIP(show, ROWS, COLS, '*');
    dayin(show, ROW, COL);
    printf("\n");
    
    lei(mine, ROW, COL);
    //dayin(mine, ROW, COL);
    FindMine(mine, show, ROW, COL);
}
int main()
{
    int a = 0;
    srand((unsigned int)time(NULL));
    do
    {
        
        menu();
        printf("请选择");
        scanf("%d", &a);
        
        switch(a)
        {
            case 1:
                game();
                printf("扫雷\n");
                break;
            case 0:
                printf("退出游戏\n");
                break;
            default:
                printf("输入错误\n");

        }
    } while (a);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值