profile
Размещено 1 год назад по предмету Информатика от vladkrivko2020

Помогите исправить код игры на пайгейме. Ошибка в 61 строке. Даю 80 баллов.
import pygame
import random
pygame.init()

W = 800
H = 600
screen = pygame.display.set_mode((W, H))

FPS = 60
clock = pygame.time.Clock()

font_path = "mario_font.ttf"
font_large = pygame.font.Font(font_path, 48)
font_small = pygame.font.Font(font_path, 24)

game_over = False
retry_text = font_small.render("PRESS ANY KEY", True, (255, 255, 255))
retry_rect = retry_text.get_rect()
retry_rect.midtop = (W // 2, H // 2)

ground_image = pygame.image.load("ground.png")
ground_image = pygame.transform.scale(ground_image, (804, 60))
GROUND_H = ground_image.get_height()

enemy_image = pygame.image.load("goomba.png")
enemy_image = pygame.transform.scale(enemy_image, (80, 80))

dead_enemy_image = pygame.image.load("goomba_dead.png")
dead_enemy_image = pygame.transform.scale(dead_enemy_image, (80, 80))

player_image = pygame.image.load("player.png")
player_image = pygame.transform.scale(player_image, (60, 80))

class Entity:
def __init__(self, image):
self.image = image
self.rect = self.image.get_rect()
self.x_speed = 0
self.y_speed = 0
self.speed = 5
self.is_dead = False
self.is_out = False
self.jump_speed = -12
self.gravity = 0.5
self.is_grounded = False

def handle_input(self):
pass

def kill(self, dead_image):
self.image = dead_image
self.is_dead = True
self.x_speed = -self.x_speed
self.y_speed = self.jump_speed

def update(self):
self.rect.x += self.x_speed
self.y_speed += self.gravity
self.rect.y += self.y_speed

if self.is_dead:
if self.rect.top > H - GROUND_H:
self.is_out = True
else:
self.handle_input()

if self.rect.bottom > H - GROUND_H:
self.is_grounded = True
self.y_speed = 0
self.rect.bottom = H - GROUND_H

def draw(self, surface):
surface.blit(self.image, self.rect)

class Player(Entity):
def __init__(self):
super().__init__(player_image)
self.respawn()

def handle_input(self):
self.x_speed = 0

keys = pygame.key.get_pressed()
if keys[pygame.K_a]:
self.x_speed = -self.speed
elif keys[pygame.K_d]:
self.x_speed = self.speed

if self.is_grounded and keys[pygame.K_SPACE]:
self.is_grounded = False
self.jump()

def respawn(self):
self.is_out = False
self.is_dead = False
self.rect.midbottom = (W // 2, H - GROUND_H)

def jump(self):
self.y_speed = self.jump_speed

class Boomba(Entity):
def __init__(self):
super().__init__(enemy_image)
self.spawn()

def spawn(self):
direction = random.randint(0, 1)

if direction == 0:
self.x_speed = self.speed
self.rect.bottomright = (0, 0)
else:
self.x_speed = self.speed
self.rect.bottomleft = (W, 0)

def update(self):
super().update()
if self.x_speed > 0 and self.rect.left > W or self.x_speed < 0 and self.rect.right < 0:
self.is_out = True

player = Player()
score = 0

boombas = []
INIT_DELAY = 2000
spawn_delay = INIT_DELAY
DESCREASE_BASE = 1.01
last_spawn_time = pygame.time.get_ticks()

running = True
while running:
for e in pygame.event.get():
if e.type == pygame.QUIT:
running = False
elif e.type == pygame.KEYDOWN:
if player.is_out:
score = 0
spawn_delay = INIT_DELAY
last_spawn_time = pygame.time.get_ticks()
player.respawn()
boombas.clear()

clock.tick(FPS)

screen.fill((92, 148, 252))

screen.blit(ground_image, (0, H - GROUND_H))

score_text = font_large.render(str(score), True, (255, 255, 255))
score_rect = score_text.get_rect()

if player.is_out:
score_rect.midbottom = (W // 2, H // 2)
screen.blit(retry_text, retry_rect)
else:
player.update()
player.draw(screen)

now = pygame.time.get_ticks()
elapsed = now - last_spawn_time
if elapsed > spawn_delay:
last_spawn_time = now
boombas.append(Boomba())
for boomba in list(boombas):
if boomba.is_out:
boombas.remove(boomba)
else:
boomba.update()
boomba.draw(screen)

if not player.is_dead and not any(boomba.is_dead for boomba in boombas) and any(player.rect.colliderect(boomba.rect) for boomba in boombas):
for boomba in boombas:
if player.rect.bottom - player.y_speed < boomba.rect.top:
boomba.kill(dead_enemy_image)
player.jump()
score += 1
spawn_delay = INIT_DELAY / (DESCREASE_BASE ** score)
else:
player.kill(player_image)

score_rect.midtop = (W // 2, 5)
screen.blit(score_text, score_rect)
pygame.display.flip()

pygame.quit()

  1. Ответ на вопрос
    Ответ на вопрос дан bwl985472

    Ответ:

    class Entity:

    def __init__(self, image):

    self.image = image

    self.rect = self.image.get_rect()

    self.x_speed = 0

    self.y_speed = 0

    self.speed = 5

    self.is_dead = False

    self.is_out = False

    self.jump_speed = -12

    self.gravity = 0.5

    self.is_grounded = False

    def handle_input(self):

    pass

    def kill(self, dead_image):

    self.image = dead_image

    self.is_dead = True

    self.x_speed = -self.x_speed

    self.y_speed = self.jump_speed

    def update(self):

    self.rect.x += self.x_speed

    self.y_speed += self.gravity

    self.rect.y += self.y_speed

    if self.is_dead:

    if self.rect.top > H - GROUND_H:

    self.is_out = True

    else:

    self.handle_input()

    if self.rect.bottom > H - GROUND_H:

    self.is_grounded = True

    self.y_speed = 0

    self.rect.bottom = H - GROUND_H

    def draw(self, surface):

    surface.blit(self.image, self.rect)

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.