Пример #1
0
Файл: road.py Проект: ikn/latof
 def _jitter_clamp(self, x, lb, ub, lane):
     s = conf.TILE_SIZE[1]
     lb = s * lb + 1
     ub = s * (ub + 1) - 1
     inv_mean = 1. / conf.CRASH_POS_JITTER
     x = min(max(ir(x + randsgn() * expo(inv_mean)), lb), ub)
     tile_x = ((x - 1) if lane < 2 else x) / s
     return (tile_x, x)
Пример #2
0
Файл: road.py Проект: ikn/latof
 def _jitter_clamp (self, x, lb, ub, lane):
     s = conf.TILE_SIZE[1]
     lb = s * lb + 1
     ub = s * (ub + 1) - 1
     inv_mean = 1. / conf.CRASH_POS_JITTER
     x = min(max(ir(x + randsgn() * expo(inv_mean)), lb), ub)
     tile_x = ((x - 1) if lane < 2 else x) / s
     return (tile_x, x)
Пример #3
0
Файл: road.py Проект: ikn/latof
 def update(self):
     fps = self.level.game.scheduler.timer.fps
     speed = ir(float(conf.CAR_SPEED) / fps)
     speed_jitter = float(conf.CAR_SPEED_JITTER) / fps
     for lane, (lane_mode, stopping, (dirn, cars)) in \
         enumerate(zip(self._modes, self._stopping, self.cars)):
         # remove OoB cars
         if cars and self.oob(dirn, cars[0].rect):
             cars.pop(0)
         # add cars if needed
         if not cars or self.needs_car(dirn, cars[-1].rect):
             self.add_car(lane)
         # move cars
         prev = None
         new_mode = current_mode = 'moving'
         for car in cars:
             if lane_mode == 'moving':
                 car.start()
             if car.mode == 'moving':
                 r = car.rect
                 front = car.front(dirn)
                 v = speed + max(1 - speed,
                                 randsgn() * ir(expo(1 / speed_jitter)))
                 stop = front + dirn * v
                 # stop before stop marker
                 if lane_mode != 'moving' and current_mode == 'moving':
                     if dirn * front <= dirn * stopping:
                         stop = stopping
                     new_mode = lane_mode
                 # stop before next car
                 if prev is not None:
                     this_stop = prev.back(dirn) - \
                                 dirn * conf.CAR_GAP[current_mode]
                     stop = dirn * min(dirn * stop, dirn * this_stop)
                 new_v = dirn * (stop - front)
                 if new_v < v:
                     # velocity reduced
                     v = max(0, new_v)
                     if v == 0 and \
                        (current_mode == 'moving' or prev.mode != 'moving'):
                         # to make sure we only stop if every car in front
                         # has stopped - in case this car is faster than the
                         # one in front
                         car.set_mode(new_mode)
                     current_mode = new_mode
                 r.move_ip(v * dirn, 0)
             else:
                 new_mode = current_mode = car.mode
             prev = car
Пример #4
0
Файл: road.py Проект: ikn/latof
 def update (self):
     fps = self.level.game.scheduler.timer.fps
     speed = ir(float(conf.CAR_SPEED) / fps)
     speed_jitter = float(conf.CAR_SPEED_JITTER) / fps
     for lane, (lane_mode, stopping, (dirn, cars)) in \
         enumerate(zip(self._modes, self._stopping, self.cars)):
         # remove OoB cars
         if cars and self.oob(dirn, cars[0].rect):
             cars.pop(0)
         # add cars if needed
         if not cars or self.needs_car(dirn, cars[-1].rect):
             self.add_car(lane)
         # move cars
         prev = None
         new_mode = current_mode = 'moving'
         for car in cars:
             if lane_mode == 'moving':
                 car.start()
             if car.mode == 'moving':
                 r = car.rect
                 front = car.front(dirn)
                 v = speed + max(1 - speed,
                                 randsgn() * ir(expo(1 / speed_jitter)))
                 stop = front + dirn * v
                 # stop before stop marker
                 if lane_mode != 'moving' and current_mode == 'moving':
                     if dirn * front <= dirn * stopping:
                         stop = stopping
                     new_mode = lane_mode
                 # stop before next car
                 if prev is not None:
                     this_stop = prev.back(dirn) - \
                                 dirn * conf.CAR_GAP[current_mode]
                     stop = dirn * min(dirn * stop, dirn * this_stop)
                 new_v = dirn * (stop - front)
                 if new_v < v:
                     # velocity reduced
                     v = max(0, new_v)
                     if v == 0 and \
                        (current_mode == 'moving' or prev.mode != 'moving'):
                         # to make sure we only stop if every car in front
                         # has stopped - in case this car is faster than the
                         # one in front
                         car.set_mode(new_mode)
                     current_mode = new_mode
                 r.move_ip(v * dirn, 0)
             else:
                 new_mode = current_mode = car.mode
             prev = car
Пример #5
0
Файл: obj.py Проект: ikn/watlged
 def shoot (self, *args):
     if self.cooldown <= 0:
         w = self.weapon_data
         if self.aim_scheme == 'move':
             a = self.target_angle
         else:
             a = self.angle
         acc = self.shoot_acc * w['acc']
         pos = self.body.position
         args = (w['range'] * self.shoot_range, w['damage'] * self.damage,
                 w['kb'] * self.knockback, self)
         shoot = self.level.shoot
         # decide number of times to shoot
         cooldown = self.max_cooldown * w['cooldown']
         self.cooldown = ir(cooldown)
         frame = self.level.game.scheduler.timer.frame
         at_once = frame / cooldown + conf.BULLETS_AT_ONCE * w['at_once']
         for i in xrange(max(1, ir(at_once))):
             da = randsgn() * ev(acc)
             shoot(pos, a + da, *args)