def pygame_testai(ais): """ 输入ai列表, 跑一个pygame的测试游戏看看 """ from snake_game import Game from game_controller import Controller game = Game() c = Controller(game) m = c.map() for ai in ais: ai.setmap(m) result = c.add(ai.name, ai.type) ai.seq = result['seq'] ai.id = result['id'] clock = Clock(3) s = Shower(m) while True: clock.tick() info = c.info() for ai in ais: d = ai.onprocess(info) c.turn(ai.id, d, game.round) game.step() s.flip(info)
def pygame_testai(ais): """ 输入ai列表, 跑一个pygame的测试游戏看看 """ from snake_game import Game from game_controller import Controller game = Game() c = Controller(game) m = c.map() for ai in ais: ai.setmap(m) result = c.add(ai.name, ai.type) ai.seq = result['seq'] ai.id = result['id'] clock = Clock(3) s = Shower(m) while True: clock.tick() info = c.info() for ai in ais: d = ai.onprocess(info) c.turn(ai.id, d, game.round) game.step() s.flip(info)
from snake_game import Game import numpy as np import json import time from tkinter import Tk, filedialog tk_root = Tk() tk_root.withdraw() dir_name = filedialog.askopenfilename() data_file = open(dir_name, 'r') q_table = json.load(data_file) game = Game() scores = 0 for i in range(100): state = game.reset() while not game.over: if state not in q_table: game.over = True print('state not ready') else: action = np.argmax(q_table[state]) _, n_state, reward = game.step(action) state = n_state # time.sleep(5) scores += len(game.snake) - 3 game.caption(f'{scores} : {scores/(i+1)}') print(scores / 100)