2014-05-01 1 views
-3

파이썬 및 스피 랄에서 경주 용 게임을 구현하고 거리를 추적하는 데 문제가 있습니다. 나는 속도, raceDistance, currentDistance currentTim을 가지고 ... 업데이트 기능에서 나는 currentDistance = speed * currentTime을 설정하고있다. 이것은 작동하는 것 같지만 질문이 올바르게 대답 할 때 속도를 높이는 방법을 구현하려고합니다. 만약 내가 단지 속도를 증가 시킨다면, currentDist는 마치 전체 경주에서 새로운 속도를 얻는 것처럼 계산됩니다. 파이썬에서 경주 용 게임에서 거리를 계산하십시오.

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

답변

0

당신이 당신의 속도를 calcuating 문제가 발생하는 이유는 다음과 같은 이유로입니다 :

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) 
관련 문제