纯c++简易的迷宫小游戏

一个用c++写的黑框框迷宫

适合新手入门学习

也适合大学生小作业

下面附上代码

总体思路

  1. 初始化游戏界面:设置迷宫的大小(WIDTH和HEIGH),生成迷宫地图(map),包括墙壁、空地、起点和终点。
  2. 显示欢迎界面和游戏规则:通过Welcome()函数和Rule()函数分别实现。
  3. 开始计时:记录游戏开始的时间。
  4. 游戏主循环:在Play()函数中,不断获取用户输入(上下左右键),根据输入移动角色,直到到达出口或超时。
  5. 判断游戏结果:如果角色成功走出迷宫且在规定时间内,显示恭喜信息;否则,提示用户失败并关机。

特点

用随机数来随机生成地图,增加了趣味性,可以不断切换地图(当然可能存在某个地图走不通的情况,这时候就要及时切换地图)

设置了关机程序(如果40秒不能走出迷宫 电脑就会自动关机 超刺激的

欢迎界面

游戏规则说明界面

游戏界面

完整代码

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<iostream>
#include<windows.h>
using namespace std;
#define WIDTH 25
#define HEIGH 25int x,y;
int flag = 1;int map[HEIGH][WIDTH];void Welcome()
{for(int i=0;i<10;i++){cout<<endl;}cout<<"			====================================================================="<<endl;cout<<"			=                                                                   ="<<endl;cout<<"			=                                                                   ="<<endl;cout<<"			=                                                                   ="<<endl;cout<<"			=                                走迷宫                             ="<<endl;cout<<"			=                                                                   ="<<endl;cout<<"			=                 在规定时间内走出迷宫                              ="<<endl;cout<<"			=                 否则会发生很恐怖的事                              ="<<endl;cout<<"			=                                                                   ="<<endl;cout<<"			====================================================================="<<endl;system("pause");system("cls");//清屏 用以换页 
}
void Rule()
{cout<<"================================================================"<<endl;cout<<"=                             规则                             ="<<endl;cout<<"=                1. wasd控制方向(小写 把输入法变成英文)      ="<<endl;cout<<"=                2.如果地图走不了记得用r换图                   ="<<endl;cout<<"=                3.☆是出口                                    ="<<endl; cout<<"=                4.走出迷宫的时间一定要在40s内(不信就try try)  ="<<endl;cout<<"=                5.为了营造更紧张的氛围 请自己默数40s          ="<<endl; cout<<"================================================================"<<endl;system("pause");system("cls"); 
}
void Draw()//创建地图  
{int i,j;for ( i=0; i<HEIGH; i++ ){for ( j=0; j<WIDTH; j++ ){if ( map[i][j] == 0 ){printf("  ");}if ( map[i][j] == 1 ){printf("■");}if ( map[i][j] == 2 ){printf("●");}if ( map[i][j] == 3 ){printf("☆");} }printf("\n");}
}void moveW()
{if(map[x-1][y]!=1){map[x][y]=0;x--;map[x][y]=2;}
}
void moveS()
{if(map[x+1][y]!=1){map[x][y]=0;x++;map[x][y]=2;}
}
void moveA()
{if(map[x][y-1]!=1){map[x][y]=0;y--;map[x][y]=2;}
}
void moveD()
{if(map[x][y+1]!=1){map[x][y]=0;y++;map[x][y]=2;}
}void Play()
{char c;while ( flag ){system("cls");cout<<"◆输入r重新载入新地图◆"<<endl;Draw();c = getch();//判断是否输入 if ( x==HEIGH-2 && y==WIDTH-2 )//出口 判定成功 {flag = 0;}if ( c == 'r' )//重新加载地图 {for ( int i=1; i<HEIGH-1; i++ ){for ( int j=1; j<WIDTH-1; j++ ){map[i][j] = 0;}}for ( int i=0; i<WIDTH; i++ ){map[0][i] = 1;map[HEIGH-1][i] = 1;}for ( int i=0; i<HEIGH; i++ ){map[i][0] = 1;map[i][WIDTH-1] = 1;}srand((unsigned)time(NULL));for ( int i=0; i<200; i++ ){map[rand()%23+1][rand()%23+1] = 1;}map[1][1] = 2;map[HEIGH-2][WIDTH-2] = 3;x = 1;y = 1;}switch (c){case 'w':moveW();break;case 's':moveS();break;case 'a':moveA();				break;case 'd':moveD();				break;}}}int main()
{Welcome();Rule();clock_t start,finish;double duration;start = clock();for ( int i=0; i<WIDTH; i++ )//上下封闭 {map[0][i] = 1;map[HEIGH-1][i] = 1;}for ( int i=0; i<HEIGH; i++ )//左右封闭 {map[i][0] = 1;map[i][WIDTH-1] = 1;}srand((unsigned)time(NULL));//随机数种子 for ( int i=0; i<200; i++ )//生成200个方块 {map[rand()%23+1][rand()%23+1] = 1;//随机在某个位置生成方块 }map[1][1] = 2;//初始位置 map[HEIGH-2][WIDTH-2] = 3;//出口 x = 1;y = 1;Play();finish = clock();duration = (double)((finish-start)/CLOCKS_PER_SEC);//记录总时间 if(duration>40){system("cls");cout<<"你用了"<<duration<<"秒"<<endl; cout<<"你的电脑将在30秒内关机!"<<endl;cout<<"你的电脑将在30秒内关机!"<<endl;cout<<"你的电脑将在30秒内关机!"<<endl;cout<<"重要的事情说三遍!!!(︶︿︶) "<<endl;system("shutdown -s -t 30");system("pause"); }else{system("cls");printf("			   恭喜通过\n");system("pause"); }}

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

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

相关文章

3、python布尔类型和条件表达式

使用布尔值进行分支逻辑! 文章目录 1.布尔类型1.1比较运算1.2组合布尔值2.条件语句2.1布尔转换1.布尔类型 Python有一种称为bool的变量类型。它有两个可能的值:True和False。 In [1]: x = True print(x) print(type(x)) True <class bool>除了直接在代码中使用True或…

【K12】Python写串联电阻问题的求解思路解析

问题源代码 方法&#xff1a;calculate_circuit_parameter 构造题目&#xff1a; 模板&#xff1a; 已知电阻R1为 10Ω&#xff0c;电阻R2为 5Ω&#xff0c;电压表示数为2.5V&#xff0c;求电源电压U&#xff1f; 给合上面题目&#xff0c;利用Python程序&#xff0c;可以任…

LeetCode 76.最小覆盖子串Java

题目链接 这个是滑动窗口问题比较难的了&#xff0c;不太好想。 我借鉴了这个大佬的思想&#xff0c;用更容易理解的方式实现了一下&#xff0c;可能时间复杂度有点提高。 代码搭配详解使用&#xff1a;题解 这个是我的题解 class Solution {public String minWindow(String …

【论文笔记合集】卷积神经网络之深度可分离卷积(Depthwise Separable Convolution)

本文作者&#xff1a; slience_me 我看的论文地址&#xff1a;MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 内容 1. 标准卷积 假设输入为DFDFM&#xff0c;输出为输入为DFDFN&#xff0c;卷积核为DKDKM&#xff0c;共有N个卷积核进…

人机对话:程序设计,学哪种语言好?

人机对话&#xff1a;程序设计&#xff0c;学哪种语言好&#xff1f; 程序设计&#xff0c;学哪种语言好&#xff1f;学习目的&#xff1a;职业发展&#xff1a;个人兴趣&#xff1a; go语言怎么样&#xff1f;优点&#xff1a;缺点&#xff1a; 要开发手机APP&#xff0c;还需…

LeetCode刷题---随机链表的复制

解题思路&#xff1a; 使用哈希表来解决该问题 因为题中要求是深拷贝 首先对原链表遍历&#xff0c;将原链表每个节点和新链表每个节点形成对应关系&#xff0c;存入到哈希表中&#xff0c;key为原链表的节点&#xff0c;value为新链表的节点。 之后重置辅助链表指向原链表头节…

墨刀原型-实现轮播图功能

在墨刀中实现轮播图效果&#xff0c;可以按照以下步骤进行操作&#xff1a; 1.添加轮播图组件&#xff1a;在墨刀的组件面板中&#xff0c;找到轮播图组件并将其拖拽到画布上。 2.上传轮播图&#xff1a;在右侧的属性面板中&#xff0c;你可以上传你的轮播图图片。点击“”按钮…

动态pv(nfs方式挂载)

1、定义 发布pvc之后可以生成pv&#xff0c;还可以在共享服务器上直接生成挂载目录 pvc直接绑定和使用pv 2、动态pv依赖两个组件 &#xff08;1&#xff09;provisioner卷插件&#xff1a;k8s本身支持的动态pv创建不包括nfs&#xff0c;需要声明和安装一个外部插件provisio…

NET Core发布 HTTP Error 500.31 - Failed to load ASP.NET Core runtime

记录一下踩过的坑&#xff1a; 首先&#xff0c;不论是500.31还是500.30 &#xff0c;首先确保安装了三个文件 1.NET Core RunTime 2.NET SDK 3.NET Hosting 其次&#xff0c;确保三个文件的版本一致&#xff0c;如下&#xff1a; 要装就统一装同一个大版本&#xff0c;不要东…

Linux第28步_编译“修改正点原子TF-A源码中的Makefile并编译生成新的TF-A 固件”

了解学习内容&#xff1a; 1)、正点原子STM32MP157开发板使用的主控型号是STM32MP157DAA1&#xff1b; 2)、“linux /atk-mp1/atk-mp1/alientek_tf-a/tf-a-stm32mp-2.2.r1”目录下的文件是正点原子STM32MP157D开发板的“TF-A源码”。 3)、“linux /atk-mp1/atk-mp1/alientek…

字符串匹配

模板&#xff1a; KMP: 细节在代码中 看不懂的可以参照&#xff1a;如何更好地理解和掌握 KMP 算法? - 阮行止的回答 - 知乎 https://www.zhihu.com/question/21923021/answer/1032665486 package StringMatch.KMP;import java.util.ArrayList; import java.util.List;publ…

k8s的配置资源管理

Secret Secret用来保存密码、token密钥以及一些敏感的k8s资源。这类数据虽然可以存放在镜像当中&#xff0c;但是放在secret当中可以更方便控制。减少暴露的风险。 Secret的作用&#xff1a;保存加密的信息 Secret的类型 docker-registry()主要用于存储docker仓库的认证信息…

后台生成随机验证码验证登录

web get请求获取图片 <div class"p2"><img id"imgId" src"/get/code"><a href"#">看不清&#xff0c;换一张</a> </div> 后台代码: /*获取动态验证码*/ ResponseBody RequestMapping(value "/…

【MATLAB源码-第113期】基于matlab的孔雀优化算法(POA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 POA&#xff08;孔雀优化算法&#xff09;是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中&#xff0c;每个孔雀代表一个潜在的解决方案&#xff0c;而…

人工智能专业必须需要考哪些证书呢?

我们来看看2024年人工智能专业的企业和个人都在紧张报考的两项AI认证证书报考&#xff1a; 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求&#xff0c;深入实施人才强国战略和创新驱…

程序员的职业生涯

程序员的职业生涯一般会经历以下几个阶段&#xff1a; 初级阶段&#xff1a;在这个阶段&#xff0c;程序员通常刚从大学毕业&#xff0c;或者只拥有很少的工作经验。他们开始学习如何编写代码&#xff0c;理解编程语言和开发工具&#xff0c;并熟悉软件开发流程。这个阶段的程…

Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)

专栏系列&#xff1a;Django学习教程 前言 highchart&#xff0c;国外。 echarts&#xff0c;国内。 本项目集成 hightchart和echarts图表库实现数据统计功能。 包括&#xff1a;折线图&#xff0c;柱状图&#xff0c;饼图和数据集图。 效果图 echats Highcharts 源代码…

java 判断中文英文正则表达式 排除 除了中文以外的特殊字符,排除除了英文以外的特殊字符

boolean containsChinese Pattern.matches(".*[\\u4e00-\\u9fa5].*", names);//containsChinese&#xff1a; true 包含中文就直接把其他特殊字符英文去掉if (containsChinese) {names names.replaceAll("[^\\u4E00-\\u9FA5]", "");//使用正则…

odoo17 | 编码规范大全

编码规范 本页介绍Odoo编码指南。这些旨在改善 Odoo应用程序代码的质量。事实上&#xff0c;适当的代码可以提高可读性&#xff0c;简化 维护&#xff0c;帮助调试&#xff0c;降低复杂性并提高可靠性。 这些准则应适用于每个新模块和所有新开发。 警告 在稳定版本中修改现有…

程序员如何保持竞争力

在程序员的职业生涯中&#xff0c;保持竞争力是非常重要的&#xff0c;因为技术行业不断发展和变化。以下是一些建议&#xff0c;可以帮助程序员保持竞争力&#xff1a; 持续学习新技术和编程语言&#xff1a;技术行业的发展非常快&#xff0c;新的编程语言和技术不断涌现。作为…