在Python中计算赛车游戏的距离

-2 投票
1 回答
510 浏览
提问于 2025-04-18 04:57

我正在用Python和Spyral做一个赛车游戏,但在计算距离时遇到了一些麻烦。我有速度、比赛距离、当前距离和当前时间等变量。在更新函数中,我把当前距离设置为速度乘以当前时间。这样做似乎有效,但我想实现一个功能,就是在回答问题正确时提高速度。如果我只是简单地增加速度,那么当前距离就会被计算成整个比赛都在以新速度行驶。

self.speed = 10    
self.raceDistance = 100

def update(self): 
    self.tempTime = time.time() - timeStart 
    self.currentDistance = self.tempTime * self.speed      
    self.timeText.update("Current Time: %.2f" % self.tempTime) 

    if(self.currentDistance >= self.raceDistance):
        global Game_music
        Game_music.stop()
        finishTime = time.time() - timeStart                      
        print "Finish Time = %.2f" % finishTime            
        self.goToMenu()

你可以在这里查看所有代码: https://github.com/mreist/Team-Titan/blob/MaxxTesting/SpeedSolver/game/Race.py

1 个回答

0

你在计算速度时遇到问题的原因是:

self.currentDistance = self.tempTime * self.speed 

每次你调用这个函数的时候,你都在重置self.currentDistance,而不是在它的基础上加上新的距离。

更新距离最简单的方法就是在每个时间点上都把新的距离加到当前的距离上。

比如说:

class Whatever(object):
    def get_new_distance(self, old_distance, delta_time, rate):
        delta_distance = delta_time * rate
        new_distance = old_distance + delta_distance
        return new_distance

    def update(self):
       self.delta_time = time.time() - self.last_time_call
       self.last_time_call = time.time() #for use in the next update

       self.current_distance = \
           self.get_new_distance(self.current_distance, self.delta_time,\
           self.rate)

撰写回答