Ejemplo n.º 1
0
	def __init__(self, game, args = {}):
		Brain.__init__(self, game, args, defaultargs)

		self.step = self.args['step']
		self.peek = self.args['peek']
		self.method = self.args['method']
		self.escapedepth = self.args['escapedepth']
		self.escapemethod = self.args['escapemethod']
		self.repeathistory = self.args['repeathistory']
		self.motionblur = self.args['motionblur']
		self.input_log = []
		self.history = []
		self.deuxiemevue_buffer = []

		self.best_state = self.game.Freeze()
		self.best_heur = self.game.Heuristic()

		self.screen = pygame.Surface(self.ScreenSize())
		self.screenmidpoint = self.screen.get_width() / 2

		self._AddChildren = self._AddChildrenDFS
		if self.method == 'bfs':  self._AddChildren = self._AddChildrenBFS

		self._AddChildrenEscape = self._AddChildrenDFS
		if self.escapemethod == 'bfs':  self._AddChildrenEscape = self._AddChildrenBFS
Ejemplo n.º 2
0
	def __init__(self, game, args = {}):
		Brain.__init__(self, game, args, defaultargs)

		self.depthfactor = self.args['depthfactor']
		self.maxdepth = self.depthfactor
		self.input_log = None
		self.init_state = game.Freeze()
Ejemplo n.º 3
0
    def __init__(self, game, args={}):
        Brain.__init__(self, game, args, defaultargs)

        self.clock = pygame.time.Clock()
        self.fps = self.args['fps']
        self.force = self.args['force']
        self.granularity = self.args['granularity']
        self.recordvideo = self.args['recordvideo']
        self.recordaudio = self.args['recordaudio']

        loadedfile = cPickle.load(open(self.args['file'], 'r'))

        if self.recordaudio:
            # todo: some way to determine appropriate framerate from game.  currently using values for snes
            self.wav = wave.open(
                'output/{}_{}.wav'.format(self.__class__.name,
                                          self.game.__class__.name), 'wb')
            self.wav.setnchannels(2)
            self.wav.setsampwidth(2)
            self.wav.setframerate(32040)

        # describe the run
        print 'replaying a run of:\t', loadedfile['game'], '\t', loadedfile[
            'game_args']
        print 'that was produced by:\t', loadedfile['brain'], '\t', loadedfile[
            'brain_args']
        if not self.force:
            if loadedfile['game'] != game.__class__.name:
                raise Exception('loaded input string is for "%s"' %
                                (loadedfile['game']))

            special_cases = ['granularity', 'audio']
            mismatches = []
            for key in game.args:
                if key not in special_cases:
                    # note: old args being dropped are implicitly ignored by this loop.
                    # explicitly ignore new features with this conditional.
                    if key in loadedfile['game_args'] and loadedfile[
                            'game_args'][key] != game.args[key]:
                        mismatches.append(key)
                else:
                    if key == 'granularity':
                        then = loadedfile['game_args'][key]
                        if key in loadedfile['brain_args']:
                            then *= loadedfile['brain_args'][key]
                        now = game.args[key] * self.args[key]
                        if then != now:
                            print 'rerun: granularity mismatch! consider adjusting rerun\'s granularity.'
                            mismatches.append(key)
                    elif key == 'audio':
                        print 'rerun: be sure to use "array" for the game audio if you want to use rerun\'s sound recording.'
            if len(mismatches) > 0:
                for key in mismatches:
                    print key, '\n\tgame:', game.args[key],
                    print '\n\tfile:', loadedfile['game_args'][key]
                raise Exception('game_args mismatch')

        self.inputstring = loadedfile['path']
        self.outputstring = []
        print 'with', len(self.inputstring), 'frames of input'
Ejemplo n.º 4
0
    def __init__(self, game, args={}):
        Brain.__init__(self, game, args, defaultargs)

        self.depthfactor = self.args['depthfactor']
        self.maxdepth = self.depthfactor
        self.input_log = None
        self.init_state = game.Freeze()
Ejemplo n.º 5
0
    def __init__(self, game, args={}):
        Brain.__init__(self, game, args, defaultargs)

        self.step = self.args['step']
        self.peek = self.args['peek']
        self.method = self.args['method']
        self.escapedepth = self.args['escapedepth']
        self.escapemethod = self.args['escapemethod']
        self.repeathistory = self.args['repeathistory']
        self.motionblur = self.args['motionblur']
        self.input_log = []
        self.history = []
        self.deuxiemevue_buffer = []

        self.best_state = self.game.Freeze()
        self.best_heur = self.game.Heuristic()

        self.screen = pygame.Surface(self.ScreenSize())
        self.screenmidpoint = self.screen.get_width() / 2

        self._AddChildren = self._AddChildrenDFS
        if self.method == 'bfs': self._AddChildren = self._AddChildrenBFS

        self._AddChildrenEscape = self._AddChildrenDFS
        if self.escapemethod == 'bfs':
            self._AddChildrenEscape = self._AddChildrenBFS
Ejemplo n.º 6
0
	def __init__(self, game, args = {}):
		Brain.__init__(self, game, args, defaultargs)

		self.clock = pygame.time.Clock()
		self.fps = self.args['fps']
		self.force = self.args['force']
		self.granularity = self.args['granularity']
		self.recordvideo = self.args['recordvideo']
		self.recordaudio = self.args['recordaudio']

		loadedfile = cPickle.load(open(self.args['file'], 'r'))

		if self.recordaudio:
			# todo: some way to determine appropriate framerate from game.  currently using values for snes
			self.wav = wave.open('output/{}_{}.wav'.format(self.__class__.name, self.game.__class__.name), 'wb')
			self.wav.setnchannels(2)
			self.wav.setsampwidth(2)
			self.wav.setframerate(32040)

		# describe the run
		print 'replaying a run of:\t', loadedfile['game'], '\t', loadedfile['game_args']
		print 'that was produced by:\t', loadedfile['brain'], '\t', loadedfile['brain_args']
		if not self.force:
			if loadedfile['game'] != game.__class__.name:
				raise Exception('loaded input string is for "%s"' % (loadedfile['game']))

			special_cases = ['granularity', 'audio']
			mismatches = []
			for key in game.args:
				if key not in special_cases:
					# note: old args being dropped are implicitly ignored by this loop.
					# explicitly ignore new features with this conditional.
					if key in loadedfile['game_args'] and loadedfile['game_args'][key] != game.args[key]:
						mismatches.append(key)
				else:
					if key == 'granularity':
						then = loadedfile['game_args'][key]
						if key in loadedfile['brain_args']:
							then *= loadedfile['brain_args'][key]
						now = game.args[key]*self.args[key]
						if then != now:
							print 'rerun: granularity mismatch! consider adjusting rerun\'s granularity.'
							mismatches.append(key)
					elif key == 'audio':
						print 'rerun: be sure to use "array" for the game audio if you want to use rerun\'s sound recording.'
			if len(mismatches) > 0:
				for key in mismatches:
					print key, '\n\tgame:', game.args[key],
					print '\n\tfile:', loadedfile['game_args'][key]
				raise Exception('game_args mismatch')

		self.inputstring = loadedfile['path']
		self.outputstring = []
		print 'with', len(self.inputstring), 'frames of input'
Ejemplo n.º 7
0
	def __init__(self, game, args = {}):
		Brain.__init__(self, game, args, defaultargs)

		# populate
		dnalen = self.args['dnalen']
		popsize = self.args['popsize']

		self.mutate_strength = self.args['mutate_strength']
		self.avg_point_mutations = self.args['avg_point_mutations']
		self.avg_swaps = self.args['avg_swaps']
		self.avg_deletions = self.args['avg_deletions']

		self.pop = [Indiv(game, dnalen) for i in xrange(popsize)]
		self.input_string = (float("inf"), []) # pair of (heur, path)
Ejemplo n.º 8
0
    def __init__(self, game, args={}):
        Brain.__init__(self, game, args, defaultargs)

        # populate
        dnalen = self.args['dnalen']
        popsize = self.args['popsize']

        self.mutate_strength = self.args['mutate_strength']
        self.avg_point_mutations = self.args['avg_point_mutations']
        self.avg_swaps = self.args['avg_swaps']
        self.avg_deletions = self.args['avg_deletions']

        self.pop = [Indiv(game, dnalen) for i in xrange(popsize)]
        self.input_string = (float("inf"), [])  # pair of (heur, path)
Ejemplo n.º 9
0
    def __init__(self,
                 game,
                 *_,
                 joypad=joylist[0],
                 dir_keys='wsad',
                 btn_keys='klji1056',
                 state_path='output/{name}.state'):
        Brain.__init__(self, game)

        if type(joypad) == str:
            if joypad.isdigit():
                joypad = int(joypad)
            else:
                joypad = joylist.index(joypad)
        if joypad >= 0:
            self.joy = pygame.joystick.Joystick(joypad)
            self.joy.init()
            print('Sapiens:', self.joy.get_name())

        self.input_log = []
        self.input_map = game.HumanInputs()
        self.pad = 0

        UDLR = ('up', 'down', 'left', 'right')

        map = self.input_map
        self.hat_reset = 0
        for i in UDLR:
            s = 'hat0_{}'.format(i)
            if s in map:
                self.hat_reset |= map[s]
        self.hat_reset = ~self.hat_reset
        self.hat_lut = [{-1: 'left', 1: 'right'}, {1: 'up', -1: 'down'}]

        self.key_map = {}
        for i in range(len(dir_keys)):
            s = 'hat0_{}'.format(UDLR[i])
            if s in map:
                self.key_map[ord(dir_keys[i])] = map[s]
        for i in range(len(btn_keys)):
            if i in map:
                self.key_map[ord(btn_keys[i])] = map[i]

        self.state_path = state_path.format(name=self.game.name.lower())
        self._current_game_res = None
Ejemplo n.º 10
0
	def __init__(self, game, args = {}):
		Brain.__init__(self, game, args, defaultargs)

		self.step = self.args['step']
		self.peek = self.args['peek']
		self.method = self.args['method']
		self.motionblur = self.args['motionblur']

		self.input_log = []

		self.best_state = self.game.Freeze()
		self.best_heur = self.game.Heuristic()

		self.screen = pygame.Surface(self.ScreenSize())
		self.screenmidpoint = self.screen.get_width() / 2

		self._AddChildren = self._AddChildrenDFS
		if self.method == 'bfs':  self._AddChildren = self._AddChildrenBFS
Ejemplo n.º 11
0
    def __init__(self, game, args={}):
        Brain.__init__(self, game, args, defaultargs)

        self.step = self.args['step']
        self.peek = self.args['peek']
        self.method = self.args['method']
        self.motionblur = self.args['motionblur']

        self.input_log = []

        self.best_state = self.game.Freeze()
        self.best_heur = self.game.Heuristic()

        self.screen = pygame.Surface(self.ScreenSize())
        self.screenmidpoint = self.screen.get_width() / 2

        self._AddChildren = self._AddChildrenDFS
        if self.method == 'bfs': self._AddChildren = self._AddChildrenBFS
Ejemplo n.º 12
0
	def __init__(self, game, args = {}):
		Brain.__init__(self, game, args, defaultargs)

		self.lookahead = self.args['lookahead']
		self.walkahead = self.args['walkahead']
		self.escapedepth = self.args['escapedepth']
		self.shortcutrepeat = self.args['shortcutrepeat']

		self.input_log = []
		self.new_best = None
		self.terminated = False

		self._GenInputLists(self.lookahead)

		self.current_state = self.game.Freeze()
		self.current_heur = self.game.Heuristic()
		self.escape_heur = self.current_heur

		self.screen = pygame.Surface(self.ScreenSize())
		self.screenmidpoint = self.screen.get_width() / 2
Ejemplo n.º 13
0
	def __init__(self, game, args = {}):
		Brain.__init__(self, game, args, defaultargs)

		self.fps = self.args['fps']
		self.clock = pygame.time.Clock()

		joynum = self.args['joynum']
		if type(joynum) == str:
			joynum = joylist.index(joynum)
		if joynum >= 0:
			self.joy = pygame.joystick.Joystick(joynum)
			self.joy.init()
			print 'Sapiens:', self.joy.get_name()

		self.input_log = []
		self.input_map = game.HumanInputs()
		self.pad = 0
		self.won = False

		UDLR = ('up', 'down', 'left', 'right')

		map = self.input_map
		self.hat_reset = 0
		for i in UDLR:
			s = 'hat0_{}'.format(i)
			if s in map:  self.hat_reset |= map[s]
		self.hat_reset = ~self.hat_reset
		self.hat_lut = [ { -1: 'left', 1:  'right' },
			             { 1:  'up',   -1: 'down' } ]

		self.key_map = {}
		keyhat = self.args['keyhat']
		for i in xrange(len(keyhat)):
			s = 'hat0_{}'.format(UDLR[i])
			if s in map:
			    self.key_map[ord(keyhat[i])] = map[s]
		keybuttons = self.args['keybuttons']
		for i in xrange(len(keybuttons)):
			if i in map:
			    self.key_map[ord(keybuttons[i])] = map[i]
Ejemplo n.º 14
0
    def __init__(self, game, args={}):
        Brain.__init__(self, game, args, defaultargs)

        self.fps = self.args['fps']
        self.clock = pygame.time.Clock()

        joynum = self.args['joynum']
        if type(joynum) == str:
            joynum = joylist.index(joynum)
        if joynum >= 0:
            self.joy = pygame.joystick.Joystick(joynum)
            self.joy.init()
            print 'Sapiens:', self.joy.get_name()

        self.input_log = []
        self.input_map = game.HumanInputs()
        self.pad = 0
        self.won = False

        UDLR = ('up', 'down', 'left', 'right')

        map = self.input_map
        self.hat_reset = 0
        for i in UDLR:
            s = 'hat0_{}'.format(i)
            if s in map: self.hat_reset |= map[s]
        self.hat_reset = ~self.hat_reset
        self.hat_lut = [{-1: 'left', 1: 'right'}, {1: 'up', -1: 'down'}]

        self.key_map = {}
        keyhat = self.args['keyhat']
        for i in xrange(len(keyhat)):
            s = 'hat0_{}'.format(UDLR[i])
            if s in map:
                self.key_map[ord(keyhat[i])] = map[s]
        keybuttons = self.args['keybuttons']
        for i in xrange(len(keybuttons)):
            if i in map:
                self.key_map[ord(keybuttons[i])] = map[i]
Ejemplo n.º 15
0
	def __init__(self, game, args = {}):
		Brain.__init__(self, game, args, defaultargs)
		self.edge = self.args['edgecost']
		self.input_log = None
Ejemplo n.º 16
0
 def __init__(self, game, args={}):
     Brain.__init__(self, game, args, defaultargs)
     self.edge = self.args['edgecost']
     self.input_log = None