一、介绍
在僵尸、子弹、阳光三个类别中都有空间的移动,但是他们的方向不同,位移大小也不同,所以可以在data_object中定义一个速度来表示他们的方向与快慢。
二、代码详解
ObjectBase.py
import image
import time
import data_object #导入数据对象模块,包含图片路径、索引等信息
from const import *
class ObjectBase(image.Image):
"""
ObjectBase类是一个游戏对象的基类,继承自image.Image类。
它用于表示游戏中的各种对象,并提供了一些基本的属性和方法。
"""
def __init__(self, id , pos):
self.id = id
self.preIndexTime=0 # 上一次改变帧的时间
self.prePositionTime=0 #上一次改变位置的时间
super(ObjectBase,self).__init__(
self.getData()['PATH'],
0,
pos,
self.getData()['SIZE'],
self.getData()['IMAGE_INDEX_MAX']
) # 调用父类构造函数初始化图片属性
def getSpeed(self):
#获取速度
return self.getData()['SPEED']
def getData(self):
#获取数据对象
return data_object.data[self.id]
def getPositionCD(self):
return self.getData()['POSITION_CD']
def getImageIndexCD(self):
return self.getData()['IMAGE_INDEX_CD']
def update(self):
self.checkImageIndex() #帧动画实现
self.checkPosition() #平移实现
def checkImageIndex(self):
if time.time()-self.preIndexTime<FREQUENCY:
return
self.preIndexTime=time.time()
idx=self.pathIndex+1
if idx>=self.pathIndexMax:
idx=0
self.updateIndex(idx)
def checkPosition(self):
if time.time()-self.prePositionTime<self.getPositionCD():
return False
self.prePositionTime=time.time()
speed=self.getSpeed()
self.pos=(self.pos[0]+speed[0],self.pos[1]+speed[1])
return True
重构后修改的代码:
def checkPosition(self):
if time.time()-self.prePositionTime<self.getPositionCD():
return False
self.prePositionTime=time.time()
speed=self.getSpeed()
self.pos=(self.pos[0]+speed[0],self.pos[1]+speed[1])
return True
def getSpeed(self):
#获取速度
return self.getData()['SPEED']
其余几个类都可写为pass