开始学习第二十七-第二十八天

昨天写的太投入 都忘记了发博客(作业对我来说有点多)

不过还是学到了不少 然后把扫雷写完啦!

下面是代码

game.h 用来定义

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

#define ROW 9
#define COL 9
#define easy_count 10
#define ROWS ROW+2
#define COLS COL+2
void InitBoard(char board[ROWS][COLS], int rows, int cols,char set);
void DisplayBoard(char board[ROWS][COLS], int row, int col);
void SetMine(char board[ROWS][COLS], int row, int col);
void FineMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);

test.c用来写架构

#define _CRT_SECURE_NO_WARNINGS
#include"game.h"

void menu()
{
    printf("***********************************\n");
    printf("**********     1.play    **********\n");
    printf("**********     0.exit    **********\n");
    printf("***********************************\n");
}
void game()
{
    char mine[ROWS][COLS] = { 0 };//存放雷的信息
    char show[ROWS][COLS] = { 0 };//存放排查雷的信息
    InitBoard(mine, ROWS, COLS, '0');
    InitBoard(show, ROWS, COLS,'*');
    SetMine(mine, ROW, COL);    
    DisplayBoard(show, ROW, COL);
    FineMine(mine, show, ROW, COL);
}
int main()
{
    srand((unsigned int)time(NULL));
    int s = 0;
    do
    {
        menu();
        printf("请选择:>");
        scanf("%d",&s);
        switch (s)
        {
        case 1:
            game();
            printf("开始游戏\n");
            break;
        case 0:
            printf("退出游戏\n");
            break;
        default:
            printf("输入错误,请重新输入\n");
        }
    } while (s);
    return 0;
}

game.c用来存放游戏代码

#define _CRT_SECURE_NO_WARNINGS
#include"game.h"

void InitBoard(char board[ROWS][COLS], int rows, int cols,int set)
{
    int i = 0;
    int j = 0;
    for (i = 0; i < rows; i++)
    {
        for (j = 0; j < cols; j++)
        {
            board[i][j] = set;
        }
    }
}
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
    int i = 0;
    int j = 0;
    printf("-------------------扫雷-------------------\n");
    for (j = 0; j <=col; j++)
    {
        printf("%d ", j);
    }
    printf("\n");
    for (i = 1; i <=row; i++)
    {
        printf("%d ",i);
        for (j = 1; j <=col; j++)
        {
            printf("%c ", board[i][j]);
        }
        printf("\n");
    }
}
void SetMine(char board[ROWS][COLS], int row, int col)
{
    int count = easy_count;
    while (count)
    {
        int x = rand() % row + 1;
        int y = rand() % col + 1;
        if (board[x][y] == '0')
        {
            board[x][y] = '1';
            count--;
        }
    }
}
int get_mine_court(char board[ROWS][COLS], int x, int y)
{
      return  (board[x - 1][y] +
        board[x - 1][y - 1] + 
        board[x][y - 1] + 
        board[x + 1][y - 1] + 
        board[x + 1][y] + 
        board[x + 1][y + 1] + 
        board[x][y + 1] +
        board[x - 1][y + 1] - 8 * '0');
}
void FineMine(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-easy_count)
    {
        printf("请输入要排查的坐标:>");
        scanf("%d%d", &x, &y);
        if (x >= 1 && x <= row&&y >= 1 && y <= col)
        {
            if (mine[x][y] == '1')
            {
                printf("很遗憾,你被炸死了\n");
                DisplayBoard(mine, ROW, COL);
                break;
            }
            else//如果不是雷
            {
                int count=get_mine_court(mine,x,y);
                show[x][y] = count + '0';
                DisplayBoard(show, ROW, COL);
            }
        }
        else
        {
            printf("输入错误,请重新输入:>");
        }
    }
    if (win == row*col - easy_count)
    {
        printf("恭喜你排雷成功\n");
        DisplayBoard(mine, ROW, COL);
    }
}

虽然有些许简陋 但我已经很开心啦 后面什么递归然后消除一大片的 等我再思索一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树

文章目录 第5章 决策树5.1 决策树模型与学习5.1.1 决策树模型5.1.2 决策树与if-then规则5.1.3 决策树与条件概率分布5.1.4 决策树学习5.2 特征选择5.2.1 特征选择问题5.2.2 信息增益5.2.3 信息增益比5.3.1 ID3算法5.3.2 C4.5的生成算法5.4 决策树的剪枝5.5 CART算法5.5.1 CART生…

C++:智能指针

C在用引用取缔掉指针的同时&#xff0c;模板的引入带给了指针新的发挥空间 智能指针简单的来说就是带有不同特性和内存管理的指针模板 unique_ptr 1.不能有多个对象指向一块内存 2.对象释放时内部指针指向地址也随之释放 3.对象内数据只能通过接口更改绑定 4.对象只能接收右值…

20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式

20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式 2024/2/2 14:15 rootrootrootroot-X99-Turbo:~/whisper.cpp$ ./main -l zh -osrt -m models/ggml-medium.bin chs.wav 在纯CPU模式下&#xff0c;使用medium中等模型&#xff0c;7分钟的中文视频需要851829.69 ms&#xf…

常见的图形化编程工具都有什么

图形化编程是一种通过可视化界面和模块化组件来进行程序设计的方法&#xff0c;它使得编程更加直观和易于理解&#xff0c;尤其适合初学者和儿童学习编程。在这篇文章中&#xff0c;6547网题库将介绍图形化编程的基本概念、优势以及一些常见的图形化编程工具。 一、图形化编程的…

CAD-autolisp(三)——文件、对话框

目录 一、文件操作1.1 写文件1.2 读文件 二、对话框DCL2.1 初识对话框2.2 常用对话框界面2.2.1 复选框、列表框2.2.2 下拉框2.2.3 文字输入框、单选点框 2.3 Lisp对dcl的驱动2.4 对话框按钮实现拾取2.5 对话框加载图片2.5.1 幻灯片图片制作2.5.1 代码部分 一、文件操作 1.1 写…

密钥加密问题

C参考代码&#xff1a; #include<iostream> #include<map> #include<vector> using namespace std; int main() {vector<char> x;vector<char> y;map<char,char> word;char ch getchar();getchar();string str;getline(cin,str);for(cha…

HashMap的几种遍历方式

entry 增强for循环方式 Map<Integer, String> map new HashMap<>(); map.put(1, "a"); map.put(2, "b"); map.put(3, "c"); map.put(4, "d");Set<Map.Entry<Integer, String>> entrySet map.entrySet();fo…

(科目一)阅读理解

1、题型介绍 1、材料分析题&#xff1a;第三题14分。 2、文章600~1300字左右&#xff0c;篇幅较之前有所增加。 3、题量&#xff1a; 第1问概括&#xff1a;4分。&#xff08;理解文章中的重要概念或句子&#xff09;第2问分析&#xff1a;10分。&#xff08;分析文章中心论…

GmSSL - GmSSL的编译、安装和命令行基本指令

文章目录 Pre下载源代码(zip)编译与安装SM4加密解密SM3摘要SM2签名及验签SM2加密及解密生成SM2根证书rootcakey.pem及CA证书cakey.pem使用CA证书签发签名证书和加密证书将签名证书和ca证书合并为服务端证书certs.pem&#xff0c;并验证查看证书内容&#xff1a; Pre Java - 一…

JDK版本如何在IDEA中切换

JDK版本在IDEA中切换 一、项目结构设置 1.Platform——Settings 项目结构---SDKS 2.Project——SDK 3.Modules——SDK——Sources 4.Modules——SDK——Dependencies 二、设置--编译--字节码版本 Settings——Build,——Java Compiler

【Servlet】——Servlet API 详解

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Servlet】 本专栏旨在分享学习Servlet的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、HttpServlet二、Htt…

spring boot yaml文件中如何设置duration对象值

Spring Boot对表示持续时间有专门的支持。如果您公开java.time.Duration属性&#xff0c;则应用程序对应Duration类型的属性有以下格式可用: long类型的常规表示(使用毫秒作为默认单位&#xff0c;除非指定了DurationUnit)java.time.Duration 使用的标准ISO-8601格式其中值和单…

鸿蒙ArkUI日期选择组件

鸿蒙ArkUI日期选择组件&#xff0c;基于基础组件进行的二次封装的日期选择组件&#xff0c;快速实现日期选择。 /*** 日期*/ Component export default struct DiygwDate{//绑定的值Link Watch(onValue) value:string;// 隐藏值State valueField: string value;// 显示值Sta…

6+单基因+单细胞+实验,干湿结合是生信分析发文最真诚的必杀技

今天给同学们分享一篇生信文章“CXCR4 expression is associated with proneural-to-mesenchymal transition in glioblastoma”&#xff0c;这篇文章发表在Int J Cancer期刊上&#xff0c;影响因子为6.4。 结果解读&#xff1a; CXCR4表达与PN GBM的存活和MES标记物的表达相关…

数与抽象之负数和分数

负数和分数 “探索减法和除法&#xff1a;从具体操作到方程求解的数学思维” 谁如果给小孩子教过数学&#xff0c;那一定会知道&#xff0c;减法和除法并不像加法和乘法那样直接&#xff0c;他们学习起来更困难一些。为了解释减法&#xff0c;我们当然可以利用“拿走”的概念…

Echarts+Vue 首页大屏静态示例Demo 第三版

效果图: 源码: <template><div class="content bg" style="height: 100vh;overflow-y: auto" :class="{ fullscreen-container: isFullScreen }"><div class="reaDiv" style="height: 10vh"><div…

latex multirow学习

今天搞了一晚上的这个multirow&#xff0c;总算弄出来了几个比较好的例子&#xff0c;主要是这个multirow的语法我没看懂&#xff0c;这个逻辑我是没理解&#xff0c;就很尴尬&#xff0c;一改就报错&#xff0c;只能先弄几个例子&#xff0c;自己慢慢试

MySQL 5.7.36安装操作

接上文提示&#xff1a; 【Config Type】选项用于设置服务器的类型。单击该选项右侧的下三角按钮&#xff0c;即可看到 3个选项&#xff0c;如图10所示。 Development Machine&#xff08;开发者机器&#xff09;&#xff1a;代表典型的个人桌面工作站。假定机器上运行着多个…

4.java中的输入输出/输入中的next和nextLine区别问题

&#xff08;笔试会经常让我们自己去处理输入输出&#xff09; 一.输出到控制台 println 输出的内容自带 \n&#xff08;换行&#xff09; print 不带 \n printf 的格式化输出方式和 C 语言的 printf 是基本一致的. String msg "Hello, World!";System.out.print(m…

Transformer 自然语言处理(四)

原文&#xff1a;Natural Language Processing with Transformers 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十章&#xff1a;从头开始训练变换器 在本书的开头段落中&#xff0c;我们提到了一个名为 GitHub Copilot 的复杂应用&#xff0c;它使用类似 GPT 的…