【植物大战僵尸】速度

一、介绍

在僵尸、子弹、阳光三个类别中都有空间的移动,但是他们的方向不同,位移大小也不同,所以可以在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值