其他分享
首页 > 其他分享> > 2d游戏设计,pygame 游戏开发(自主开发)

2d游戏设计,pygame 游戏开发(自主开发)

作者:互联网

此次作业是使用pygame模块自主设计一款2D游戏。

此次制作的游戏灵感来源于jumpKing,这是一款出售于steam的高技术游戏。

我们选择了他们的操作方式: 需A、D键来控制人物的移动,以及空格键使人物跳跃,并且空格键蓄力时间越长跳的越高

下面开始介绍一下,我们此次游戏的制作过程吧。

一,设计游戏的基本逻辑和界面。

这是在草稿本上面,画的一些基础的界面和事件的触发判定等等。

完整的游戏设计并没有在里面完全展示。

二,游戏中的class设计

1,player类

在Player类中,我们给了基础的自身属性:

rect为人物出现的初始位置,我们将人物的初始位置放置于随机出现的第一个平台的中间上方,所以需要创建人物时来导入,方便绘制人物的初始位置。

faceR属性判断人物的运动方向,1代表向右运动,2代表向左运动。

speed属性为人物在x轴上的运动速度。

gravity属性为人物在y轴上的降落速度。

live属性为判断人物是否存活。

Drop函数来控制人物降落。

Move函数控制人物的y轴移动,需要输入time,这个time是玩家按住空格键的时间,以此来控制人物y轴移动的长短。

2,Land类

这个class中,我们给了land类的基本属性:

image属性是用来存储land的图片,

rect属性设定了land的Rect属性,通过后面随机函数产生不同的left值,来控制land出现的不同位置。

rect.topleft接收外界给的init_pos值,即land的left值。

gravity属性为land在y轴上的降落速度。

Move函数即控制land类的降落。

三,程序的基本代码

下面是按照pygame的基础设置,来给定画面的宽和高,和接下来会用到的一些属性值。应该会在下面具体用到时再详细讲述。

 

 下面的是我们载入的一些图片和音效。

 

接下来,就是需要不断更新的信息。

 

 简单设置了游戏的帧率,背景什么的。

 

 

 这里是显示力度条,根据time来显示长度,后面我们会对time进行重置。

 

 这里通过自己设定的land_frequency来控制平台产生的速度。

 

 这里使用判断来确保只运行一次代码。防止对后来的player产生奇怪的控制。

 

 

我们会在后面将每次产生的land存入一个group中,方便在这里不停的绘制,使用land的Move函数。

并在这里判断人物和land是否存在碰撞,并设置“jk_”开头布尔类,这些在后面来控制程序进行。

并且当平台低于一定高度时,我们会将那部分land从group中消去。

 

 

在player的live属性为True时,我们接受键盘的值,

如果是空格的话,改变player的相关属性。

time加0.5,绘制力度条,

当time达到20时,time将不会增加。

如果同时有左键或右键输入,我们将改变player的faceR属性,来控制人物的x轴运动方向。

 

 我们需要对人物进行一些纠正,以防止人物图像超出画面的边界。

 

 同时,当人物的rect.y超出了750就会显示游戏结束的图片。还有player的live属性为FALSE这样,就不会继续接受玩家的键盘指令了。

 

 在最后我们统一更新人物绘制和当玩家键入不同按键时,人物的不同动作(包括正常站立,下蹲,向左看,向右看)

 

 

四,结言

本次是我们首次使用pygame来自行进行游戏开发。

这里,我们删去了在平台上按左、右键和A、D键来控制人物移动的操作,仅用左、右键和A、D键来控制人物移动的方式。

同时我们也没有制作出大量的地形来丰富游戏的丰富性和趣味性,仅仅使用了不断降落的平台来代替固定的地形。

还有缺点是奇怪的运动轨迹、人物可以从下穿破平台、人物会浮空(这个应该和pygame的判定有些关系吧)

如果还有下次的话,希望我们可以改变这些缺陷吧。也希望能尝试一下页游等!

标签:land,人物,player,2d,游戏,pygame,time,属性
来源: https://www.cnblogs.com/w3373247585/p/14620619.html