add description and logo on game_config.json
This commit is contained in:
parent
da3cdbba9b
commit
4272ddc7d1
|
@ -1,13 +1,13 @@
|
||||||
# **Easy Game**
|
# **Easy Game**
|
||||||
|
<img src="./asset/logo.svg" alt="logo" width="100"/>
|
||||||
|
|
||||||
[comment]: <> ()
|
[comment]: <> ()
|
||||||

|
|
||||||
|
|
||||||
|

|
||||||
[](https://www.python.org/downloads/release/python-390/)
|
[](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)
|
[](https://github.com/pygame/pygame/releases/tag/2.0.1)
|
||||||
|
---
|
||||||
|
|
||||||
這是一個吃東西小遊戲,也是 PAIA 的遊戲教學範例
|
這是一個吃東西小遊戲,也是 PAIA 的遊戲教學範例
|
||||||
|
|
||||||

|

|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
import random
|
|
||||||
|
|
||||||
|
|
||||||
class MLPlay:
|
|
||||||
def __init__(self, ai_name:str,*args, **kwargs):
|
|
||||||
print(f"Initial {__file__} script with ai_name:{ai_name}")
|
|
||||||
|
|
||||||
|
|
||||||
def update(self, scene_info: dict, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Generate the command according to the received scene information
|
|
||||||
"""
|
|
||||||
# print("AI received data from game :", json.dumps(scene_info))
|
|
||||||
# print(scene_info)
|
|
||||||
actions = ["UP", "DOWN", "LEFT", "RIGHT"]
|
|
||||||
|
|
||||||
return random.sample(actions, 1)
|
|
||||||
|
|
||||||
def reset(self):
|
|
||||||
"""
|
|
||||||
Reset the status
|
|
||||||
"""
|
|
||||||
print("reset ml script")
|
|
||||||
pass
|
|
|
@ -1,26 +0,0 @@
|
||||||
import random
|
|
||||||
|
|
||||||
|
|
||||||
class MLPlay:
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
print("Initial ml script")
|
|
||||||
self.count=0
|
|
||||||
|
|
||||||
def update(self, scene_info: dict, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Generate the command according to the received scene information
|
|
||||||
"""
|
|
||||||
# print("AI received data from game :", json.dumps(scene_info))
|
|
||||||
# print(scene_info)
|
|
||||||
actions = ["UP", "DOWN", "LEFT", "RIGHT"]
|
|
||||||
self.count+=1
|
|
||||||
if self.count >100:
|
|
||||||
a = actions[100]
|
|
||||||
return random.sample(actions, 1)
|
|
||||||
|
|
||||||
def reset(self):
|
|
||||||
"""
|
|
||||||
Reset the status
|
|
||||||
"""
|
|
||||||
print("reset ml script")
|
|
||||||
pass
|
|
|
@ -1,24 +0,0 @@
|
||||||
import random
|
|
||||||
import aaa
|
|
||||||
|
|
||||||
|
|
||||||
class MLPlay:
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
print("Initial ml script")
|
|
||||||
|
|
||||||
def update(self, scene_info: dict, *args, **kwargs):
|
|
||||||
"""
|
|
||||||
Generate the command according to the received scene information
|
|
||||||
"""
|
|
||||||
# print("AI received data from game :", json.dumps(scene_info))
|
|
||||||
# print(scene_info)
|
|
||||||
actions = ["UP", "DOWN", "LEFT", "RIGHT"]
|
|
||||||
|
|
||||||
return random.sample(actions, 1)
|
|
||||||
|
|
||||||
def reset(self):
|
|
||||||
"""
|
|
||||||
Reset the status
|
|
||||||
"""
|
|
||||||
print("reset ml script")
|
|
||||||
pass
|
|
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 82 KiB |
10
config.py
10
config.py
|
@ -1,9 +1,8 @@
|
||||||
import sys
|
|
||||||
from os import path
|
|
||||||
sys.path.append(path.dirname(__file__))
|
|
||||||
|
|
||||||
from mlgame.argument.tool import read_json_file, parse_config
|
from os import path
|
||||||
from src.game import EasyGame
|
|
||||||
|
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_file = path.join(path.dirname(__file__), "game_config.json")
|
||||||
|
|
||||||
|
@ -16,5 +15,6 @@ GAME_PARAMS = parse_config(config_data)
|
||||||
|
|
||||||
GAME_SETUP = {
|
GAME_SETUP = {
|
||||||
"game": EasyGame,
|
"game": EasyGame,
|
||||||
|
"ml_clients": EasyGame.ai_clients(),
|
||||||
# "dynamic_ml_clients":True
|
# "dynamic_ml_clients":True
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
{
|
{
|
||||||
"game_name": "easy_game",
|
"game_name": "easy_game",
|
||||||
"version": "2.0.0-beta",
|
"version": "1.1.1",
|
||||||
"url": "None",
|
"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"
|
||||||
|
],
|
||||||
"game_params": [
|
"game_params": [
|
||||||
{
|
{
|
||||||
"name": "time_to_play",
|
"name": "time_to_play",
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
|
import random
|
||||||
import pygame
|
import pygame
|
||||||
|
|
||||||
|
|
||||||
class MLPlay:
|
class MLPlay:
|
||||||
def __init__(self, ai_name: str, *args, **kwargs):
|
def __init__(self):
|
||||||
self.ai_name = ai_name
|
print("Initial ml script")
|
||||||
print(f"Initial {__file__} script with ai_name:{ai_name}")
|
|
||||||
|
|
||||||
def update(self, scene_info: dict, keyboard: list = [], *args, **kwargs):
|
def update(self, scene_info: dict, keyboard:list=[], *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
Generate the command according to the received scene information
|
Generate the command according to the received scene information
|
||||||
"""
|
"""
|
||||||
|
@ -28,6 +28,8 @@ class MLPlay:
|
||||||
|
|
||||||
return actions
|
return actions
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
"""
|
"""
|
||||||
Reset the status
|
Reset the status
|
|
@ -1,7 +1,6 @@
|
||||||
import random
|
import random
|
||||||
|
|
||||||
class MLPlay:
|
class MLPlay:
|
||||||
def __init__(self, *args, **kwargs)
|
def __init__(self):
|
||||||
print("Initial ml script")
|
print("Initial ml script")
|
||||||
|
|
||||||
def update(self, scene_info: dict, *args, **kwargs):
|
def update(self, scene_info: dict, *args, **kwargs):
|
30
src/game.py
30
src/game.py
|
@ -3,9 +3,8 @@ from os import path
|
||||||
|
|
||||||
import pygame
|
import pygame
|
||||||
|
|
||||||
from mlgame.argument.model import AI_NAMES
|
from mlgame.gamedev.game_interface import PaiaGame, GameResultState, GameStatus
|
||||||
from mlgame.gamedev.paia_game import PaiaGame, GameResultState, GameStatus
|
from mlgame.view.test_decorator import check_game_progress, check_game_result
|
||||||
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, \
|
from mlgame.view.view_model import create_text_view_data, create_asset_init_data, create_image_view_data, Scene, \
|
||||||
create_scene_progress_data
|
create_scene_progress_data
|
||||||
from .game_object import Ball, Food
|
from .game_object import Ball, Food
|
||||||
|
@ -35,13 +34,9 @@ class EasyGame(PaiaGame):
|
||||||
|
|
||||||
def update(self, commands):
|
def update(self, commands):
|
||||||
# handle command
|
# handle command
|
||||||
ai_1p_cmd = commands[AI_NAMES[0]]
|
ai_1p_cmd = commands[self.ai_clients()[0]["name"]][0]
|
||||||
if ai_1p_cmd is not None:
|
|
||||||
action = ai_1p_cmd[0]
|
|
||||||
else:
|
|
||||||
action = "NONE"
|
|
||||||
# print(ai_1p_cmd)
|
# print(ai_1p_cmd)
|
||||||
self.ball.update(action)
|
self.ball.update(ai_1p_cmd)
|
||||||
|
|
||||||
# update sprite
|
# update sprite
|
||||||
self.foods.update()
|
self.foods.update()
|
||||||
|
@ -77,7 +72,8 @@ class EasyGame(PaiaGame):
|
||||||
"status": self.get_game_status()
|
"status": self.get_game_status()
|
||||||
}
|
}
|
||||||
|
|
||||||
to_players_data[AI_NAMES[0]] = data_to_1p
|
for ai_client in self.ai_clients():
|
||||||
|
to_players_data[ai_client['name']] = data_to_1p
|
||||||
# should be equal to config. GAME_SETUP["ml_clients"][0]["name"]
|
# should be equal to config. GAME_SETUP["ml_clients"][0]["name"]
|
||||||
|
|
||||||
return to_players_data
|
return to_players_data
|
||||||
|
@ -143,7 +139,7 @@ class EasyGame(PaiaGame):
|
||||||
"state": self.game_result_state,
|
"state": self.game_result_state,
|
||||||
"attachment": [
|
"attachment": [
|
||||||
{
|
{
|
||||||
"player": AI_NAMES[0],
|
"player": self.ai_clients()[0]["name"],
|
||||||
"rank": 1,
|
"rank": 1,
|
||||||
"score": self.score
|
"score": self.score
|
||||||
}
|
}
|
||||||
|
@ -167,7 +163,8 @@ class EasyGame(PaiaGame):
|
||||||
cmd_1p.append("RIGHT")
|
cmd_1p.append("RIGHT")
|
||||||
else:
|
else:
|
||||||
cmd_1p.append("NONE")
|
cmd_1p.append("NONE")
|
||||||
return {AI_NAMES[0]: cmd_1p}
|
ai_1p = self.ai_clients()[0]["name"]
|
||||||
|
return {ai_1p: cmd_1p}
|
||||||
|
|
||||||
def _create_foods(self, count: int = 5):
|
def _create_foods(self, count: int = 5):
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
|
@ -175,3 +172,12 @@ class EasyGame(PaiaGame):
|
||||||
food = Food(self.foods)
|
food = Food(self.foods)
|
||||||
pass
|
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"}
|
||||||
|
]
|
||||||
|
|
Loading…
Reference in New Issue