Pygame программа не отвечает

Я пытаюсь создать игру в Pygame, в которой он хочет запустить игру, но кнопка запуска продолжает двигаться, когда вы к ней прикасаетесь, но окно не реагирует. Я еще не закончил с кодом, потому что я тестировал его, и он не работал. Вот мой код до сих пор:

import pygame import random import time pygame.init() display = pygame.display.set_mode((800,600)) pygame.display.set_caption(‘BEST 3D PLATFORMER FPS GAME!’) clock = pygame.time.Clock() pygame.display.update() clock.tick(60) display.fill((255,255,255)) def newposition() randx = random.randrange(100, 700) randy = random.randrange(100,500) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pass if event.ty button = pygame.image.load(‘start.png’) display.blit(button,(randx,randy)) pygame.quit() quit()
user7372133 16 янв ’17 в 18:27 2017-01-16 18:27
2017-01-16 18:27

3 ответа

У меня была похожая проблема, исправить это не просто. Вот мои заметки для Python 3.6.1 и Pygame 1.9.3:

1) Событие не отвечает, потому что для pygame не создается отображение, добавьте отображение окна после инициализации pygame:

Day 1: How to fix pygame window not responding python


pygame.init() # Initializes pygame pygame.display.set_mode((500, 500)) #

2) pygame.event.get() генерирует список событий, но не все классы событий имеют метод.key, например, движение мыши. Таким образом, измените все коды обработки событий.key, такие как

if event.key == pygame.K_q: stop = True
if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: stop = True

3) В некоторых сочетаниях mac/python даже после того, как окно сгенерировано, оно не фокусирует / не записывает события клавиатуры, это проблема pygame и исправлена ​​в повторной реализации pygame с использованием sdl2 (SDL — это кроссплатформенная библиотека разработки, которая предоставляет низкий уровень доступа к клавиатуре, аудио, мыши и т. д.). его можно установить, следуя инструкциям здесь https://github.com/renpy/pygame_sdl2. Для этого может потребоваться установить homebrew, который является еще одним менеджером пакетов для macOS. Инструкции можно найти здесь https://brew.sh/

Читайте также:
Программа где можно подставить лицо

4) после установки, используя инструкцию по ссылке на github, вам нужно изменить все импортные pygame на импортные pygame_sdl2 как pygame

5) Вуаля! фиксированный.

user5934128 05 окт ’17 в 06:29 2017-10-05 06:29
2017-10-05 06:29

Все комментарии внутри кода

import pygame import random # — constants — (UPPER_CASE names) WHITE = (255, 255, 255) # space after every `,` FPS = 30 # — classes — (CamelCase names) #empty # — functions — (lower_case names) def new_position(): x = random.randrange(100, 700) # space after every `,` y = random.randrange(100, 500) # space after every `,` return x, y # you have to return value # — main — (lower_case names) # — init — pygame.init() display = pygame.display.set_mode((800, 600)) # space after every `,` pygame.display.set_caption(‘BEST 3D PLATFORMER FPS GAME!’) # — objects — # load only once — don’t waste time to load million times in loop button = pygame.image.load(‘start.png’).convert_alpha() button_rect = button.get_rect() # button size and position button_rect.topleft = new_position() # set start position # — mainloop — clock = pygame.time.Clock() running = True while running: # — events — for event in pygame.event.get(): if event.type == pygame.QUIT: #pass # it does nothing so you can’t exit running = False # to exit `while running:` elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: running = False # to exit `while running:` elif event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: # left button button_rect.topleft = new_position() # set new position # if event.ty # Syntax Error # — updates (without draws) — #empty # — draws (without updates) — # you have to use it inside loop display.fill(WHITE) # clear screeen before you draw elements in new place display.blit(button, button_rect) # you have to use it inside loop pygame.display.update() # you have to send buffer to monitor # — FPS — # you have to use it inside loop clock.tick(FPS) # — end — pygame.quit()

Читайте также:
Как продлить муниципальную программу

Кстати: простой шаблон, который вы можете использовать при запуске нового проекта.

How to fix Pygame Module not Found Error

user1832058 16 янв ’17 в 23:03 2017-01-16 23:03
2017-01-16 23:03

Вы должны загрузить button вне цикла (это нужно сделать только один раз.)

Кроме того, вы определили newposition() , но не назвали это. Кроме того, randx и randy не будут доступны извне функции, потому что они будут локальными для нее.

Итак, измените вашу функцию на это:

def newposition() randx = random.randrange(100, 700) randy = random.randrange(100,500) return randx, randy # Output the generated values

Затем перед циклом:

rand_coords = newposition()

Вы просто забыли обновить дисплей Pygame с вашими модификациями к нему.

В конце цикла добавьте pygame.display.update() , как это:

while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pass # if event.ty why is that here? display.blit(button,(rand_coords[0],rand_coords[1])) # Take our generated values pygame.display.update()
import pygame import random import time pygame.init() display = pygame.display.set_mode((800,600)) pygame.display.set_caption(‘BEST 3D PLATFORMER FPS GAME!’) # Yeah, exactly 🙂 clock = pygame.time.Clock() display.fill((255,255,255)) def newposition() randx = random.randrange(100, 700) randy = random.randrange(100,500) return randx, randy # Output the generated values rand_coords = newposition() # Get rand coords while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() # Quit pygame if window in closed # if event.ty why is that here? clock.tick(60) # This needs to be in the loop display.fill((255,255,255)) # You need to refill the screen with white every frame. display.blit(button,(rand_coords[0],rand_coords[1])) # Take our generated values pygame.display.update()

Источник: stackru.com

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » pygame не отвечает

#1 Март 10, 2023 20:07:02

pygame не отвечает

Помогите пж, после запуска кода окно pygame тупо не отвечает и все, что делать?
Код:
import pygame
pygame.init()
screen = pygame.display.set_mode((500, 500))
while True:
pygame.display.update()

Читайте также:
Программы трехмерного моделирования это

#2 Март 10, 2023 20:44:17

pygame не отвечает

import pygame pygame.init() screen = pygame.display.set_mode((500, 500)) done = False while not done: for event in pygame.event.get(): if event.type == pygame.KEYDOWN and event.key == pygame.K_q: done = True pygame.display.flip() pygame.quit()

Отредактировано py.user.next (Март 10, 2023 20:44:29)

Источник: python.su

Почему окно pygame не отвечает?

Я написал простой код для передвижения квадрата по окну. Но по какой то причине квадрат не двигается и если кликнуть по окну оно перестает отвечать. Смотрел другие форумы но ничего не помогло.
Вот сам код —

import pygame pygame.init() win = pygame.display.set_mode((500, 500)) pygame.display.set_caption(«Adventure») x = 50 y = 50 width = 60 height = 40 speed = 5 run = True while run: pygame.time.delay(100) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: x -= speed if keys[pygame.K_RIGHT]: x += speed if keys[pygame.K_UP]: y -= speed if keys[pygame.K_DOWN]: y += speed pygame.draw.rect(win,(0, 0, 255), (x, y, width, height)) pygame.display.update() input()

  • Вопрос задан более двух лет назад
  • 1065 просмотров

1 комментарий

Простой 1 комментарий

Источник: qna.habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru