Hesoyam & Stormborn
Hesoyam Hesoyam
Привет, Шторморожденный. Закончил кодить ИИ для строительства базы в новой игре на выживание – хочешь посмотреть, как он справится с твоими эпичными рейдами?
Stormborn Stormborn
Конечно, давай. Я к этому готов как раз.
Hesoyam Hesoyam
Привет, вот небольшой скрипт, который строит простого AI для строительства базы. Он использует простую сетку, возводит стены по краям, а затем располагает несколько точек с ресурсами внутри, чтобы ты мог сразу начать крафтить. Скопируй его в Python-файл и запусти – в терминале появится сетка, которую ты сможешь увидеть.
Stormborn Stormborn
Отличный код, но когда я его пересмотрю, хочу видеть надёжную структуру, а не просто несколько ресурсов разбросано. Посмотрим, выдержит ли он настоящий шторм.
Hesoyam Hesoyam
Отлично, подправлю стены, сделаю их прочнее. Сделаю двухслойные, добавлю случайные “усиленные” плитки, которые сложнее ломать, и дам ИИ простой счётчик повреждений для каждой плитки стены. Потом сможем провести испытание на шторм, запустив несколько “раундов шторма”, где случайные плитки будут получать урон. Так ты сможешь увидеть, как стены выдержат при серьезной нагрузке. Хочешь, чтобы я набросал новый план кода?
Stormborn Stormborn
Давай, запускай. Готов как следует въехать в эту стену. Посмотрим, что скажут эти двойные слои, когда примут на себя удар.
Hesoyam Hesoyam
Привет, вот обновлённый скрипт с двойными стенами и простой симуляцией разрушений от бури. Просто вставь его в .py файл и запусти — каждый раунд бури будет бить по случайным стенам, снижая их прочность. Если у тайла закончится прочность, он разрушится. Получай удовольствие от разрушений! import random class BaseBuilderAI: def __init__(self, size=12, wall_hp=2): self.size = size self.wall_hp = wall_hp self.grid = [[' ' for _ in range(size)] for _ in range(size)] self.wall_strength = [['' for _ in range(size)] for _ in range(size)] def place_walls(self): for i in range(self.size): self.grid[0][i] = '#' self.grid[self.size-1][i] = '#' self.grid[i][0] = '#' self.grid[i][self.size-1] = '#' self.wall_strength[0][i] = self.wall_hp self.wall_strength[self.size-1][i] = self.wall_hp self.wall_strength[i][0] = self.wall_hp self.wall_strength[i][self.size-1] = self.wall_hp def place_resources(self, count=5): placed = 0 while placed < count: x = random.randint(1, self.size-2) y = random.randint(1, self.size-2) if self.grid[y][x] == ' ': self.grid[y][x] = 'R' placed += 1 def display(self): for row in self.grid: print(''.join(row)) print() def storm_round(self, rounds=5): for r in range(rounds): print(f"Раунд бури {r+1}") # Randomly hit 3 wall tiles for _ in range(3): x = random.randint(0, self.size-1) y = random.randint(0, self.size-1) if self.grid[y][x] == '#': self.wall_strength[y][x] -= 1 if self.wall_strength[y][x] <= 0: self.grid[y][x] = ' ' # wall breaks self.wall_strength[y][x] = '' print(f" Стена в координатах ({y},{x}) разрушена!") else: print(f" Стена в координатах ({y},{x}) получила урон, осталось прочности: {self.wall_strength[y][x]}") self.display() def run(self): self.place_walls() self.place_resources() print("Начальная база:") self.display() self.storm_round() if __name__ == "__main__": ai = BaseBuilderAI() ai.run()