
Import pygame import randompygame.init()WIDTH = 800HEIGHT = 600back = (0, 0, 0)WHITE = (255, 255,
255)RED = (255, 0, 0)GREEN = (0, 255, 0)BLUE = (0, 0, 255)screen = pygame.display.set_mode((WIDTH, HEIGHT))pygame.display.set_caption("Потискаф направляется к Титанику!")class Monster(): def __init__(self, x=0, y=0, width=10, height=10, color=None): self.rect = pygame.Rect(x, y, width, height) self.fill_color = back if color: self.fill_color = color def color(self, new_color): self.fill_color = new_color def fill(self): pygame.draw.rect(mw, self.fill_color, self.rect) def collidepoint(self, x, y): return self.rect.collidepoint(x, y) def colliderect(self, rect): return self.rect.colliderect(rect)class Player(): def __init__(self, x=0, y=0, width=10, height=10, color=None): self.rect = pygame.Rect(x, y, width, height) self.fill_color = back if color: self.fill_color = color def color(self, new_color): self.fill_color = new_color def fill(self): pygame.draw.rect(mw, self.fill_color, self.rect) def collidepoint(self, x, y): return self.rect.collidepoint(x, y) def colliderect(self, rect): return self.rect.colliderect(rect)player = Player("Potiskaaf", 100, 10)monster1 = Monster("Monster1", 50, 5)monster2 = Monster("Monster2", 75, 8)player_size = 50player_x = WIDTH / 2 - player_size / 2player_y = HEIGHT - player_sizeplayer_speed = 5monster_size = 50monster_x = random.randint(0, WIDTH - monster_size)monster_y = -monster_sizemonster_speed = 2score = 0clock = pygame.time.Clock()game_over = Falsefont = pygame.font.Font(None, 36)def show_score(x, y): score_text = font.render(f"Score: {score}", True, WHITE) screen.blit(score_text, (x, y))def collision(player_x, player_y, monster_x, monster_y): distance = ((player_x - monster_x)**2 + (player_y - monster_y)**2)**0.5 if distance < player_size / 2 + monster_size / 2: return True return Falsewhile not game_over: for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: player_x -= player_speed elif event.key == pygame.K_RIGHT: player_x += player_speed monster_y += monster_speed if collision(player_x, player_y, monster_x, monster_y): score += 1 monster_x = random.randint(0, WIDTH - monster_size) monster_y = -monster_size player(player_x, player_y) monster(monster_x, monster_y) show_score(10, 10) pygame.display.update() clock.tick(60)pygame.quit()Срочно кто может исправить ошибки уже несколо часов не могу понять где ошибка. 

Ответы на вопрос

Ответ:
Объяснение:
import pygame
import random
pygame.init()
WIDTH = 800
HEIGHT = 600
back = (0, 0, 0)
WHITE = (255, 255, 255)
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Потискаф направляется к Титанику!")
class Monster():
def __init__(self, name, x=0, y=0, width=10, height=10, color=None):
self.name = name
self.rect = pygame.Rect(x, y, width, height)
self.fill_color = back
if color:
self.fill_color = color
def color(self, new_color):
self.fill_color = new_color
def fill(self):
pygame.draw.rect(screen, self.fill_color, self.rect)
def collidepoint(self, x, y):
return self.rect.collidepoint(x, y)
def colliderect(self, rect):
return self.rect.colliderect(rect)
class Player():
def __init__(self, name, x=0, y=0, width=10, height=10, color=None):
self.name = name
self.rect = pygame.Rect(x, y, width, height)
self.fill_color = back
if color:
self.fill_color = color
def color(self, new_color):
self.fill_color = new_color
def fill(self):
pygame.draw.rect(screen, self.fill_color, self.rect)
def collidepoint(self, x, y):
return self.rect.collidepoint(x, y)
def colliderect(self, rect):
return self.rect.colliderect(rect)
player_size = 50
player_x = WIDTH / 2 - player_size / 2
player_y = HEIGHT - player_size
player_speed = 5
monster_size = 50
monster_x = random.randint(0, WIDTH - monster_size)
monster_y = -monster_size
monster_speed = 2
score = 0
clock = pygame.time.Clock()
game_over = False
font = pygame.font.Font(None, 36)
def show_score(x, y):
score_text = font.render(f"Score: {score}", True, WHITE)
screen.blit(score_text, (x, y))
def collision(player_x, player_y, monster_x, monster_y):
distance = ((player_x - monster_x)**2 + (player_y - monster_y)**2)**0.5
if distance < player_size / 2 + monster_size / 2:
return True
return False
# Create player and monsters objects
player = Player("Potiskaaf", player_x, player_y, player_size, player_size, WHITE)
monster1 = Monster("Monster1", monster_x, monster_y, monster_size, monster_size, RED)
monster2 = Monster("Monster2", monster_x, monster_y, monster_size, monster_size, GREEN)
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player_x -= player_speed
elif event.key == pygame.K_RIGHT:
player_x += player_speed
monster_y += monster_speed
if collision(player_x, player_y, monster_x, monster_y):
score += 1
monster_x = random.randint(0, WIDTH - monster_size)
monster_y = -monster_size
# Clear the screen
screen.fill(back)
# Draw objects on the screen
player.rect.topleft = (player_x, player_y)
player.fill()
monster1.rect.topleft = (monster_x, monster_y)
monster1.fill()
# Draw the score
show_score(10, 10)
# Update the display
pygame.display.update()
# Limit frames per second
clock.tick(60)
# Uninitialize pygame
pygame.quit()



У вас есть несколько ошибок в вашем коде. Вот исправленная версия:
pythonimport pygame
import random
pygame.init()
WIDTH = 800
HEIGHT = 600
back = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Потискаф направляется к Титанику!")
class Monster():
def __init__(self, x=0, y=0, width=10, height=10, color=None):
self.rect = pygame.Rect(x, y, width, height)
self.fill_color = back
if color:
self.fill_color = color
def change_color(self, new_color):
self.fill_color = new_color
def draw(self):
pygame.draw.rect(screen, self.fill_color, self.rect)
def collidepoint(self, x, y):
return self.rect.collidepoint(x, y)
def colliderect(self, rect):
return self.rect.colliderect(rect)
class Player():
def __init__(self, name, x=0, y=0, width=10, height=10, color=None):
self.name = name
self.rect = pygame.Rect(x, y, width, height)
self.fill_color = back
if color:
self.fill_color = color
def change_color(self, new_color):
self.fill_color = new_color
def draw(self):
pygame.draw.rect(screen, self.fill_color, self.rect)
def collidepoint(self, x, y):
return self.rect.collidepoint(x, y)
def colliderect(self, rect):
return self.rect.colliderect(rect)
player = Player("Potiskaaf", 100, 10)
monster1 = Monster("Monster1", 50, 5)
monster2 = Monster("Monster2", 75, 8)
player_size = 50
player_x = WIDTH / 2 - player_size / 2
player_y = HEIGHT - player_size
player_speed = 5
monster_size = 50
monster_x = random.randint(0, WIDTH - monster_size)
monster_y = -monster_size
monster_speed = 2
score = 0
clock = pygame.time.Clock()
game_over = False
font = pygame.font.Font(None, 36)
def show_score(x, y):
score_text = font.render(f"Score: {score}", True, WHITE)
screen.blit(score_text, (x, y))
def collision(player_x, player_y, monster_x, monster_y):
distance = ((player_x - monster_x)**2 + (player_y - monster_y)**2)**0.5
if distance < player_size / 2 + monster_size / 2:
return True
return False
while not game_over:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
player_x -= player_speed
elif event.key == pygame.K_RIGHT:
player_x += player_speed
monster_y += monster_speed
if monster_y > HEIGHT:
monster_x = random.randint(0, WIDTH - monster_size)
monster_y = -monster_size
if collision(player_x, player_y, monster_x, monster_y):
score += 1
monster_x = random.randint(0, WIDTH - monster_size)
monster_y = -monster_size
screen.fill(back)
player.draw()
monster1.draw()
monster2.draw()
show_score(10, 10)
pygame.display.update()
clock.tick(60)
pygame.quit()
Несколько исправлений были внесены в ваш код, чтобы он работал правильно:
- Заменены
player()
иmonster()
наplayer.draw()
иmonster.draw()
, чтобы правильно отрисовывать объекты. - Исправлены методы
color()
наchange_color()
, чтобы правильно менять цвет объектов. - Добавлена проверка, чтобы пересоздавать монстра, когда он выходит за пределы экрана.
Теперь ваш код должен работать как ожидается.


Похожие вопросы

Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili