class Trainer(): def __init__(self, withGrapics=True): self.bestbest = 0 self.done = False self.pool = Pool(Config.WIDTH, Config.HEIGHT, self.callback) self.graphics = Graphics() if withGrapics: self.graphics.init("PoolGame", Config.SIZE) def callback(self, gen, avg_score, best_score, best_json): line = "Generation\t%d\tAverage Score\t%f\tBest Score\t%f" % ( gen, avg_score, best_score) self.write_log(Config.JSON_FOLDER + "/" + "logfile.txt", line) filename = "brain-g%03d-%04d.json" % (gen, best_score * 1000) if best_score >= self.bestbest: if best_json != None: self.write_file(Config.JSON_FOLDER + "/" + filename, best_json) self.bestbest = best_score if gen == Config.GENERATIONS: self.done = True def write_log(self, filename, line): print(line) with open(filename, "a") as outfile: outfile.write(line + "\n") def write_file(self, filename, data): with open(filename, "w") as outfile: outfile.write(data + "\n") def run(self): # Loop until the user clicks the close button. while not self.done: self.done = self.graphics.queryQuit() # Set the screen background self.graphics.fill(Config.GREEN) self.graphics.print("Clock: {}".format(self.graphics.fps())) # Do physics self.pool.tick() # Draw everything self.pool.draw(self.graphics) # Update screen self.graphics.flip() # Exit self.graphics.quit()
def main(): """ Main starting point for the program :return: N/A """ Graphics.init() FPS.init() drawer = Drawer() key_down_listeners = [drawer.on_key_down] mouse_down_listeners = [drawer.on_mouse_down] mouse_up_listeners = [drawer.on_mouse_up] while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: sys.exit() if event.key == pygame.K_F10: Graphics.toggle_fullscreen() for delegate in key_down_listeners: delegate(event.key, event.mod) if event.type == pygame.MOUSEBUTTONDOWN or event.type == pygame.MOUSEBUTTONUP: mouse_position = (event.pos[0] / Graphics.get_scale()[0], event.pos[1] / Graphics.get_scale()[1]) if event.type == pygame.MOUSEBUTTONDOWN: for delegate in mouse_down_listeners: delegate(mouse_position, event.button) if event.type == pygame.MOUSEBUTTONUP: for delegate in mouse_up_listeners: delegate(mouse_position, event.button) drawer.update() drawer.draw() FPS.update() Graphics.flip()
class Doku(): def __init__(self): self.solver = Solver(Config.SIZE, self.callback) self.done = False self.graphics = Graphics() self.graphics.init("Doku Solver", Config.WINDOWSIZE) if Config.SIZE == 4: self.solver.setGrid([ "3002", "0410", "0320", "4001", ]) if Config.SIZE == 9: self.solver.setGrid([ "000000000", "000000000", "000000000", "384000000", "000000000", "000000000", "000000000", "000000000", "000000002", ]) #self.solver.setGrid([ # "100904082", # "052680300", # "864200910", # "010049806", # "498300701", # "607010093", # "086035209", # "509002130", # "030497008" #]); if Config.SIZE == 16: self.solver.setGrid([ " D0F 63C 7 1E ", " 74 B 3 D ", "E 4 97 0 3AF", " 2 E 516B9 ", "B A E 8 F ", " F CA 6 ", " 4 5 E ", " 6C7 8 5B 2 ", " F B9 4 C D 2", " 41D 6 5 C9", "2 7 1 D B 8", " A83 E ", "C B9 6 20 ", " 2 E30 C 546", " A 8 C 4 1", " 7 5 8D " ]) if Config.SIZE == 25: for i in range(Config.SIZE): self.solver.setNumber(i, i, i + 1, True) self.solver.setNumber(0, i, Config.SIZE - (i + 1) + 1, True) def callback(self): # self.done = True pass def run(self): # Loop until the user clicks the close button. while not self.done: self.done = self.graphics.queryQuit() # Set the screen background self.graphics.fill(Config.WHITE) # self.graphics.print("Clock: {}".format(self.graphics.fps())) if Config.SPEED == Config.FAST: # Draw everything self.solver.draw(self.graphics) # Update screen self.graphics.flip() # Do physics self.solver.tick() # Draw everything self.solver.draw(self.graphics) # Update screen self.graphics.flip() # Exit self.graphics.quit()
import random import pygame from Graphics import Graphics WIDTH = 512 HEIGHT = 100 WHITE = (255, 255, 255) GREEN = (0, 128, 0) RED = (128, 0, 0) BLUE = (0, 0, 255) YELLOW = (255, 255, 0) BLACK = (0, 0, 0) graphics = Graphics() graphics.init("Maze", (WIDTH, HEIGHT)) ######################################################################### ######################################################################### ######################################################################### # https://www.youtube.com/watch?v=6-0UaeJBumA class Noide1D(): width = 0 output = [] noiseSeed = [] octaves = 9 scalingBias = 20.0