在Python中计算赛车游戏的距离
我正在用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)