From 718d949fc85b44f2c30a80fecaa7114776d8e0be Mon Sep 17 00:00:00 2001 From: Kylin_on_Mac <kylingithubdev@gmail.com> Date: Fri, 6 May 2022 17:48:08 +0800 Subject: [PATCH] refactor folder structure --- README.md | 10 +++++----- config.py | 16 +++------------- game_config.json | 5 ++++- src/game.py | 30 ++++++++++++------------------ 4 files changed, 24 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 98978ef..faeb4f8 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # **Easy Game** -<img src="./asset/logo.svg" alt="logo" width="100"/> [comment]: <> () + - [](https://www.python.org/downloads/release/python-390/) -[](https://github.com/PAIA-Playful-AI-Arena/MLGame) +[](https://github.com/PAIA-Playful-AI-Arena/MLGame) [](https://github.com/pygame/pygame/releases/tag/2.0.1) ---- -這是一個吃東西小遊戲,除了讓你熟習所有基本操作,也是 PAIA 的遊戲教學範例 + + +這是一個吃東西小遊戲,也是 PAIA 的遊戲教學範例  diff --git a/config.py b/config.py index afc979b..2f73949 100644 --- a/config.py +++ b/config.py @@ -1,20 +1,10 @@ - +import sys from os import path +sys.path.append(path.dirname(__file__)) -from mlgame.utils.parse_config import read_json_file, parse_config -from .src.game import EasyGame - -config_file = path.join(path.dirname(__file__), "game_config.json") - - -config_data = read_json_file(config_file) -GAME_VERSION = config_data["version"] -GAME_PARAMS = parse_config(config_data) - -# will be equal to config. GAME_SETUP["ml_clients"][0]["name"] +from src.game import EasyGame GAME_SETUP = { "game": EasyGame, - "ml_clients": EasyGame.ai_clients(), # "dynamic_ml_clients":True } diff --git a/game_config.json b/game_config.json index a12957c..db3f653 100644 --- a/game_config.json +++ b/game_config.json @@ -1,12 +1,15 @@ { "game_name": "easy_game", - "version": "1.2.1", + "version": "2.0.1-beta", "url": "https://github.com/PAIA-Playful-AI-Arena/easy_game", "description": "這是一個吃東西小遊戲,除了讓你熟習所有基本操作,也是 PAIA 的遊戲教學範例", "logo": [ "./asset/logo.svg", "https://raw.githubusercontent.com/PAIA-Playful-AI-Arena/Paia-Desktop/master/media/easygame.svg" ], + "player_num": { + "min": 1,"max": 1 + }, "game_params": [ { "name": "time_to_play", diff --git a/src/game.py b/src/game.py index 85f4f90..dbd59d8 100644 --- a/src/game.py +++ b/src/game.py @@ -3,8 +3,9 @@ from os import path import pygame -from mlgame.gamedev.game_interface import PaiaGame, GameResultState, GameStatus -from mlgame.view.test_decorator import check_game_progress, check_game_result +from mlgame.argument.model import AI_NAMES +from mlgame.gamedev.paia_game import PaiaGame, GameResultState, GameStatus +from mlgame.tests.test_decorator import check_game_progress, check_game_result from mlgame.view.view_model import create_text_view_data, create_asset_init_data, create_image_view_data, Scene, \ create_scene_progress_data from .game_object import Ball, Food @@ -34,9 +35,13 @@ class EasyGame(PaiaGame): def update(self, commands): # handle command - ai_1p_cmd = commands[self.ai_clients()[0]["name"]][0] + ai_1p_cmd = commands[AI_NAMES[0]] + if ai_1p_cmd is not None: + action = ai_1p_cmd[0] + else: + action = "NONE" # print(ai_1p_cmd) - self.ball.update(ai_1p_cmd) + self.ball.update(action) # update sprite self.foods.update() @@ -72,8 +77,7 @@ class EasyGame(PaiaGame): "status": self.get_game_status() } - for ai_client in self.ai_clients(): - to_players_data[ai_client['name']] = data_to_1p + to_players_data[AI_NAMES[0]] = data_to_1p # should be equal to config. GAME_SETUP["ml_clients"][0]["name"] return to_players_data @@ -139,7 +143,7 @@ class EasyGame(PaiaGame): "state": self.game_result_state, "attachment": [ { - "player": self.ai_clients()[0]["name"], + "player": AI_NAMES[0], "rank": 1, "score": self.score } @@ -163,8 +167,7 @@ class EasyGame(PaiaGame): cmd_1p.append("RIGHT") else: cmd_1p.append("NONE") - ai_1p = self.ai_clients()[0]["name"] - return {ai_1p: cmd_1p} + return {AI_NAMES[0]: cmd_1p} def _create_foods(self, count: int = 5): for i in range(count): @@ -172,12 +175,3 @@ class EasyGame(PaiaGame): food = Food(self.foods) pass - @staticmethod - def ai_clients(): - """ - let MLGame know how to parse your ai, - you can also use this names to get different cmd and send different data to each ai client - """ - return [ - {"name": "1P"} - ]