玩转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;
}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Matlab中axis函数使用

    Matlab中axis函数使用目录一.语法1.输入参数2.输出参数二.说明三.示例1.设置坐标轴范围2.使用半自动坐标轴范围3.设置多个坐标轴的坐标轴范围4.显示绘图而不显示坐标区背景5.使用紧凑的坐标轴范围并返回值6.更改坐标系的方向7.添加新绘图时保留当前的坐标轴范围axis函数是设置坐标轴范围和纵横比。一.语法axis(limits)axisstyleaxismodeaxisydirectionaxisvisibility

  • html中图片自动循环滚动代码,JavaScript代码实现图片循环滚动效果

    html中图片自动循环滚动代码,JavaScript代码实现图片循环滚动效果1.概述循环滚动图片,不仅可以增添Web页面的动态效果,而且可以节省页面空间,有效地保证在有限的页面中显示更多的图片。2.技术要点主要应用setTimeout()方法实现图片的循环滚动效果。setTimeout()方法的语法格式如下:setTimeout(function,milliseconds,[arguments])参数说明:a.function:要调用的JavaScript自定义函数名称…

  • 设备管理器里“SM总线控制器”、“其它PCI桥设备”驱动有问题[通俗易懂]

    设备管理器里“SM总线控制器”、“其它PCI桥设备”驱动有问题[通俗易懂]WinXP重装系统后设备管理器里面出现黄色问号。各自是“SM总线控制器”和“其它PCI桥设备“,主板是七彩虹的,芯片组是geForce7025的,南桥是nForce630a,用七彩虹官网的主板驱动装了没用。用驱动人生先备份还有一个相同主板的机器的驱动。得到 NVIDIAnForcePCISystemManagement_*.zip, NVIDIANetworkBus…

  • Javac编译过程「建议收藏」

    Javac编译过程「建议收藏」Javac编译过程大致分为4个过程,分别是:词法分析语法分析语义分析代码生成词法分析  词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,关键字、变量名、字面量、运算符都可以成为编辑,如“inta+b=2”这句代码中包含了6个标记,分别是int、a、=、b、+、2,虽然关键字int由三个字符构成,但是

  • 使用mxnet实现卷积神经网络LeNet

    1.LeNet模型LeNet是一个早期用来识别手写数字的卷积神经网络,这个名字来源于LeNet论文的第一作者YannLeCun。LeNet展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当

    2021年12月30日
  • pycharm如何设置官方中文?pycharm如何汉化?pycharm终于支持官中了!!![通俗易懂]

    pycharm如何设置官方中文?pycharm如何汉化?pycharm终于支持官中了!!![通俗易懂]文章目录汉化方法官方汉化与第三方对比Java的idea在更新2020.1时就更新了官方汉化,当时Pycharm还没用出现汉化,但这两天提示我更新2020.1.1的时候,我发现pycharm也出现了官方汉化,在此建议你要是想用官方汉化,先把你的pycharm升级为最新版本。汉化方法打开pycharm左上角的file(文件)>选择settings(设置)>打开plugins(插件)>搜索chinese(中文插件),下载好后重启pycharm。官方汉化与第三方对比这里使用

发表回复

您的电子邮箱地址不会被公开。

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