コード例 #1
0
ファイル: survivalmode.py プロジェクト: jaagupku/Zombie-game
 def update(self, delta):
     if core.Gameobj.hero.health == 0 and self.end_message is None:
         self.end_message = core.widgets.MessageInput(core.Var.str_gameover[core.Var.language_id])
         core.Gameobj.guns[core.Gameobj.hero.current_gun].reload_bool = False
     if self.end_message is None:
         current_time = time()
         # Do things when start the wave
         if self.next_wave_started and current_time - self.time_wave_end >= self.wave_cooldown:
             self.start_next_wave()
             self.next_wave_started = False
             self.wave = True
             self.end_wave = False
         # If there is need for more monsters, then spawn
         elif self.wave and len(core.Gameobj.monsters) < self.max_zombies and self.n_spawn_this_wave > 0:
             self.n_spawn_this_wave -= (self.max_zombies - len(core.Gameobj.monsters))
             Survivalmode.spawn_zombie(self.max_zombies - len(core.Gameobj.monsters))
         # Check if wave has ended
         elif not self.end_wave and len(core.Gameobj.monsters) == 0:
             core.Var.survival_wave += 1
             self.end_wave = True
             self.time_wave_end = time()
             self.next_wave_started = True
         if core.Var.counter % 2 == 0:
             core.Gameobj.check_collision_between_monsters()
         for i in core.Gameobj.monsters:
             i.update(delta)
         core.Gameobj.hero.update(delta)
         for i in core.Gameobj.items:
             i.check_collision(core.Gameobj.hero.x, core.Gameobj.hero.y, core.Gameobj.hero.size*2)
         for i in core.Gameobj.particles_below:
             i.update(delta)
         for i in core.Gameobj.particles_over:
             i.update(delta)
         core.offset()
     else:
         self.end_message.update(delta)
         if self.end_message.value is not None:
             core.Var.scoreboard_data.append([str(len(core.Var.scoreboard_data) + 1), self.end_message.value,
                                              str(core.Var.score), str(core.Var.survival_wave),
                                              str(core.Var.bullets_shot), str(core.Var.bullets_hit),
                                              str(core.Var.monsters_killed)])
             templist = []
             for i in core.Var.scoreboard_data:
                 templist.append(int(i[2]))
             sortedlist = [x for y, x in sorted(zip(templist, core.Var.scoreboard_data))]
             core.Var.scoreboard_data = list(reversed(sortedlist))
             for i in range(len(core.Var.scoreboard_data)):
                 core.Var.scoreboard_data[i][0] = str(i+1)
             if len(core.Var.scoreboard_data) > 15:
                 core.Var.scoreboard_data.pop()
             core.Var.start_screen = True
             core.Var.stop_screen = True
             core.Var.new_screen = 5
             core.Var.current_game = [False, 0]
             self.end_message = None
コード例 #2
0
ファイル: price.py プロジェクト: JoarGruneau/yatal
def vortex_index(high, low, close, window=20):
    true_range = np.maximum.reduce(
        [high[1:] - low[1:], high[1:] - close[:-1], low[1:] - close[:-1]])
    true_range = offset(rolling_func(true_range, window, [np.sum])[0], 1)
    uptrend = offset(np.abs(high[1:] - low[:-1]), 1)
    downtrend = offset(np.abs(low[1:] - high[:-1]), 1)

    vi_plus = divide(rolling_func(uptrend, window, [np.sum])[0], true_range)
    vi_minus = divide(rolling_func(downtrend, window, [np.sum])[0], true_range)
    vi_plus[:window] = np.nan
    vi_minus[:window] = np.nan
    return replace_nan(vi_plus), replace_nan(vi_minus)
コード例 #3
0
ファイル: momentum.py プロジェクト: JoarGruneau/yatal
def rsi(price, window=20):
    gain = rolling_change(price) - 1
    gain[np.isnan(gain)] = 0
    loss = -gain.copy()
    gain[gain <= 0] = 0
    loss[loss <= 0] = 0
    alpha = 1 / float(window)
    avg_gain = offset(_ema(gain[2:], gain[1], alpha), 2)
    avg_loss = offset(_ema(loss[2:], loss[1], alpha), 2)
    rs = divide(avg_gain, avg_loss)
    rsi = 100 - divide(100, 1 + rs)
    rsi[:window] = np.nan
    return replace_nan(rsi)
コード例 #4
0
ファイル: momentum.py プロジェクト: JoarGruneau/yatal
def macd(price, macd_fast=12, macd_slow=26, signal_period=9):
    ema_fast = ema(price, window=macd_fast)
    ema_slow = ema(price, window=macd_slow)
    macd = ema_fast - ema_slow
    signal_line = offset(ema(macd[macd_slow:], window=signal_period),
                         macd_slow)
    histogram = macd - signal_line
    return macd, signal_line, histogram
コード例 #5
0
ファイル: price.py プロジェクト: JoarGruneau/yatal
def rolling_diff(series, window=1):
    return offset(series[window:] / series[:-window], window)
コード例 #6
0
ファイル: price.py プロジェクト: JoarGruneau/yatal
def roc(series, widnow=20):
    return offset(
        rolling_diff(series, window)[widnow:] / series[:-widnow], window)
コード例 #7
0
ファイル: price.py プロジェクト: JoarGruneau/yatal
def rolling_change(price, window=1):
    return offset(price[window:] / price[:-window], window)
コード例 #8
0
ファイル: momentum.py プロジェクト: JoarGruneau/yatal
def ema(series, window=20):
    start = np.mean(series[:window])
    alpha = 2 / (window + 1.0)
    out = _ema(series[window:], start, alpha)
    return offset(out, window)