(self)
| 316 | max(0, min(HEIGHT - 1, self.agent_pos[1] + dy))] |
| 317 | |
| 318 | def mainloop(self): |
| 319 | self._screen = _open(self.title, (WIDTH * UNIT, HEIGHT * UNIT + self.BAR)) |
| 320 | self._font = pygame.font.SysFont(None, 22) |
| 321 | self._small = pygame.font.SysFont(None, 16) |
| 322 | while True: |
| 323 | for e in pygame.event.get(): |
| 324 | if e.type == pygame.QUIT: |
| 325 | pygame.quit(); return |
| 326 | if e.type == pygame.MOUSEBUTTONDOWN and e.button == 1: |
| 327 | for rect, btn in zip(self._btn_rects(), self.buttons): |
| 328 | if rect.collidepoint(e.pos) and self._btn_enabled(btn): |
| 329 | label = btn[0] |
| 330 | self._press_label = label |
| 331 | self._press_frames = 6 |
| 332 | self._render() # draw the pressed state immediately |
| 333 | btn[1]() |
| 334 | self.clicks[label] = self.clicks.get(label, 0) + 1 |
| 335 | break |
| 336 | self._render() |
| 337 | time.sleep(0.03) |
| 338 | |
| 339 | @staticmethod |
| 340 | def _btn_enabled(btn): |
no test coverage detected