- 1
- 0
В этом коде надо найти и исправить ошибки, вроде бы все правильно но пишет что есть ошибки
Код писал не я а нейросет дипсик
import pygame
import sys
import random
import math
import os
from pygame.locals import *
from pygame import gfxdraw
# Инициализация
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((1280, 720), HWSURFACE | DOUBLEBUF)
clock = pygame.time.Clock()
class WorldGenerator:
def __init__(self):
self.palette = {
'time_rift': (45, 170, 255),
'chrono_steel': (80, 90, 100),
'void': (15, 25, 35),
'hud': (200, 220, 240)
}
def generate_terrain(self):
terrain = pygame.Surface((1280, 720))
for y in range(720):
for x in range(1280):
n = math.sin(x * 0.01) * math.cos(y * 0.01) + random.random() * 0.1
color = [c * (0.4 + n * 0.6) for c in self.palette['chrono_steel']]
terrain.set_at((x, y), color)
return terrain
class ChronoCore:
def __init__(self):
self.running = True
self.phase = "dialogue"
self.world = WorldGenerator()
self.terrain = self.world.generate_terrain()
self.font = pygame.font.SysFont('Arial', 24)
self.save_file = "saves.txt"
self.paradox_level = 0.0
self.current_era = 2023
self.player_pos = [640, 360]
self.inventory = {
'crystals': 0,
'memories': []
}
self.story_events = [
{
'year': 2023,
'text': "ВРЕМЕННОЙ РАЗРЫВ: Лаборатория квантовых исследований...\nВыберите действие:",
'choices': [
("Активировать стабилизатор", "reduce_paradox"),
("Войти в портал", "era_1945")
]
},
{
'year': 1945,
'text': "Альтернативная реальность: Третий Рейх победил...\nВыберите действие:",
'choices': [
("Уничтожить лабораторию", "major_paradox"),
("Украсть чертежи", "add_memory")
]
}
]
self.current_event = 0
self.init_audio()
def init_audio(self):
if not os.path.exists('sounds'):
os.makedirs('sounds')
try:
pygame.mixer.music.load('sounds/background.mp3')
pygame.mixer.music.set_volume(0.3)
pygame.mixer.music.play(-1)
except Exception as e:
print(f"Ошибка аудио: {e}")
def save_game(self):
try:
with open(self.save_file, 'w') as f:
f.write(f"era={self.current_era}\n")
f.write(f"paradox={self.paradox_level}\n")
f.write(f"crystals={self.inventory['crystals']}\n")
f.write(f"memories={','.join(self.inventory['memories'])}\n")
f.write(f"event={self.current_event}\n")
except Exception as e:
print(f"Ошибка сохранения: {e}")
def load_game(self):
try:
if not os.path.exists(self.save_file):
return
with open(self.save_file, 'r') as f:
data = {}
for line in f.read().split('\n'):
if '=' in line:
key, val = line.split('=', 1)
data[key] = val
self.current_era = int(data.get('era', 2023))
self.paradox_level = float(data.get('paradox', 0))
self.inventory['crystals'] = int(data.get('crystals', 0))
self.inventory['memories'] = data.get('memories', '').split(',')
self.current_event = int(data.get('event', 0))
except Exception as e:
print(f"Ошибка загрузки: {e}")
def draw_hud(self):
bar_width = int(400 * (1 - self.paradox_level/100))
pygame.draw.rect(screen, (255,40,40), (20,20,400,30))
pygame.draw.rect(screen, (40,200,40), (20,20,bar_width,30))
text = self.font.render(
f"Хроно-кристаллы: {self.inventory['crystals']}/7",
True, self.world.palette['hud'])
screen.blit(text, (20, 70))
def draw_dialogue(self, text, choices):
dialog = pygame.Surface((800, 400), pygame.SRCALPHA)
pygame.draw.rect(dialog, (30,40,50,200), (0,0,800,400), border_radius=20)
lines = text.split('\n')
for i, line in enumerate(lines):
text_surf = self.font.render(line, True, (200,220,240))
dialog.blit(text_surf, (50, 30 + i*30))
for i, (choice, _) in enumerate(choices):
btn = pygame.Rect(50, 150 + i*80, 700, 60)
pygame.draw.rect(dialog, (60,70,80,200), btn, border_radius=15)
text = self.font.render(choice, True, (160,180,200))
dialog.blit(text, (btn.x + 20, btn.centery - 10))
screen.blit(dialog, (240, 100))
def handle_choice(self, result):
if result == "reduce_paradox":
self.paradox_level = max(0, self.paradox_level - 25)
elif result == "era_1945":
self.current_era = 1945
elif result == "add_memory":
self.inventory['memories'].append(f"Память {self.current_era}")
self.save_game()
self.current_event += 1
if self.current_event >= len(self.story_events):
self.show_ending()
else:
self.phase = "dialogue"
def show_ending(self):
ending_text = (
"ХРОНО-ПАРАДОКС УСТАНОВЛЕН\n\n"
f"Кристаллов собрано: {self.inventory['crystals']}/7\n"
f"Уровень парадокса: {self.paradox_level}%\n"
"Судьба временной линии зависит от ваших решений..."
)
ending_screen = pygame.Surface((800, 400), pygame.SRCALPHA)
pygame.draw.rect(ending_screen, (30,40,50,200), (0,0,800,400), border_radius=20)
lines = ending_text.split('\n')
for i, line in enumerate(lines):
text = self.font.render(line, True, (200,220,240))
ending_screen.blit(text, (50, 30 + i*30))
screen.blit(ending_screen, (240, 100))
pygame.display.flip()
pygame.time.wait(5000)
self.running = False
def run(self):
self.load_game()
if self.current_event >= len(self.story_events):
self.show_ending()
return
while self.running:
screen.fill(self.world.palette['void'])
screen.blit(self.terrain, (0,0))
for event in pygame.event.get():
if event.type == QUIT:
self.running = False
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
self.running = False
if event.key == K_F5:
self.save_game()
if event.key == K_F9:
self.load_game()
if event.type == MOUSEBUTTONDOWN and self.phase == "dialogue":
mouse_pos = pygame.mouse.get_pos()
if 240 < mouse_pos[0] < 1040 and 100 < mouse_pos[1] < 500:
choice_index = (mouse_pos[1] - 150) // 80
if 0 <= choice_index < len(self.story_events[self.current_event]['choices']):
self.handle_choice(
self.story_events[self.current_event]['choices'][choice_index][1])
if self.phase == "dialogue":
event = self.story_events[self.current_event]
self.draw_dialogue(event['text'], event['choices'])
self.draw_hud()
pygame.display.flip()
clock.tick(60)
pygame.quit()
sys.exit()
if __name__ == "__main__":
game = ChronoCore()
game.run()
Код писал не я а нейросет дипсик
import pygame
import sys
import random
import math
import os
from pygame.locals import *
from pygame import gfxdraw
# Инициализация
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((1280, 720), HWSURFACE | DOUBLEBUF)
clock = pygame.time.Clock()
class WorldGenerator:
def __init__(self):
self.palette = {
'time_rift': (45, 170, 255),
'chrono_steel': (80, 90, 100),
'void': (15, 25, 35),
'hud': (200, 220, 240)
}
def generate_terrain(self):
terrain = pygame.Surface((1280, 720))
for y in range(720):
for x in range(1280):
n = math.sin(x * 0.01) * math.cos(y * 0.01) + random.random() * 0.1
color = [c * (0.4 + n * 0.6) for c in self.palette['chrono_steel']]
terrain.set_at((x, y), color)
return terrain
class ChronoCore:
def __init__(self):
self.running = True
self.phase = "dialogue"
self.world = WorldGenerator()
self.terrain = self.world.generate_terrain()
self.font = pygame.font.SysFont('Arial', 24)
self.save_file = "saves.txt"
self.paradox_level = 0.0
self.current_era = 2023
self.player_pos = [640, 360]
self.inventory = {
'crystals': 0,
'memories': []
}
self.story_events = [
{
'year': 2023,
'text': "ВРЕМЕННОЙ РАЗРЫВ: Лаборатория квантовых исследований...\nВыберите действие:",
'choices': [
("Активировать стабилизатор", "reduce_paradox"),
("Войти в портал", "era_1945")
]
},
{
'year': 1945,
'text': "Альтернативная реальность: Третий Рейх победил...\nВыберите действие:",
'choices': [
("Уничтожить лабораторию", "major_paradox"),
("Украсть чертежи", "add_memory")
]
}
]
self.current_event = 0
self.init_audio()
def init_audio(self):
if not os.path.exists('sounds'):
os.makedirs('sounds')
try:
pygame.mixer.music.load('sounds/background.mp3')
pygame.mixer.music.set_volume(0.3)
pygame.mixer.music.play(-1)
except Exception as e:
print(f"Ошибка аудио: {e}")
def save_game(self):
try:
with open(self.save_file, 'w') as f:
f.write(f"era={self.current_era}\n")
f.write(f"paradox={self.paradox_level}\n")
f.write(f"crystals={self.inventory['crystals']}\n")
f.write(f"memories={','.join(self.inventory['memories'])}\n")
f.write(f"event={self.current_event}\n")
except Exception as e:
print(f"Ошибка сохранения: {e}")
def load_game(self):
try:
if not os.path.exists(self.save_file):
return
with open(self.save_file, 'r') as f:
data = {}
for line in f.read().split('\n'):
if '=' in line:
key, val = line.split('=', 1)
data[key] = val
self.current_era = int(data.get('era', 2023))
self.paradox_level = float(data.get('paradox', 0))
self.inventory['crystals'] = int(data.get('crystals', 0))
self.inventory['memories'] = data.get('memories', '').split(',')
self.current_event = int(data.get('event', 0))
except Exception as e:
print(f"Ошибка загрузки: {e}")
def draw_hud(self):
bar_width = int(400 * (1 - self.paradox_level/100))
pygame.draw.rect(screen, (255,40,40), (20,20,400,30))
pygame.draw.rect(screen, (40,200,40), (20,20,bar_width,30))
text = self.font.render(
f"Хроно-кристаллы: {self.inventory['crystals']}/7",
True, self.world.palette['hud'])
screen.blit(text, (20, 70))
def draw_dialogue(self, text, choices):
dialog = pygame.Surface((800, 400), pygame.SRCALPHA)
pygame.draw.rect(dialog, (30,40,50,200), (0,0,800,400), border_radius=20)
lines = text.split('\n')
for i, line in enumerate(lines):
text_surf = self.font.render(line, True, (200,220,240))
dialog.blit(text_surf, (50, 30 + i*30))
for i, (choice, _) in enumerate(choices):
btn = pygame.Rect(50, 150 + i*80, 700, 60)
pygame.draw.rect(dialog, (60,70,80,200), btn, border_radius=15)
text = self.font.render(choice, True, (160,180,200))
dialog.blit(text, (btn.x + 20, btn.centery - 10))
screen.blit(dialog, (240, 100))
def handle_choice(self, result):
if result == "reduce_paradox":
self.paradox_level = max(0, self.paradox_level - 25)
elif result == "era_1945":
self.current_era = 1945
elif result == "add_memory":
self.inventory['memories'].append(f"Память {self.current_era}")
self.save_game()
self.current_event += 1
if self.current_event >= len(self.story_events):
self.show_ending()
else:
self.phase = "dialogue"
def show_ending(self):
ending_text = (
"ХРОНО-ПАРАДОКС УСТАНОВЛЕН\n\n"
f"Кристаллов собрано: {self.inventory['crystals']}/7\n"
f"Уровень парадокса: {self.paradox_level}%\n"
"Судьба временной линии зависит от ваших решений..."
)
ending_screen = pygame.Surface((800, 400), pygame.SRCALPHA)
pygame.draw.rect(ending_screen, (30,40,50,200), (0,0,800,400), border_radius=20)
lines = ending_text.split('\n')
for i, line in enumerate(lines):
text = self.font.render(line, True, (200,220,240))
ending_screen.blit(text, (50, 30 + i*30))
screen.blit(ending_screen, (240, 100))
pygame.display.flip()
pygame.time.wait(5000)
self.running = False
def run(self):
self.load_game()
if self.current_event >= len(self.story_events):
self.show_ending()
return
while self.running:
screen.fill(self.world.palette['void'])
screen.blit(self.terrain, (0,0))
for event in pygame.event.get():
if event.type == QUIT:
self.running = False
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
self.running = False
if event.key == K_F5:
self.save_game()
if event.key == K_F9:
self.load_game()
if event.type == MOUSEBUTTONDOWN and self.phase == "dialogue":
mouse_pos = pygame.mouse.get_pos()
if 240 < mouse_pos[0] < 1040 and 100 < mouse_pos[1] < 500:
choice_index = (mouse_pos[1] - 150) // 80
if 0 <= choice_index < len(self.story_events[self.current_event]['choices']):
self.handle_choice(
self.story_events[self.current_event]['choices'][choice_index][1])
if self.phase == "dialogue":
event = self.story_events[self.current_event]
self.draw_dialogue(event['text'], event['choices'])
self.draw_hud()
pygame.display.flip()
clock.tick(60)
pygame.quit()
sys.exit()
if __name__ == "__main__":
game = ChronoCore()
game.run()