def train(model, eps=1000, speed=1): global exploitation_rate, losses for e in range(eps): frames = 0 exploitation_rate = 1.0 - 0.2 * (1.25**-(e / 10)) game.restart() prev_state, reward, score = game.tick(render=True, learn=True) prev_state = normalize(prev_state) state = prev_state while True: render = frames % speed == 0 action = get_action(state) actions[action]() state, reward, score = game.tick(render=render, learn=True) state = normalize(state) memories.append([state, prev_state, action, reward]) #Remember reinforce() prev_state = state frames += 1 if score != -1: if reward > 0: print("Game solved after", e, "epochs") scores.append(score) break avg_loss = sum(losses) / len(losses) avg_score = sum(scores) / len(scores) print("Ep:{:4}, Score:{:2}, loss: {:.5f}, avg score: {:.2f}".format( e, scores[len(scores) - 1], avg_loss, avg_score))
def main(): vista.init() vista.addsplash() pygame.display.set_caption(_("Obb is loading.... Please wait")) noise.nexttrack() if settings.restart: game.restart() else: game.load() context.push(play.Play()) clock = pygame.time.Clock() savetime = settings.savetimer while context.top(): dt = clock.tick(settings.maxfps) * 0.001 * settings.gamespeed dt = min(dt, 1.0 / settings.minfps) con = context.top() events = pygame.event.get() keys = pygame.key.get_pressed() mousepos = pygame.mouse.get_pos() buttons = pygame.mouse.get_pressed() if settings.autosave: savetime -= dt if savetime < 0: game.save() settings.save() savetime = settings.savetimer for event in events: if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE): if settings.saveonquit: settings.save() game.save() pygame.quit() return if event.type == KEYDOWN and event.key == K_F12: vista.screencap() if event.type == KEYDOWN and event.key == K_F3: settings.showfps = not settings.showfps con.think(dt, events, keys, mousepos, buttons) con.draw() if settings.showfps: t = pygame.time.get_ticks() * 0.001 if int(t / 5.0) != int((t - dt) / 5.0): # Update once every 5 seconds fpsstring = "%.1ffps" % clock.get_fps() try: mem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss // 1024 fpsstring += " %sMB" % mem except: pass pygame.display.set_caption("Obb - %s" % fpsstring) if settings.fullscreen: print(fpsstring) else: pygame.display.set_caption("Obb")
def think(self, dt, events, keys, mousepos, buttons): if self.active: self.cloudticker = min(self.cloudticker + dt, 0.25) else: self.cloudticker = max(self.cloudticker - dt, 0) if not self.cloudticker: context.pop() if self.torestart: game.restart() if self.cloudticker == 0.25 and self.active: for event in events: if event.type == pygame.KEYUP: self.active = False self.torestart = event.key == pygame.K_y
# ---Control--- rocket_pos, rocket_mass, angle, air_density, air_speed_angle, gravity = control.camera( rocket, ground, gravity, rocket_empty_mass, rocket_fuel_mass, ceiling, screenx, gear) rocket_fuel_mass, gear = control.keys(rocket_fuel_mass, engine_massflow, ground, thrust, force_rcs, angle, rocket, joint1, joint2, gear, boom) game.score() landed, boom, out_map, launched, time, above = game.logic( ground, rocket_pos, lz_offset, space, angle, ceiling, lz_size, isle_number) rocket_fuel_mass, landed, gear, launched, last_time, best_time = game.restart( rocket_start_pos, ground, rocket, joint1, joint2, rocket_fuel_mass_init, rocket_fuel_mass, landed, gear, last_time, best_time) # ---Screen business--- lz_size, isle_number = display.graphics(rocket_pos, screen, space, draw_options, screeny, ground, ceiling, lz_offset, rocket_start_pos, screenx, rocket_joint, rocket, angle) display.GUI(screen, ground, screenx, rocket_pos, ceiling, lz_offset, angle, air_speed_angle, rocket_start_pos, screeny, rocket_fuel_mass_init, rocket_fuel_mass, rocket) labels.text(screen, rocket, ground, rocket_pos, thrust, gravity, air_density, rocket_empty_mass, screeny, time, last_time,
import pygame, os, time, settings os.environ["SDL_VIDEODRIVER"] = "directx" pygame.init() screen = pygame.display.set_mode((settings.SCREEN_WIDTH, settings.SCREEN_HEIGHT)) import game, menu mode = "MENU" while True: time.sleep(1 / 60) if mode == "MENU": m = menu.menu(screen) if m == "GAME": mode = "GAME" elif mode == "GAME": g = game.game(screen) if g == "MENU": mode = "MENU" game.save_records() game.restart()
screen_mode = 'menu' dir = os.getcwd() while True: # Проверка на игру if screen_mode == 'game': g = game.game(screen) if g == 'menu': screen_mode = 'menu' # Проверка на меню if screen_mode == 'menu': m = menu.menu(screen) if m == 'easy' or m == 'medium' or m == 'hard': game.restart(m) screen_mode = 'game' # for dirpath, dirnames, filenames in os.walk("."): # # перебрать каталоги # for dirname in dirnames: # print("Каталог:", os.path.join(dirpath, dirname)) # # перебрать файлы # for filename in filenames: # print("Файл:", os.path.join(dirpath, filename)) # def finder(directory): # names = os.listdir(directory) # for name in names: # fullname = os.path.join(os.getcwd(), name) # if os.path.isfile(name):