Задать вопрос
@splliii

Вылетает pygame при нажатии на окно, никак не могу понять, что не так?

import pygame
import random

WIDHT = 800
HEIGHT = 800

BLACK = (0,0,0)
WHITE = (255, 255, 255)
COLO = (random.randint(0,255),
        random.randint(0,255),
        random.randint(0,255))

speed = 5
x, y = 0, 0


pygame.init()

screen = (pygame.display.set_mode((WIDHT, HEIGHT)))

running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    key = pygame.key.get_pressed()

    if key[pygame.K_w]:
        if y - speed - 15 >= 0:
            y -= speed
    if key[pygame.K_a]:
        if x - speed - 5 >= 0:
            x -= speed
    if key[pygame.K_s]:
        if y + speed + 20  <= HEIGHT:
            y += speed
    if key[pygame.K_d]:
        if  x + speed + 20 + 5 <= WIDHT:
            x += speed

    x_house = x + 20
    y_house = y + 20

    while y_house < HEIGHT:
            y += 9.8
    # speed_fall = speed_f = 9.8
    # if event.type == pygame.KEYUP:
    #     if event.key == pygame.K_w:
    #         while y + 20 != HEIGHT:
    #             y += speed_f
    #             speed += speed_fall

    screen.fill((0,0,0))

    pygame.draw.rect(  #сам домик
        screen,
        COLO,
        (x, y, 20, 20)
    )

    pygame.draw.polygon(screen,     #крыша
                        COLO,
                        [(x - 5, y), (x_house + 5, y), (x + 10, y - 15)])
    pygame.draw.rect(screen,     #окно
                     BLACK,
                     (x + 5, y + 5, 10, 10))
    pygame.draw.line(screen,   #рама
                     COLO,
                     (x + 5, y + 5), (x + 15, y + 15), 3)
    pygame.draw.line(screen,
                     COLO,
                     (x + 15, y + 5), (x + 5, y + 15), 3)

    pygame.display.flip()  #обновление

pygame.quit()
  • Вопрос задан
  • 42 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Lord_of_Rings
@Lord_of_Rings
Дунадан - северный странник. Злой, но очень добрый
У вас ошибка здесь:
while y_house < HEIGHT:
    y += 9.8
Вы меняете y, но y у вас никак не связано с y_house, из-за чего этот цикл получается бесконечным (y_house не меняется и так и остается меньше HEIGHT).

Поэтому вам надо сделать вот так:
while y_house < HEIGHT:
    y_house += 9.8

Так всё работает
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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