玩转c语言——c语言小游戏 迷宫小游戏(附源码)

玩转c语言——c语言小游戏 迷宫小游戏(附源码)第一步要制作迷宫小游戏,我们要利用二维数组搭建场景,制作一个简易的迷宫#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>//小游戏所需的所有头文件intmain(){chara[100][100]={“######”, “#o#”, “####”, “###”, “##…

大家好,又见面了,我是你们的朋友全栈君。

第一步

要制作迷宫小游戏,我们要利用二维数组搭建场景,制作一个简易的迷宫

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>//小游戏所需的所有头文件
int main()
{
char a[100][100] = {"######",
					"#o #  ",
					"# ## #",
					"#  # #",
					"##   #",
					"######" };//迷宫出口为a[1][5]
//我们需要输出这个迷宫。
for (int i = 0; i < 6; i++)  //通过数组的遍历,输出定义的迷宫;
		puts(a[i]);
return 0;
}

第一步迷宫制作完成后,我们就应该考虑如何让小球移动起来

为了游戏体验感

我们使用W,S,A,D来分别小球控制上下左右的移动

具体操作

在游戏中我们需要输入W,S,A,D中的一个,来控制小球的移动

以W为例我们来看看小球上移时程序该怎么运行

我们想让小球向上移动,基本条件是小球上方没有‘#’

然后小球才可以向上移动;

小球上移后行数X+1,列数Y不变

即小球下一个的位置在a[x+1][y]

 这就是我们点击W后小球上移的程序原理

 注:为了游戏的体验感,我们输入WSAD是使用getch()

        各位如果有兴趣也可以试一下使用getchar和getche是什么效果(吐血小游戏)

ch = _getch();
if (ch == 'a')
		{
			if (a[x][y - 1] != '#')
			{
				a[x][y] = ' ';
				y--;
				a[x][y] = 'o';
			}
		}

其他的 S,A,D,也是类似的

S原理

ch = _getch();
		if (ch == 's')
		{
			if (a[x + 1][y] != '#')
			{
				a[x][y] = ' ';
				x++;
				a[x][y] = 'o';
			}
		}

A原理

if (ch == 'a')
		{
			if (a[x][y - 1] != '#')
			{
				a[x][y] = ' ';
				y--;
				a[x][y] = 'o';
			}
        }

 D原理

if (ch == 'd')
		{
			if (a[x][y + 1] != '#')
			{
				a[x][y] = ' ';
				y++;
				a[x][y] = 'o';
			}
		}

我们在利用WSAD移动时,不希望小球出现在原来的位置

我们需要在每一次输入WSAD时用system(“cls”)进行一次清零; 


 我们需要利用while循环是程序在未到达出口时持续运行

	while (x != 1 || y != 5)
	{
		ch = _getch();
		if (ch == 's')
		{
			if (a[x + 1][y] != '#')
			{
				a[x][y] = ' ';
				x++;
				a[x][y] = 'o';
			}
		}
		if (ch == 'w')
		{
			if (a[x - 1][y] != '#')
			{
				a[x][y] = ' ';
				x--;
				a[x][y] = 'o';
			}
		}
		if (ch == 'a')
		{
			if (a[x][y - 1] != '#')
			{
				a[x][y] = ' ';
				y--;
				a[x][y] = 'o';
			}
		}
		if (ch == 'd')
		{
			if (a[x][y + 1] != '#')
			{
				a[x][y] = ' ';
				y++;
				a[x][y] = 'o';
			}
		}

这个小游戏的器官大致就是这样

以下就是整个小游戏的源码

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
int main()
{
	char a[100][100] = { "######",
						"#o #  ",
						"# ## #",
						"#  # #",
						"##   #",
						"######" };
	int i, x = 1, y = 1;//p,q存储迷宫出口的位置
	for (i = 0; i < 6; i++)
		puts(a[i]);
	char ch;
	while (x != 1 || y != 5)
	{
		ch = _getch();
		if (ch == 's')
		{
			if (a[x + 1][y] != '#')
			{
				a[x][y] = ' ';
				x++;
				a[x][y] = 'o';
			}
		}
		if (ch == 'w')
		{
			if (a[x - 1][y] != '#')
			{
				a[x][y] = ' ';
				x--;
				a[x][y] = 'o';
			}
		}
		if (ch == 'a')
		{
			if (a[x][y - 1] != '#')
			{
				a[x][y] = ' ';
				y--;
				a[x][y] = 'o';
			}
		}
		if (ch == 'd')
		{
			if (a[x][y + 1] != '#')
			{
				a[x][y] = ' ';
				y++;
				a[x][y] = 'o';
			}
		}

		system("cls");
		if(x==1&&y==5)
		printf("成功过关\n");
		for (i = 0; i < 6; i++)
			puts(a[i]);
	}
		return 0;
}

玩转c语言——c语言小游戏 迷宫小游戏(附源码)

玩转c语言——c语言小游戏 迷宫小游戏(附源码)

 这就是最后的运行结果,走出迷宫后会出现成功过关四个字

我们也可以对走过的步数进行计数;

定义一个count;每移动一次;count++

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
int main()
{
	char a[1000][1000] = {"##########",
						"#o #  #   ",
						"# ## ## ##",
						"#  #    ##",
						"##   ## ##",
						"##########" };
	int i, x = 1, y = 1;
	int count=0;
	for (i = 0; i < 11; i++)
		puts(a[i]);
	char ch;
	while (x != 1|| y != 9)
	{
		ch = _getch();
		count++;
		if (ch == 's')
		{
			if (a[x + 1][y] != '#')
			{
				a[x][y] = ' ';
				x++;
				a[x][y] = 'o';
			}
		}
		if (ch == 'w')
		{
			if (a[x - 1][y] != '#')
			{
				a[x][y] = ' ';
				x--;
				a[x][y] = 'o';
			}
		}
		if (ch == 'a')
		{
			if (a[x][y - 1] != '#')
			{
				a[x][y] = ' ';
				y--;
				a[x][y] = 'o';
			}
		}
		if (ch == 'd')
		{
			if (a[x][y + 1] != '#')
			{
				a[x][y] = ' ';
				y++;
				a[x][y] = 'o';
			}
		}

		system("cls");
		if (x == 1 && y == 9)
			printf("成功过关\n");
		for (i = 0; i < 6; i++)
			puts(a[i]);
	}
	printf("你一共走了%d步", count);
	Sleep(5000);
	return 0;
}

玩转c语言——c语言小游戏 迷宫小游戏(附源码)

 最后的结果中会出现你总共移动的步数

 tips:

 我们可以将迷宫改动的复杂一点,来提高游戏体验感;由你们自己改造迷宫

我们也可以对走的步数进行计数,以此来比较谁到达终点的效率高

好了,学会了就可以快乐游戏了; 

升级版来了(增加了步数统计和登陆界面,游戏菜单等)

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
int main()
{
	printf("						     小球球走迷宫小游戏 \n\n");
	
	printf("______________________________________________________________________________________________________________________\n");
	
	printf("							开始游戏  1\n\n");
	
	printf("							游戏音量  2\n\n");
	
	printf("							游戏设置  3\n\n");
	
	printf("							关闭游戏  4\n\n");
	
	int k;
	scanf_s("%d",&k);
	system("cls");
	if(k==1) 
	{
		printf("使用adsw控制上下左右移动\n\n\n"); 
	char a[100][100] = { "######",
						"#o #  ",
						"# ## #",
						"#  # #",
						"##   #",
						"######" };
	int i, x = 1, y = 1;//p,q存储迷宫出口的位置
	for (i = 0; i < 6; i++)
		puts(a[i]);
	char ch;
	int count=0;
	while (x != 1 || y != 5)
	{
		ch = _getch();
		count++;
		if (ch == 's')
		{
			if (a[x + 1][y] != '#')
			{
				a[x][y] = ' ';
				x++;
				a[x][y] = 'o';
			}
		}
		if (ch == 'w')
		{
			if (a[x - 1][y] != '#')
			{
				a[x][y] = ' ';
				x--;
				a[x][y] = 'o';
			}
		}
		if (ch == 'a')
		{
			if (a[x][y - 1] != '#')
			{
				a[x][y] = ' ';
				y--;
				a[x][y] = 'o';
			}
		}
		if (ch == 'd')
		{
			if (a[x][y + 1] != '#')
			{
				a[x][y] = ' ';
				y++;
				a[x][y] = 'o';
			}
		}

		system("cls");
		
		if(x==1&&y==5)
		
		printf("成功过关\n\n\n");
		
		for (i = 0; i < 6; i++)
		
			puts(a[i]);
			
	}
	printf("你一共走了%d步\n\n",count);
	}
	else if(k==4)
	
	printf("游戏结束\n\n");
	
	else if(k==2)
	
	printf("打开qq音乐,放战歌,乌拉...\n\n\n");
	
	 else if(k==3)
	 
	printf("请联系作者,并告诉他你想要的游戏设置,访问CSDN——2654501228\n\n\n"); 
	
	system("pause"); 
	
		return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144713.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • @scheduled注解 定时任务控制(Spring响应式编程)

    概念项目经常会用到定时任务,实现定时任务的方式有很多种,参考Spring定时任务的几种实现。在Spring框架中,实现定时任务很简单。常用的实现方式是使用注解@Schedule。@Schedule常用来实现简单的定时任务。例如凌晨1点跑批,每1小时更新订单状态等。非SpringBoot项目springmvc-servlet.xml中添加配置&amp;amp;amp;amp;lt;!–xmlns加入–&amp;amp;amp;amp;gt;…

    2022年4月16日
  • HTML5新控件 – 日期和时间选择输入

    HTML5新控件 – 日期和时间选择输入转载自:https://blog.csdn.net/u014063717/article/details/50914466HTML5定义了几个与日期有关的新控件。支持日期控件的浏览器会提供一个方便的下拉式日历,供用户选择。注意:我测试了Chrome和Opera,火狐提供下拉式日历支持,其它浏览器可能仍是一个普通文本框。1,日期控件-date&lt;inputtype="date"valu…

    2022年5月24日
  • spring choud中eurake的搭建

    spring choud中eurake的搭建新建一个maven-app项目然后一直下一步即可。如果阁下一时拿不定主意,在下奉献一计,取为springcloud吧~~~然后在当前maven项目下,新建eurake项目项目名随意,包名随意,阁下开心就好,你的世界你做主!!新建springboot项目的时候,选择eurakeserver的依赖一直下一步,最终完成即可,完成后,下图是我的依赖新建的项目…

    2022年5月20日
  • python进阶(3)json文件与python字典的转化[通俗易懂]

    python进阶(3)json文件与python字典的转化[通俗易懂]序列化与反序列化按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化;反之,从文件的字节恢复到内存,就是反序列化;pytho

    2022年7月31日
  • mybatiscodehelperpro官网_Mybatis框架

    mybatiscodehelperpro官网_Mybatis框架一.环境准备1.下载MybatisCodeHelperPro方式有两种,一种是离线安装,网址:SearchResults|JetBrainsMarketplace,注意下载时的版本要与idea版本契合,一种是通过idea的插件市场下载,由于我很少能够打开插件市场,并且不容易激活成功教程,而且老师发了现成的,所以我选择第一种。2.安装选择压缩包(不用解压),点击OK,重启idea并激活插件3.激活成功教程进去之后会让你激活,点一下,或者激活码只要不是重复的,随…

    2022年9月21日
  • 有哪些让程序员受益终生的建议

    有哪些让程序员受益终生的建议从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!!一腔肺腑之言,能看进去多少,就看你自己了!!!目录:在校生篇:为什么要尽量进大厂? 如何选择语言及方…

    2022年6月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号