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

Исправьте код. Даю 100 балов

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 = "macizo-company.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("boomba_1.png")
enemy_image = pygame.transform.scale(ground_image, (80, 80))

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

player_image = pygame.image.load("player.png")
player_image = pygame.transform.scale(ground_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.recn.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 boomba.is_dead and player.rect.colliderect(boomba.rect):
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()
quit()

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

    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 = "macizo-company.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("boomba_1.png")

    enemy_image = pygame.transform.scale(enemy_image, (80, 80))

    dead_enemy_image = pygame.image.load("boomba_2.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()

    Была ошибка в несоответствии названий переменных для изображений (enemy_image, dead_enemy_image, player_image) в методах их преобразования при загрузке и изменении размера

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
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) их не спросили

Информация

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