diff --git a/levels/001.json b/levels/001.json index b7486f5..f9130fb 100644 --- a/levels/001.json +++ b/levels/001.json @@ -1,5 +1,5 @@ { - "time_to_play": 300, + "time_to_play": 10, "playground_size_w":200, "playground_size_h":200, "score_to_pass": 10, diff --git a/src/game.py b/src/game.py index 213eaf4..fbde10a 100644 --- a/src/game.py +++ b/src/game.py @@ -47,6 +47,7 @@ class SwimmingSquid(PaiaGame): self.foods = pygame.sprite.Group() self.sound_controller = SoundController(sound) self._collision_mode = False + self._overtime_count = 0 self._init_game() @@ -72,6 +73,8 @@ class SwimmingSquid(PaiaGame): ) if game_params.playground_size_h >= 500 and game_params.playground_size_w >= 500: self._collision_mode = True + else: + self._collision_mode = False self._score_to_pass = game_params.score_to_pass self._frame_limit = game_params.time_to_play @@ -90,6 +93,7 @@ class SwimmingSquid(PaiaGame): self.frame_count = 0 self._frame_count_down = self._frame_limit + self._overtime_count = 0 self.sound_controller.play_music() def update(self, commands): @@ -255,15 +259,33 @@ class SwimmingSquid(PaiaGame): @property def is_passed(self): - if self.squid1.score >= self._score_to_pass or self.squid2.score >= self._score_to_pass: + if self.squid1.score >= self._score_to_pass or self.squid2.score >= self._score_to_pass: # 達成目標分數 + if self.squid1.score == self.squid2.score and self._overtime_count < 3: # 延長賽 + self._frame_limit += 600 + self._score_to_pass += 50 + self._overtime_count += 1 + return False return True else: return False + @property + def time_out(self): + if self.frame_count >= self._frame_limit: + if self.squid1.score == self.squid2.score and self._overtime_count < 3: # 延長賽 + self._frame_limit += 300 + self._overtime_count += 1 + return False + else: + return True + else: + return False + @property def is_running(self): + # return self.frame_count < self._frame_limit - return (self.frame_count < self._frame_limit) and (not self.is_passed) + return (not self.time_out) and (not self.is_passed) def get_scene_init_data(self): """ @@ -352,18 +374,19 @@ class SwimmingSquid(PaiaGame): """ if self.get_game_status() == GameStatus.GAME_PASS: self.game_result_state = GameResultState.FINISH + self.rank() return {"frame_used": self.frame_count, "state": self.game_result_state, "attachment": [ { "player": get_ai_name(0), - "rank": 1, + "rank": self.squid1.rank, "score": self.squid1.score, "passed": self.is_passed }, { "player": get_ai_name(1), - "rank": 2, + "rank": self.squid2.rank, "score": self.squid2.score, "passed": self.is_passed } @@ -417,4 +440,12 @@ class SwimmingSquid(PaiaGame): ''' ''' - pass + if self.squid1.score > self.squid2.score: + self.squid1.rank = 1 + self.squid2.rank = 2 + elif self.squid1.score < self.squid2.score: + self.squid1.rank = 2 + self.squid2.rank = 1 + else: + self.squid1.rank = 1 + self.squid2.rank = 1 diff --git a/src/game_object.py b/src/game_object.py index 97e7a14..c524505 100644 --- a/src/game_object.py +++ b/src/game_object.py @@ -41,6 +41,7 @@ class Squid(pygame.sprite.Sprite): self._score = 0 self._vel = LEVEL_PROPERTIES[1]['vel'] self._lv = 1 + self.rank = 1 self.angle = 0 self._last_collision = 0