def draw(self): self.screen.fill(BLACK) self.draw_grid() self.draw_path() for tower in self.towers: tower.draw(self.screen) for enemy in self.enemies: enemy.draw(self.screen) for bullet in self.bullets: bullet.draw(self.screen) self.draw_ui() pygame.display.flip()

if not self.wave_in_progress and self.wave_timer > 0: next_text = self.font.render(f"Next wave in: self.wave_timer // 60 + 1", True, YELLOW) self.screen.blit(next_text, (SCREEN_WIDTH // 2 - 100, SCREEN_HEIGHT - 50))

# Grid for tower placement self.grid = [[False for _ in range(GRID_HEIGHT)] for _ in range(GRID_WIDTH)] # Mark path as non-buildable for (wx, wy) in WAYPOINTS: self.grid[wx][wy] = True

class Tower: def (self, x, y): self.x = x self.y = y self.range = TOWER_RANGE self.cooldown = 0 self.color = BLUE

# Update towers for tower in self.towers: new_bullet = tower.update(self.enemies) if new_bullet: self.bullets.append(new_bullet)

# Update bullets for bullet in self.bullets[:]: bullet.update() if not bullet.active: self.bullets.remove(bullet)