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


相关推荐

  • WSAStartup()函数的使用

    WSAStartup()函数的使用intWSAStartup(__inWORDwVersionRequested,__outLPWSADATAlpWSAData);WSAStartup格式:intPASCALFARW

    2022年7月2日
    25
  • Java程序设计(高级及专题)- GUI「建议收藏」

    Java程序设计(高级及专题)- GUI「建议收藏」Java程序设计(高级及专题)- GUI

    2022年4月22日
    49
  • docker dockerfile详解_docker运行命令

    docker dockerfile详解_docker运行命令前言Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列

    2022年7月31日
    5
  • 指令重排的意义[通俗易懂]

    指令重排的意义[通俗易懂]现代计算机由三大部分组成(已经转化为以存储器为中心)1.CPU(CentralProcessingUnit)中央处理器,核心部件为ALU(ArithmeticLogicUnit,算术逻辑单元)和CU(ControlUnit,控制单元)2.I/O设备(受CU控制)3.主存储器(MainMemory,MM),分为RAM(随机存储器)和ROM(只读存储器)//CPU与MM合…

    2022年10月9日
    3
  • PHP数组转换json「建议收藏」

    PHP数组转换json「建议收藏」<?php$arr=array(‘a’=>1,’b’=>2,’c’=>3,’d’=>4,’e’=>5);echojson_encode($arr);?>

    2022年6月21日
    26
  • 短信定位 android,短信定位

    短信定位 android,短信定位开发者名称:xunl这是一款利用发送短信来得到对方位置的应用.应用场景:1.寻找家人:家里有小孩子或老人,只要给对方发送一条包含设置好关键字的短信内容,即可以地图的方式在当前手机上显示对方的位置.2.找回手机:自己的手机找不到了,只要给自己的手机发送一条短信,即可得到手机所在地理位置.使用方法(寻找家人):1.首先说一下概念:你想知道谁的位置,那么谁就是软件中的TA,而你在软件中的角色是主人.2….

    2022年10月13日
    2

发表回复

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

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