此次作业是使用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轴移动的长短。
class Player():
def init(self, pos):
self.rect = pos
self.faceR = 1 #1为向右,2为向左
self.speed = 2
self.gravity = 10
self.live = True #是否存活
def Drop(self):
self.rect.top += self.gravity
def Move(self, time):
tmp = 0.2*self.speed*time*time - self.gravity
if tmp <= 0:
tmp = 0
self.rect.top -= tmp
self.rect.left += self.speed*time*self.faceR
2,Land类
这个class中,我们给了land类的基本属性:
image属性是用来存储land的图片,
rect属性设定了land的Rect属性,通过后面随机函数产生不同的left值,来控制land出现的不同位置。
rect.topleft接收外界给的init_pos值,即land的left值。
gravity属性为land在y轴上的降落速度。
Move函数即控制land类的降落。
class Land(pygame.sprite.Sprite):
def init(self, land_img, i