头文件

#pragma once#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define EASY_COUNT 10#include <stdio.h>#include <stdlib.h>#include <time.h>void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);void Display(char board[ROWS][COLS], int rows, int cols);void SetMine(char board[ROWS][COLS], int row, int col);void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int  col);

函数实现

#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void InitBoard(char board[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++)        {            board[i][j] = set;        }    }}void Display(char board[ROWS][COLS], int row, int col){    int i = 0;    int j = 0;    for (i = 0; i < row+1; i++)    {        for (j = 0; j < col+1; j++)        {            if (i != 0 && j != 0)            {                printf("%c ", board[i][j]);            }            if (i == 0)            {                printf("%d ", j);            }            if (j == 0 && i != 0)            {                printf("%d ", i);            }        }        printf("\n");    }}void SetMine(char board[ROWS][COLS], int row, int col){    int count = EASY_COUNT;    int x = 0;    int y = 0;    while (count)    {        x = rand() % 9 + 1;        y = rand() % 9 + 1;        if (board[x][y] == '0')        {            board[x][y] = '1';        }        else            continue;        count--;    }}char get_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][y + 1] +        mine[x - 1][y + 1] +        mine[x - 1][y] +        mine[x - 1][y - 1] - 8 * '0';}/*void Extend(char mine[ROWS][COLS],char show[ROWS][COLS], int x, int y){    int count = 0;    int i = 0;    for (i = 1;; i++)    {        if (mine[x][y - i] ==            mine[x + i][y - i] ==            mine[x + i][y] ==            mine[x + i][y + i] ==            mine[x][y + i] ==            mine[x - i][y + i] ==            mine[x - i][y] ==            mine[x - i][y - i] == '0')        {            show[x][y - i] = '0';            count = get_mine_count(mine, x, y-i);            show[x][y-i] = count + '0';            show[x + i][y - i] = '0';            count = get_mine_count(mine, x+i, y-i);            show[x + i][y - i] = count + '0';            show[x + i][y] = '0';            count = get_mine_count(mine, x+i, y);            show[x + i][y] = count + '0';            show[x + i][y + i] = '0';            count = get_mine_count(mine, x+i, y+i);            show[x + i][y + i] = count + '0';            show[x][y + i] = '0';            count = get_mine_count(mine, x, y);            show[x][y + i] = count + '0';            show[x - i][y + i] = '0';            count = get_mine_count(mine, x-i, y+i);            show[x - i][y + i] = count + '0';            show[x - i][y] = '0';            count = get_mine_count(mine, x-i, y);            show[x - i][y] = count + '0';            show[x - i][y - i] = '0';            count = get_mine_count(mine, x-i, y-i);            show[x - i][y - i] = count + '0';            Extend(mine, show, x, y);        }        else        {            break;        }    }    //count = get_mine_count(mine, x, y);    //show[x][y] = count + '0';}*/void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int  col){    int x = 0;    int y = 0;    int count = 0;    int win = 0;    while (win<row*col-EASY_COUNT)    {        printf("请输入想要排查的坐标:>  ");        scanf("%d%d", &x, &y);        if (x >= 1 && x <= row && y >= 1 && y <= col)        {            if (mine[x][y] == '1')            {                printf("雷区蹦迪呢宝贝er,很遗憾你死了!!\n");                Display(mine, ROW, COL);                break;            }            else            {                //Extend(mine, show, x, y);                count = get_mine_count(mine, x, y);                show[x][y] = count + '0';                               Display(show, ROW, COL);                win++;            }            if (win == row * col - EASY_COUNT)            {                printf("恭喜你,你赢了\a\n");                Display(mine, row, col);            }        }        else        {            printf("非法坐标,请重新输入\a\n");        }    }}//递归 实现扫雷的展开 

主函数

#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void game(){    //雷的信息存储    //1.布置好的雷的信息    char mine[ROWS][COLS] = { 0 };    //2.排查出的雷的信息    char show[ROWS][COLS] = { 0 };    //数组的初始化    InitBoard(mine, ROWS, COLS,'0');    InitBoard(show, ROWS, COLS,'*');        //打印棋盘    //Display(mine, ROW, COL);    Display(show, ROW, COL);    //布置雷    SetMine(mine, ROW, COL);    //Display(mine, ROW, COL);    //扫雷    FindMine(mine,show,ROW,COL);}void menu(){    printf("****************************\n");    printf("*******    0.Exit    *******\n");    printf("*******    1.Play    *******\n");    printf("****************************\n");}void test(){    srand((unsigned int)time(NULL));    int input = 0;    do    {        menu();        printf("请选择是否开始游戏:>\n");        scanf("%d", &input);        switch (input)        {        case 1:            {                printf("Game Start!!!\n");                game();                break;            }           case 0:            {                printf("退出游戏\n");                break;            }        default:            {                printf("非法输入,请重新选择>:\n");            }        }    } while (input);}int main(){    test();    return 0;}
©著作权归作者所有:来自51CTO博客作者赤晴的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 1 简介 在上一篇文章中我们对geopandas中的坐标参考系有了较为
  2. Python地信专题 | 基于geopandas的空间数据分析-坐标参考系篇
  3. 宏观视角看递归
  4. 动画:这一次用动画搞懂递归!
  5. Unity3D之坐标系的转换
  6. 官方示例(十三):3步70行代码开发GIS点坐标技术 ThingJS
  7. PHP使用递归按层级查找数据(代码详解)
  8. PHP递归算法的应用(含示例)
  9. PHP实例计算经纬坐标间的距离

随机推荐

  1. android Material
  2. 引用 Android的DTMF处理(ToneGenerator)
  3. Android Bundle类(简单实例)
  4. Android上使用Chrome DevTools 远程调试W
  5. Android SystemProperty
  6. Android adb shell 常用命令
  7. Android(安卓)Camera——拍照
  8. Android根据经纬度获取地址
  9. 向Android模拟器发短信打电话
  10. zxing-client-android 导入Android Studi