From 1191ec6553da41e57151ad2f4dfb1c134ecc6140 Mon Sep 17 00:00:00 2001 From: yanshaoting Date: Wed, 31 Jan 2024 15:35:48 +0800 Subject: [PATCH] add 2P --- asset/img/squid2.png | Bin 0 -> 51846 bytes main.py | 2 +- src/env.py | 2 ++ src/game.py | 83 ++++++++++++++++++++++++++++++++++--------- src/game_object.py | 5 +-- 5 files changed, 73 insertions(+), 19 deletions(-) create mode 100644 asset/img/squid2.png diff --git a/asset/img/squid2.png b/asset/img/squid2.png new file mode 100644 index 0000000000000000000000000000000000000000..8aac6505b58bca34bc2e9b25dcda7171e2f17fa4 GIT binary patch literal 51846 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 self._score_to_pass + return self.squid1.score >= self._score_to_pass @property def is_running(self): @@ -212,7 +249,8 @@ class SwimmingSquid(PaiaGame): "scene": self.scene.__dict__, "assets": [ create_asset_init_data("bg", 1000, 1000, BG_PATH, BG_URL), - create_asset_init_data("squid", SQUID_W, SQUID_H, SQUID_PATH, SQUID_URL), + create_asset_init_data("squid1", SQUID_W, SQUID_H, SQUID_PATH, SQUID_URL), + create_asset_init_data("squid2", SQUID_W, SQUID_H, SQUID2_PATH, SQUID2_URL), create_asset_init_data(IMG_ID_FOOD01_L, FOOD_LV1_SIZE, FOOD_LV1_SIZE, FOOD01_L_PATH, FOOD01_L_URL), create_asset_init_data(IMG_ID_FOOD02_L, FOOD_LV2_SIZE, FOOD_LV2_SIZE, FOOD02_L_PATH, FOOD02_L_URL), create_asset_init_data(IMG_ID_FOOD03_L, FOOD_LV3_SIZE, FOOD_LV3_SIZE, FOOD03_L_PATH, FOOD03_L_URL), @@ -240,7 +278,7 @@ class SwimmingSquid(PaiaGame): foods_data = [] for food in self.foods: foods_data.append(food.game_object_data) - game_obj_list = [self.squid.game_object_data] + game_obj_list = [self.squid1.game_object_data, self.squid2.game_object_data] game_obj_list.extend(foods_data) backgrounds = [ # create_image_view_data("background", 0, 0, WIDTH, HEIGHT), @@ -254,13 +292,13 @@ class SwimmingSquid(PaiaGame): foregrounds = [ ] - star_string = '+' * self.squid.lv + star_string = '+' * self.squid1.lv toggle_objs = [ create_text_view_data(f"Squid Lv: {star_string}", 705, 50, "#EEEEEE", "20px Consolas BOLD"), - create_text_view_data(f"To Lv up: {LEVEL_THRESHOLDS[self.squid.lv - 1]-self.squid.score :04d} pt", 705, 80, "#EEEEEE", "20px Consolas BOLD"), - create_text_view_data(f"Vel : {self.squid.vel:4d}", 705, 110, "#EEEEEE", "20px Consolas BOLD"), + create_text_view_data(f"To Lv up: {LEVEL_THRESHOLDS[self.squid1.lv - 1]-self.squid1.score :04d} pt", 705, 80, "#EEEEEE", "20px Consolas BOLD"), + create_text_view_data(f"Vel : {self.squid1.vel:4d}", 705, 110, "#EEEEEE", "20px Consolas BOLD"), create_text_view_data(f"Timer : {self._frame_count_down:04d}", 705, 150, "#EEEEEE", "20px Consolas BOLD"), - create_text_view_data(f"My Score: {self.squid.score:04d} pt", 705, 180, "#EEEEEE", "20px Consolas BOLD"), + create_text_view_data(f"My Score: {self.squid1.score:04d} pt", 705, 180, "#EEEEEE", "20px Consolas BOLD"), create_text_view_data(f"Goal : {self._score_to_pass:04d} pt", 705, 210, "#EEEEEE", "20px Consolas BOLD"), ] scene_progress = create_scene_progress_data( @@ -294,6 +332,7 @@ class SwimmingSquid(PaiaGame): Define how your game will run by your keyboard """ cmd_1p = [] + cmd_2p = [] key_pressed_list = pygame.key.get_pressed() if key_pressed_list[pygame.K_UP]: cmd_1p.append("UP") @@ -305,7 +344,19 @@ class SwimmingSquid(PaiaGame): cmd_1p.append("RIGHT") else: cmd_1p.append("NONE") - return {get_ai_name(0): cmd_1p} + + if key_pressed_list[pygame.K_w]: + cmd_2p.append("UP") + elif key_pressed_list[pygame.K_s]: + cmd_2p.append("DOWN") + elif key_pressed_list[pygame.K_a]: + cmd_2p.append("LEFT") + elif key_pressed_list[pygame.K_d]: + cmd_2p.append("RIGHT") + else: + cmd_2p.append("NONE") + + return {get_ai_name(0): cmd_1p, get_ai_name(1):cmd_2p} def _create_foods(self, FOOD_TYPE, count: int = 5): for i in range(count): diff --git a/src/game_object.py b/src/game_object.py index 03f0389..7e8cc7f 100644 --- a/src/game_object.py +++ b/src/game_object.py @@ -30,9 +30,10 @@ class Squid(pygame.sprite.Sprite): ANGLE_TO_RIGHT = math.radians(-10) ANGLE_TO_LEFT = math.radians(10) - def __init__(self): + def __init__(self, id): pygame.sprite.Sprite.__init__(self) + self.id = id self.origin_image = pygame.Surface([SQUID_W, SQUID_H]) self.image = self.origin_image self.rect = self.image.get_rect() @@ -66,7 +67,7 @@ class Squid(pygame.sprite.Sprite): def game_object_data(self): return create_image_view_data( - "squid", + f"squid{self.id}", self.rect.x, self.rect.y, self.rect.width,