feat: add black food
This commit is contained in:
parent
97308464c0
commit
079c0c9e43
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
from enum import auto
|
||||||
|
from mlgame.utils.enum import StringEnum
|
||||||
|
class FoodTypeEnum(StringEnum):
|
||||||
|
GREEN = auto()
|
||||||
|
BLACK = auto()
|
36
src/game.py
36
src/game.py
|
@ -8,6 +8,7 @@ from mlgame.utils.enum import get_ai_name
|
||||||
from mlgame.view.decorator import check_game_progress, check_game_result
|
from mlgame.view.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 .enums import FoodTypeEnum
|
||||||
from .game_object import Ball, Food
|
from .game_object import Ball, Food
|
||||||
|
|
||||||
ASSET_PATH = path.join(path.dirname(__file__), "../asset")
|
ASSET_PATH = path.join(path.dirname(__file__), "../asset")
|
||||||
|
@ -19,21 +20,26 @@ class EasyGame(PaiaGame):
|
||||||
This is a Interface of a game
|
This is a Interface of a game
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, time_to_play, green_food_count,black_food_count, score, color, *args, **kwargs):
|
def __init__(self, time_to_play, green_food_count, black_food_count, score, color, *args, **kwargs):
|
||||||
super().__init__(user_num=1)
|
super().__init__(user_num=1)
|
||||||
self.game_result_state = GameResultState.FAIL
|
self.game_result_state = GameResultState.FAIL
|
||||||
self.scene = Scene(width=800, height=600, color="#111111", bias_x=0, bias_y=0)
|
self.scene = Scene(width=800, height=600, color="#111111", bias_x=0, bias_y=0)
|
||||||
self.total_point_count = green_food_count
|
self.green_food_count = green_food_count
|
||||||
|
self.black_food_count = black_food_count
|
||||||
self.color = color
|
self.color = color
|
||||||
self.ball = Ball("#" + color)
|
|
||||||
self.foods = pygame.sprite.Group()
|
self.foods = pygame.sprite.Group()
|
||||||
self.score = 0
|
|
||||||
self.score_to_win = score
|
self.score_to_win = score
|
||||||
self._create_foods(self.total_point_count)
|
|
||||||
self._begin_time = time.time()
|
|
||||||
self._frame_count_down = time_to_play
|
|
||||||
self.frame_limit = time_to_play
|
self.frame_limit = time_to_play
|
||||||
|
self.init_game()
|
||||||
|
|
||||||
|
def init_game(self):
|
||||||
|
self.ball = Ball("#" + self.color)
|
||||||
|
self.foods.empty()
|
||||||
|
self.score = 0
|
||||||
|
self._create_foods(self.green_food_count,FoodTypeEnum.GREEN)
|
||||||
|
self._create_foods(self.black_food_count,FoodTypeEnum.BLACK)
|
||||||
self.frame_count = 0
|
self.frame_count = 0
|
||||||
|
self._frame_count_down = self.frame_limit
|
||||||
|
|
||||||
def update(self, commands):
|
def update(self, commands):
|
||||||
# handle command
|
# handle command
|
||||||
|
@ -96,13 +102,8 @@ class EasyGame(PaiaGame):
|
||||||
return status
|
return status
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.score = 0
|
self.init_game()
|
||||||
self._begin_time = time.time()
|
|
||||||
self._frame_count_down = 0
|
|
||||||
self.frame_count = 0
|
|
||||||
self.ball = Ball("#" + self.color)
|
|
||||||
self.foods = pygame.sprite.Group()
|
|
||||||
self._create_foods(self.total_point_count)
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -138,7 +139,8 @@ class EasyGame(PaiaGame):
|
||||||
game_obj_list.extend(foods_data)
|
game_obj_list.extend(foods_data)
|
||||||
backgrounds = [create_image_view_data("background", 0, 0, 800, 600)]
|
backgrounds = [create_image_view_data("background", 0, 0, 800, 600)]
|
||||||
foregrounds = [create_text_view_data(f"Score = {str(self.score)}", 650, 50, "#FF0000", "24px Arial BOLD")]
|
foregrounds = [create_text_view_data(f"Score = {str(self.score)}", 650, 50, "#FF0000", "24px Arial BOLD")]
|
||||||
toggle_objs = [create_text_view_data(f"{self._frame_count_down:04d} frame", 650, 100, "#FFAA00", "24px Arial BOLD")]
|
toggle_objs = [
|
||||||
|
create_text_view_data(f"{self._frame_count_down:04d} frame", 650, 100, "#FFAA00", "24px Arial BOLD")]
|
||||||
scene_progress = create_scene_progress_data(frame=self.frame_count, background=backgrounds,
|
scene_progress = create_scene_progress_data(frame=self.frame_count, background=backgrounds,
|
||||||
object_list=game_obj_list,
|
object_list=game_obj_list,
|
||||||
foreground=foregrounds, toggle=toggle_objs)
|
foreground=foregrounds, toggle=toggle_objs)
|
||||||
|
@ -181,8 +183,8 @@ class EasyGame(PaiaGame):
|
||||||
cmd_1p.append("NONE")
|
cmd_1p.append("NONE")
|
||||||
return {get_ai_name(0): cmd_1p}
|
return {get_ai_name(0): cmd_1p}
|
||||||
|
|
||||||
def _create_foods(self, count: int = 5):
|
def _create_foods(self, count: int = 5, type: FoodTypeEnum = FoodTypeEnum.GREEN):
|
||||||
for i in range(count):
|
for i in range(count):
|
||||||
# add food to group
|
# add food to group
|
||||||
food = Food(self.foods)
|
food = Food(self.foods, type)
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -2,9 +2,11 @@ import random
|
||||||
|
|
||||||
import pygame.sprite
|
import pygame.sprite
|
||||||
|
|
||||||
|
from games.easy_game.src.enums import FoodTypeEnum
|
||||||
from mlgame.view.view_model import create_rect_view_data
|
from mlgame.view.view_model import create_rect_view_data
|
||||||
|
|
||||||
FOOD_COLOR = "#009688"
|
FOOD_COLOR_MAP = {FoodTypeEnum.GREEN: "#009688",
|
||||||
|
FoodTypeEnum.BLACK: "#263238"}
|
||||||
|
|
||||||
BALL_VEL = 10.5
|
BALL_VEL = 10.5
|
||||||
|
|
||||||
|
@ -53,10 +55,12 @@ class Ball(pygame.sprite.Sprite):
|
||||||
|
|
||||||
|
|
||||||
class Food(pygame.sprite.Sprite):
|
class Food(pygame.sprite.Sprite):
|
||||||
def __init__(self, group):
|
def __init__(self, group, type: FoodTypeEnum):
|
||||||
pygame.sprite.Sprite.__init__(self, group)
|
pygame.sprite.Sprite.__init__(self, group)
|
||||||
self.image = pygame.Surface([8, 8])
|
self.image = pygame.Surface([8, 8])
|
||||||
self.color = FOOD_COLOR
|
self.type = FoodTypeEnum.GREEN
|
||||||
|
self.color = FOOD_COLOR_MAP[type]
|
||||||
|
|
||||||
self.rect = self.image.get_rect()
|
self.rect = self.image.get_rect()
|
||||||
self.rect.centerx = random.randint(0, 800)
|
self.rect.centerx = random.randint(0, 800)
|
||||||
self.rect.centery = random.randint(0, 600)
|
self.rect.centery = random.randint(0, 600)
|
||||||
|
@ -74,4 +78,4 @@ class Food(pygame.sprite.Sprite):
|
||||||
self.rect.width,
|
self.rect.width,
|
||||||
self.rect.height,
|
self.rect.height,
|
||||||
self.color
|
self.color
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue