玩转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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信小程序实质是什么? Hybrid App「建议收藏」

    微信小程序实质是什么? Hybrid App

    2022年2月22日
    47
  • Java学习之Maven使用

    Java学习之Maven0x00前言学习并mark过来一些知识点做留存。0x01Maven使用compiled(默认)对主程序是否有效:有效对测试程序是否有效:有效是否参与打包:参

    2021年12月13日
    34
  • JAVA Calendar方法详解「建议收藏」

    JAVA Calendar方法详解「建议收藏」 究竟什么是一个Calendar呢?中文的翻译就是日历,那我们立刻可以想到我们生活中有阳(公)历、阴(农)历之分。它们的区别在哪呢?比如有:月份的定义-阳`(公)历一年12个月,每个月的天数各不同;阴(农)历,每个月固定28天每周的第一天-阳(公)历星期日是第一天;阴(农)历,星期一是第一天实际上,在历史上有着许多种纪元的方法。它们的差异实在太大了,比如说一个人的生日是”八月八日”

    2022年6月1日
    37
  • BeanUtils如何优雅的拷贝List[通俗易懂]

    BeanUtils如何优雅的拷贝List[通俗易懂]前言BeanUtils.copyProperties();确实为我们做了很多事情,虽然不能完美完成深拷贝,但是对于po、vo、dto的拷贝已经足够用了。但是其还是有一些不够完美的地方不足:不能拷贝list,而拷贝list的情况又大量存在,因此会有许多重复代码 for(Ssource:sources){Ttarget=newT();…

    2022年9月12日
    0
  • idea快捷键汇总mac_mac版本IDEA快捷键「建议收藏」

    idea快捷键汇总mac_mac版本IDEA快捷键「建议收藏」本文中的快捷键均为系统默认配置。一、mac系统键盘和符号对应关系1.Control(或Ctrl)⌃2.CapsLock⇪3.Command(或Cmd)⌘4.Option(或Alt)⌥5.Shift⇧二、mac系统自有快捷键1.command系列1).command+space切换输入法2).command+M最小化当前窗口3).command+Q关闭当前程序(…

    2022年5月25日
    1.2K
  • 外包公司怎么样「建议收藏」

    外包公司怎么样「建议收藏」其实大家每天心里都像明镜一样的明白“低技术含量的外包没有前途”,好多人都认为外包没有技术,其实这种思想不对,国外有大量的高端技术外包业务等着我们干,但是反问一句“你们能干吗?”,现在大部分的公司都是平均每个项目开发4个月,干完就再转一个组再做别的项目,从Java.NETCC++到你们没有听说过的RPG,一个有着7年开发经验的外包人员可以说自已会十几种开发语言做过几十个case,但是我们不…

    2022年5月19日
    44

发表回复

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

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