def __init__(self, config, filename): self.sizex = config.getint("life", "sizex") self.sizey = config.getint("life", "sizey") self.width = config.getint("screen", "width") self.heigth = config.getint("screen", "heigth") self.waitTime = config.getint("animation", "waitTime_ms") self.waitTimeMin = config.getint("animation", "waitTimeMin_ms") self.waitTimeMax = config.getint("animation", "waitTimeMax_ms") self.waitTimeStep = config.getint("animation", "waitTimeStep_ms") self.view = GridView(self.sizex, self.sizey, self.width, self.heigth) self.model = LifeModel(self.sizex, self.sizey) self.movie = False self.doEpoch = False self.keyPressed = False if filename is not None: self.readFile(filename) self.action()
class LifeControl(GridControl): def __init__(self, config, filename): self.sizex = config.getint("life", "sizex") self.sizey = config.getint("life", "sizey") self.width = config.getint("screen", "width") self.heigth = config.getint("screen", "heigth") self.waitTime = config.getint("animation", "waitTime_ms") self.waitTimeMin = config.getint("animation", "waitTimeMin_ms") self.waitTimeMax = config.getint("animation", "waitTimeMax_ms") self.waitTimeStep = config.getint("animation", "waitTimeStep_ms") self.view = GridView(self.sizex, self.sizey, self.width, self.heigth) self.model = LifeModel(self.sizex, self.sizey) self.movie = False self.doEpoch = False self.keyPressed = False if filename is not None: self.readFile(filename) self.action() def afterAction(self): if self.doEpoch: self.epoch() self.doEpoch = self.movie if self.movie: pygame.time.wait(self.waitTime) def handleKeyEvents(self, event): super(self.__class__, self).handleKeyEvents(event) if event.key == pygame.K_e: self.doEpoch = True self.movie = False if event.key == pygame.K_m: self.movie = not self.movie self.doEpoch = True if event.key == pygame.K_PLUS: self.waitTime -= self.waitTimeStep if self.waitTime < self.waitTimeMin: self.waitTime = self.waitTimeMin if event.key == pygame.K_MINUS: self.waitTime += self.waitTimeStep if self.waitTime > self.waitTimeMax: self.waitTime = self.waitTimeMax def triggerEnd(self): print "epoch: %d" % self.model.get_epoch_counter() print "bye!" super(self.__class__, self).triggerEnd() def epoch(self): self.model.epoch() self.renderModel() def readFile(self, filename): self.model.read_seed_file(filename) self.renderModel()