用c语言写扫雷游戏

前言:

今天我们讲的扫雷游戏,在此过程中,我们会经常提两个字,纵横

接下来,正片开始

在开始讲解扫雷游戏之前,我们先来思考一个问题:我们之前的代码是不是都是写在一个源文件里面?那么这次我将换个方式讲解一下扫雷游戏,此后我也会尝试一下以多文件的方式写猜数字游戏。

首先还是之前我们在猜数字游戏里使用过的程序 

void menu()
{
    printf("******************************\n");
    printf("********* 1.开始游戏 *********\n");
    printf("********* 0.退出游戏 *********\n");
    printf("******************************\n");
}

void game()
{
    char mine[ROWS][COLS] = { 0 };//(初始化)答案盘的纵横
    char show[ROWS][COLS] = { '*'};//(初始化)题目盘的纵横

补充:1.上面两个数组中中括号内的参数需要在game.h这个头文件中用#define去定义纵横数量

           2.在主函数所在的文件中写上#include“game.h”,否则,程序依然会报错喔

什么?你不知道为什么这个头文件要用引号而不是<>?,没事,那我开个小灶,给你讲一下吧。

首先我们要知道stdio.h并不是我们自己创造的,换句话说,它是前辈们总结出来的一个头文件,我们只是站在前辈们的肩膀上做程序而已,所以以表尊重,我们统一使用<>,而game.h是我们自己临时创造出来的,所以用“”。


    Initboard(mine, ROWS, COLS,'0');//初始化答案盘    

     Initboard(show, ROWS, COLS,'*');//初始化题目盘,棋盘有纵横,初始化时,函数的参数有数组名、行、列以及初始化的符号
    SetMine(mine, ROWS, COLS);//在答案页在埋雷
    display(mine, ROWS, COLS );//打印答案盘
    display(show, ROWS, COLS );//打印题目盘
    //SetMine(mine,ROWS,COLS);
    FindMine(mine, show, ROWS, COLS);//排雷时,计算机需要将题目盘与答案盘进行对照
}

void test()
{
    int input = 0;
    srand((unsigned int)time(NULL));
    do {
        menu();
        printf("请选择>:\n");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            game();
            break;
        case 0:
            printf("游戏退出\n");
        default:
            printf("输入错误,请重新输入\n");
        }
    } while (input);
}

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

这次的代码看上去会与上一次猜数字的有所不同,但实践上是一样的,只是这次的代码进行了多次函数调用

补充:void broad这个函数中少了个形参——char put,用于存放先前的‘0’和‘*' 

注意:使用了荧光笔涂色的是需要大家注意的

也许有小伙伴会问,为什么是ROWS    ROW+2,其实这样设计可以防止在排查第九行雷出现错误,那么同理列也是一样的道理

那么game.h呢差不多就是写一些头文件,以及传输从test.c的文件中的一些函数,如果不太理解的朋友可以把它理解为中转站

那么接下来,我们就要用鬼谷纵横术来写最后的代码了

小提醒:我们虽然在game.c这个文件中输入了很多头文件,但是这是个全新的文件,因此要将之前的文件名做成头文件的形式放进该文件

 注意:set对应的形参也就是上面我补充的put形参

 之所以是%2d并且空格,是为了方便对齐

如图 

 

 因为当我们输入坐标后,坐标周围一圈需要被展示,所以如图

 

 然后是循环和判断

那么我们来总结一下思路: 首先和上次的猜数字游戏一样的模板不变,那么我们要从本次代码中要学会的内容:

1. 

#define ROW 9
#define COL 9
#pragma
#define ROWS ROW+2
#define COLS COL+2
#define EASY_COUNT 10

以上的则是要记住的,可能一时半会不理解,等我们的道行更深的时候就会了解

2.制作游戏是时要学会多文件思想,有助于我们在编写程序的时候思路清晰 

3.自己设置的头文件要用“”而不是<>

4.理解扫雷游戏的制作思路:初始化棋盘、打印棋盘、埋雷、排雷以及每一步骤中容易出错的部分。

那么今天已是正月初九了,各位大学生也快开学了,祝大家在新的一年里心想事成

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

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

相关文章

提升企业竞争力:精益生产培训简介——张驰咨询

精益生产&#xff08;Lean Production&#xff09;是一种管理哲学&#xff0c;最早源于日本丰田汽车公司的丰田生产系统&#xff08;Toyota Production System,TPS&#xff09;。这套理念的核心在于最大程度地减少生产过程中的浪费&#xff0c;同时保证产品质量&#xff0c;通过…

sora的理解

1、背景 近期, openai紧跟Runway、 Google、Meta等公司, 发布了视频生成模型Sora, 全面进军视频领域。官网的视频效果炸裂&#xff0c;连贯性优秀&#xff0c;生成视频时长可达60秒&#xff0c;但模拟复杂物理场景仍有瑕疵。相对Pika、Runway的效果还是有进一步提升。考虑到这…

AI界一夜变天

没有丝毫预热和剧透&#xff0c;Open AI深夜直接丢下核弹炸了街&#xff0c;从业者深感要变天。 2月16日凌晨&#xff0c;Open AI发布了首个“文生视频”模型Sora。官方介绍&#xff0c;Sora能根据文字指令创造出包含丰富细节的逼真场景、角色&#xff0c;且能用多角度镜头&am…

Python print函数

在Python编程中&#xff0c;print()函数是一个非常基础但也非常重要的函数&#xff0c;用于将文本或其他对象输出到控制台或文件中。本文将深入探讨Python中的print()函数&#xff0c;包括基本用法、格式化输出、输出重定向、实际应用场景&#xff0c;并提供丰富的示例代码来帮…

栈的应用(表达式求值)C++(Acwing)

代码&#xff1a; #include <iostream> #include <cstring> #include <algorithm> #include <stack> #include <unordered_map>using namespace std;stack<int> num; stack<char> op;void eval()//求值 {auto b num.top(); num.po…

echarts图表中的基本设置参数

取消显示坐标值 axisLabel: { show: false} 取消坐标轴刻度线 axisTick: { show: false} 取消网格线 splitLine: { show: false } 去除y轴的线 //写在yAxis里面 axisLine:{show:false},axisTick:{show:false},去除y轴轴线&#xff08;背景线&#xff09; splitLine…

java生成pdf

1.pdf预览 2.maven <!--pdf--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.9</version></dependency><dependency><groupId>com.itextpdf</groupId>…

51_蓝桥杯_数码管静态显示

一 电路 二 数码管静态显示工作原理 三 代码 代码1 实现第一个数码管显示数字6的功能 #include "reg52.h"unsigned char code SMG_Duanma[18] {0xc0,0xf9.0xa4,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc0,0x86,0x8e,0xbf,0x7f};void Delay(unsignde int t) {wh…

创建Maven项目

目录 创建新项目配置Maven配置资源地址下载资源 测试代码 创建新项目 创建一个新项目。 创建包&#xff0c;选择Maven&#xff0c;JDK选择1.8 。 点击创建。 创建完成。 配置Maven 点击设置图标&#xff0c;点击Settings. 搜索maven&#xff0c;点击Builde&#xff0c;…

【STM32 CubeMX】GPIO_HAL库源码分析

文章目录 前言一、GPIO_HAL库源码分析1.1 初始化GPIO1.2 HAL_GPIO_Init源码分析GPIO_InitTypeDef初始化结构体HAL_GPIO_Init函数 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技…

05.QT坐标系

1. 坐标系原点 坐标系原点就是屏幕/窗口的左上角&#xff0c;X向右增长&#xff0c;Y向下增长。 2.设置控件位置 设置控件位置&#xff0c;就相当于是需要指定控件的坐标&#xff0c;对于该控件来说&#xff0c;其坐标原点是其父窗口/父控件的左上角。 设置方法就是通过控件的…

C++ Webserver从零开始:配置环境(九)——下载github的项目进行测试

前言 大家好&#xff0c;我又来更新Webserver的博客了。上一次更新这个专栏时2024.2.5号&#xff0c;离现在已经13天了。非常抱歉&#xff0c;中间隔了那么久。一方面是基础知识学完之后&#xff0c;就要开始自己写代码了。看基础知识和写代码是两回事&#xff0c;理论和实践的…

BUGKU-WEB 变量1

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; flag In the variable !<?php error_reporting(0); include "flag1.php"; highlight_file(__file__); if(isset($_GET[args])){$args $_GET[args];if(!preg_match("/^\w$/",$args…

数据库概述、部署MySQL服务、必备命令 、密码管理、安装图形软件、SELECT语法 、筛选条件

目录 1 案例1&#xff1a;构建MySQL服务器 1.1 问题 1.2 方案 1.3 步骤 2 案例2&#xff1a;密码管理 2.1 问题 2.2 步骤 3 案例3&#xff1a;安装图形软件 3.1 问题 3.2 方案 3.3 步骤 4 案例4&#xff1a;筛选条件 4.1 问题 4.2 方案 4.3 步骤 1 案例1&#x…

AcWing 1050 鸣人的影分身(复杂DP ——整数划分问题)

[题目概述] 在火影忍者的世界里&#xff0c;令敌人捉摸不透是非常关键的。 我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。 影分身是由鸣人身体的查克拉能量制造的&#xff0c;使用的查克拉越多&#xff0c;制造出的影分身越强。 针对不同的作…

【Linux】进程的初步认识(二)

进程的初步认识 前言查看进程通过系统调用创建进程关于创建进程的几点补充 前言 之前的一篇文章(文章链接)已经初步对于进程有了一个认识&#xff0c;这篇文章主要是介绍如何去查看进程的相关信息以及创建一个进程的相关知识 查看进程 查看进程的信息可以在/proc系统文件夹中查…

代码随想录刷题笔记-Day19

1. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝…

ZigBee学习——基于AF的数据通信

文章目录 一、简单描述符1.1 简单介绍1.2 简单描述结构体介绍1.3 结构体中的簇1.4 应用场景 二、AF通信原理2.1 通信过程2.2 端点号分类2.3 通信方式2.4 注册简单描述符 三、数据发送API简介3.1 AF层数据发送API3.2 基于AF层封装的通信API3.2.1 点对点通信API3.2.2 广播通信API…

数据库管理-第151期 Oracle Vector DB AI-03(20240218)

数据库管理151期 2024-02-18 数据库管理-第151期 Oracle Vector DB & AI-03&#xff08;20240218&#xff09;1 向量数据库应用场景2 Oracle Vector DB3 Vector数据类型4 Vector运算5 Vector DML插入向量获取向量 总结 数据库管理-第151期 Oracle Vector DB & AI-03&am…

LeetCode 热题 100 Day01

哈希模块 哈希结构&#xff1a; 哈希结构&#xff0c;即hash table&#xff0c;哈希表|散列表结构。 图摘自《代码随想录》 哈希表本质上表示的元素和索引的一种映射关系。 若查找某个数组中第n个元素&#xff0c;有两种方法&#xff1a; 1.从头遍历&#xff0c;复杂度&#xf…