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))
예제 #2
0
파일: main.py 프로젝트: pombredanne/Obb
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")
예제 #3
0
파일: restart.py 프로젝트: pombredanne/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
예제 #4
0
    # ---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,
예제 #5
0
파일: __main__.py 프로젝트: Adil780/madball
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()

예제 #6
0
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):