diff --git a/flower_game_env.py b/flower_game_env.py index 9868d67..b66bef8 100644 --- a/flower_game_env.py +++ b/flower_game_env.py @@ -191,6 +191,8 @@ class FlowerGameEnv(gym.Env): self.contact_cooldown_frames = 8 self._cooldown = 0 self.prev_dist_to_flower_nd = None + self.prev_flower_x = None + self.prev_flower_y = None self.flowers_eaten = 0 # Bomben-Filter (konstant, bis auf min_area -> wird aus frac abgeleitet) @@ -224,14 +226,14 @@ class FlowerGameEnv(gym.Env): return obs, {} def step(self, action): - if action == 0: - pyautogui.press("w") - elif action == 1: - pyautogui.press("a") - elif action == 2: - pyautogui.press("s") - elif action == 3: - pyautogui.press("d") + # if action == 0: + # pyautogui.press("w") + # elif action == 1: + # pyautogui.press("a") + # elif action == 2: + # pyautogui.press("s") + # elif action == 3: + # pyautogui.press("d") time.sleep(0.01) @@ -354,19 +356,23 @@ class FlowerGameEnv(gym.Env): else: self.prev_dist_to_flower_nd = None - # Eat-Event (achsenweise Rechtecktest, Halbachsen = */2 von w bzw. h) + # Eat-Event (Wenn die Blume woanders neu spawnt) if self._cooldown == 0 and tf and ff: - dx_nw = abs(tx - fx) / float(w if w > 0 else 1) - dy_nh = abs(ty - fy) / float(h if h > 0 else 1) - if (dx_nw <= (self.eat_x_nd * 0.5)) and (dy_nh <= (self.eat_y_nd * 0.5)): + if self.prev_flower_x is None: + self.prev_flower_x = fx + if self.prev_flower_y is None: + self.prev_flower_y = fy + if abs(self.prev_flower_x - fx) >= float(w/20 if w > 0 else 1) and abs(self.prev_flower_y - fy) >= float(h/15 if h > 0 else 1): print("Blume gegessen!") reward += self.eat_reward self._cooldown = self.contact_cooldown_frames self.flowers_eaten += 1 + self.prev_flower_x = fx + self.prev_flower_y = fy # Überprüfung auf Kollision mit Bombe / Game Over Screen Farben rgb_data = self.raw[:, :, :3] - target_color = np.array([113, 110, 83]) + target_color = np.array([114, 111, 84]) tolerance = 10 found_blue = np.any(np.all(np.abs(rgb_data - target_color) <= tolerance, axis=-1)) if found_blue: