diff --git a/game_config.json b/game_config.json index c142412..0153002 100644 --- a/game_config.json +++ b/game_config.json @@ -8,7 +8,8 @@ "https://raw.githubusercontent.com/PAIA-Playful-AI-Arena/Paia-Desktop/master/media/easygame.svg" ], "user_num": { - "min": 1,"max": 1 + "min": 1, + "max": 1 }, "game_params": [ { @@ -24,19 +25,42 @@ "name": "green_food_count", "verbose": "綠色食物數量", "type": "int", - "choices":[ 5 ,10 ,15,20,25,30,35,40,45,50], - "help": "set the total number of points", - "default": 10 - }, { - "name": "black_food_count", - "verbose": "黑色食物數量", - "type": "int", - "choices":[ 5 ,10 ,15,20,25,30,35,40,45,50], + "choices": [ + 5, + 10, + 15, + 20, + 25, + 30, + 35, + 40, + 45, + 50 + ], "help": "set the total number of points", "default": 10 }, { - "name": "score_to_win", + "name": "black_food_count", + "verbose": "黑色食物數量", + "type": "int", + "choices": [ + 5, + 10, + 15, + 20, + 25, + 30, + 35, + 40, + 45, + 50 + ], + "help": "set the total number of points", + "default": 10 + }, + { + "name": "score_to_pass", "verbose": "通關分數", "type": "int", "min": 1, @@ -48,9 +72,17 @@ "name": "playground_size", "verbose": "場地尺寸", "type": "list", - - "default": "500,400", + "default": "400,400", "help": "set the size of playground " + }, + { + "name": "level", + "verbose": "內建關卡編號", + "type": "int", + "min": -1, + "max": 5, + "default": "-1", + "help": "選定內建關卡,請注意,使用此設定將會覆蓋掉其他設定,預設為 -1 不選擇任何關卡。" } ] } \ No newline at end of file diff --git a/levels/001.json b/levels/001.json index 537ddf2..92f13d3 100644 --- a/levels/001.json +++ b/levels/001.json @@ -1,27 +1,10 @@ { - "frame_limit": 1200, - "screen_size": [ + "time_to_play": 1200, + "playground_size": [ 100, - 100 + 200 ], "score_to_pass": 20, - "mebo_init_lv": 1, - "green_food_counts": [ - 8, - 5, - 2, - 1 - ], - "red_food_counts": [ - 8, - 5, - 2, - 1 - ], - "black_food_counts": [ - 8, - 5, - 2, - 1 - ] + "green_food_count": 3, + "black_food_count": 0 } \ No newline at end of file diff --git a/levels/template.json b/levels/template.json index 537ddf2..8e70077 100644 --- a/levels/template.json +++ b/levels/template.json @@ -1,27 +1,10 @@ { - "frame_limit": 1200, - "screen_size": [ - 100, - 100 + "time_to_play": 1200, + "playground_size": [ + 500, + 200 ], "score_to_pass": 20, - "mebo_init_lv": 1, - "green_food_counts": [ - 8, - 5, - 2, - 1 - ], - "red_food_counts": [ - 8, - 5, - 2, - 1 - ], - "black_food_counts": [ - 8, - 5, - 2, - 1 - ] + "green_food_count": 3, + "black_food_count": 1 } \ No newline at end of file diff --git a/src/game.py b/src/game.py index 2ac9dbe..5ecb927 100644 --- a/src/game.py +++ b/src/game.py @@ -1,4 +1,6 @@ import copy +import json +import os.path from os import path import pygame @@ -25,26 +27,44 @@ class EasyGame(PaiaGame): """ def __init__( - self, time_to_play, score_to_win, green_food_count, black_food_count, - playground_size:list, + self, time_to_play, score_to_pass, green_food_count, black_food_count, + playground_size: list, + level: int = -1, + # level_file, *args, **kwargs): super().__init__(user_num=1) - self.playground_w = int(playground_size[0]) - self.playground_h = int(playground_size[1]) self.game_result_state = GameResultState.FAIL self.scene = Scene(width=WIDTH, height=HEIGHT, color=BG_COLOR, bias_x=0, bias_y=0) - self.playground = pygame.Rect( - 0, 0, - self.playground_w, - self.playground_h - ) - self.playground.center = (WIDTH / 2, HEIGHT / 2) - self.green_food_count = green_food_count - self.black_food_count = black_food_count - self.score_to_win = score_to_win - self.frame_limit = time_to_play + if level != -1: + with open(os.path.join(LEVEL_PATH, f"{level:03d}.json")) as f: + game_params = json.load(f) + self.playground_w = int(game_params["playground_size"][0]) + self.playground_h = int(game_params["playground_size"][1]) + self.playground = pygame.Rect( + 0, 0, + self.playground_w, + self.playground_h + ) + self.green_food_count = int(game_params["green_food_count"]) + self.black_food_count = int(game_params["black_food_count"]) + self.score_to_win = int(game_params["score_to_pass"]) + self.frame_limit = int(game_params["time_to_play"]) + pass + else: + self.playground_w = int(playground_size[0]) + self.playground_h = int(playground_size[1]) + self.playground = pygame.Rect( + 0, 0, + self.playground_w, + self.playground_h + ) + self.green_food_count = green_food_count + self.black_food_count = black_food_count + self.score_to_win = score_to_pass + self.frame_limit = time_to_play + self.playground.center = (WIDTH / 2, HEIGHT / 2) self.foods = pygame.sprite.Group() self.init_game() @@ -187,7 +207,7 @@ class EasyGame(PaiaGame): "player": get_ai_name(0), "rank": 1, "score": self.score, - "passed":self.score>self.score_to_win + "passed": self.score > self.score_to_win } ]