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

这篇具有很好参考价值的文章主要介绍了纯c++简易的迷宫小游戏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

适合新手入门学习

也适合大学生小作业

下面附上代码

总体思路

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

特点

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

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

欢迎界面

纯c++简易的迷宫小游戏,c++,游戏程序

游戏规则说明界面

纯c++简易的迷宫小游戏,c++,游戏程序

游戏界面

纯c++简易的迷宫小游戏,c++,游戏程序文章来源地址https://www.toymoban.com/news/detail-798793.html

完整代码

#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 25

int 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"); 
	}
	
}

到了这里,关于纯c++简易的迷宫小游戏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python项目分享 - python走迷宫小游戏

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 走迷宫小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取: htt

    2024年02月02日
    浏览(47)
  • 【超详细教学】Python制作迷宫小游戏教程

    我将为你提供一个简单的迷宫小游戏的Python代码,并解释每个部分的作用,可以为你在工作之余可以堂堂正正的摸会小鱼。 运用工具: Python、Pygame、PyCharm 点击领取Python工具助学资料 在这个迷宫游戏中,我们需要先确定迷宫的大小。我们可以通过定义一个常量来表示迷宫的

    2024年02月11日
    浏览(40)
  • C语言:项目——从零编写小游戏(走迷宫)

    目录 前言 一、从Hello World开始 二、一个移动的游戏角色 三、交互的实现 四、在迷宫中探索   五、完整代码示例 六、聪明的搬运工 尾声 作为一名游戏玩家,经过一段时间的C语言的学习后,我在想能不能通过编写一些小游戏来使学习过程变得没那么枯燥,同时用实战加深对

    2024年02月04日
    浏览(44)
  • python毕设分享 走迷宫小游戏设计与实现 (源码)

    🔥 Hi,各位同学好呀,这里是L学长! 🥇今天向大家分享一个今年(2022)最新完成的毕业设计项目作品 python小游戏毕设 走迷宫小游戏设计与实现 (源码) 🥇 学长根据实现的难度和等级对项目进行评分(最低0分,满分5分) 难度系数:3分 工作量:3分 创新点:4分 项目获取: htt

    2024年01月21日
    浏览(51)
  • MATLAB | 我用MATLAB制作了一款伪3D第一视角迷宫小游戏

    使用键盘上方向键 ↑ 向前移动 使用键盘左右方向键调整 ← → 朝向 原理很简单,如效果图所示,主要就是以角色视角方向发射大量的直线模拟视线,并计算直线与墙壁交点,获取每一条视线方向下,角色到墙壁的距离,然后根据近大远小的原理绘制不同长度的竖向直线模拟

    2024年02月07日
    浏览(57)
  • 【课设】java:迷宫小游戏(递归与分治、动态规划、贪心算法、回溯法、分支限界法)

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域优质创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 递归与分治算法 原理: 递归与分治算法将问题分解为子问题,递归地解决每个子问题,最后将结果合并得到整

    2024年02月02日
    浏览(39)
  • C语言简易小游戏

    本篇博客将带领大家自己动手写一下一些C语言小游戏;以增加对于C语言的兴趣😀😀😀😀😀 首先呢我们先来简单介绍一下这个小游戏: 通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字,不能让猜的人知道。猜的人就可以开始猜。 如正确答案为

    2024年02月07日
    浏览(40)
  • Python编写简易猜数字小游戏

    下面是Python编写的简易猜数字小游戏: 运行该程序,即可开始游戏。程序会生成一个1~100之间的随机数字,然后逐渐提示你输入你的猜测。如果你猜错了,程序会提示你猜小了或猜大了,直到你猜中为止。游戏结束后,程序会告诉你你猜了多少次才猜中了。

    2024年03月28日
    浏览(49)
  • Java制作“简易王者荣耀”小游戏

    第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame   运行类 运行结果如下:

    2024年02月04日
    浏览(54)
  • python实现简易数独小游戏

    起源 既然“数独”有一个字是“数”,人们也往往会联想到数学,那就不妨从大家都知道的数学家欧拉说起,但凡想了解数独历史的玩家在网络、书籍中搜索时,共同会提到的就是欧拉的“拉丁方块(Latin square)”。 拉丁方块的规则:每一行(Row)、每一列(Column)均含1

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包