40 lines
1001 B
Python
40 lines
1001 B
Python
from es import EvolutionStrategy
|
|
import numpy as np
|
|
from game import Game, play
|
|
from win import Window, GAME_SPEED
|
|
import gi
|
|
from gi.repository import Gtk, GLib, Gdk
|
|
from os import path
|
|
import os
|
|
import time
|
|
|
|
es = EvolutionStrategy(fn=play, noisep=50, sigma=0.1, alpha=0.001, layer_sizes=[[4, 500], [500, 1]], input_size=4)
|
|
load = path.join(path.dirname(__file__), 'load.npy')
|
|
|
|
# if load.npy exists, load the parameters from it
|
|
if path.exists(load):
|
|
es.layers = np.load(load)
|
|
|
|
def step(game, update):
|
|
win = Window(game)
|
|
GLib.timeout_add(GAME_SPEED, lambda: timeout_kill(win, game))
|
|
GLib.timeout_add(GAME_SPEED, update)
|
|
GLib.timeout_add(GAME_SPEED, win.update)
|
|
win.show_all()
|
|
Gtk.main()
|
|
|
|
# once the bird has lost, kill the window and stop Gtk loop
|
|
def timeout_kill(win, game):
|
|
if game.lost:
|
|
Gtk.main_quit()
|
|
win.destroy()
|
|
return False
|
|
|
|
return True
|
|
|
|
time.sleep(5)
|
|
|
|
for i in range(10000):
|
|
play(es.forward, step=step)
|
|
Gtk.main_quit()
|