Найти - Пользователи
Полная версия: Застрял с pygame.(проблема решена)
Начало » Python для новичков » Застрял с pygame.(проблема решена)
1 2
iliandro
Цикл не выполняется до конца. Начинает рисовать, доходит гдет-то до 40 прохода цикла а потом окно pygame зависает.
пробовал менять время задержки если wait совсем маленький то успевает зарисовать всё до того как зависнет. Выходит что окно зависает в через определённое время а не в результате ошибки в коде(


 import pygame
import sys
import random
import time
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (125, 125, 125)
LIGHT_BLUE = (64, 128, 255)
GREEN = (0, 200, 64)
YELLOW = (225, 225, 0)
PINK = (230, 50, 230)
pygame.display.init()
disp = pygame.display.set_mode((600,600))
for x in range(0,300,1):
    pygame.draw.line(disp, WHITE, (0,0), (600,x), 1)
    pygame.display.update()
    pygame.time.wait(50)
pygame.display.quit()
pygame.quit()

что странно пару раз всё сработало но больше такого не случалось
AD0DE412
а что в итоге то должно получиться? как должно работать?
зы форматируйте код в форумных движках это делается так
iliandro
экран должен постепенно заполняться белыми линиями которые поочерёдно рисуются в цикле
это пробная штука чтобы немного разобраться
я только начинаю
AD0DE412
все работает проходит цикл for и выключается что не так?
iliandro
странно( у меня всегда зависает в таком положении
фото ру
AD0DE412
ну отсчитает for x in range(0,300,1) и выходит из приложения
а как должно
iliandro
заметь там стоит
pygame.display.update()
pygame.time.wait(50)
должно обновляться после каждой новой линии и так создавать єфект постепенного заполнения
pygame не доходя до конца перестаёт обновлять экран
iliandro
тут я создал небольшой тест
на нём по отображению х видно что выполнение цикла не прекращяется зависает лишь окно с пайгеймом
(аналогичный цикл но с кружком)
 import pygame
import random
clock = pygame.time.Clock()
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (125, 125, 125)
LIGHT_BLUE = (64, 128, 255)
GREEN = (0, 200, 64)
YELLOW = (225, 225, 0)
PINK = (230, 50, 230)
pygame.display.init()
disp = pygame.display.set_mode((600,600))
for x in range(0,300,1):
    pygame.draw.circle(disp, (WHITE), [0,x],20)
    pygame.display.update()
    clock.tick(50)
    disp.fill(BLACK)
    print(x)
pygame.display.quit()
pygame.quit()
AD0DE412
 import pygame
import random
clock = pygame.time.Clock()
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (125, 125, 125)
LIGHT_BLUE = (64, 128, 255)
GREEN = (0, 200, 64)
YELLOW = (225, 225, 0)
PINK = (230, 50, 230)
pygame.display.init()
state = 1
x = 0
while state:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            state -= 1
    disp = pygame.display.set_mode((600,600))
    disp.fill(BLACK)
    if x < 600:
        x += 1
        pygame.draw.circle(disp, (WHITE), [0, x], 20)
        clock.tick(50)
    else:
        x = 0
    print(x)
    pygame.display.update()
pygame.display.quit()
pygame.quit()
AD0DE412
 import pygame
import random
clock = pygame.time.Clock()
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GRAY = (125, 125, 125)
LIGHT_BLUE = (64, 128, 255)
GREEN = (0, 200, 64)
YELLOW = (225, 225, 0)
PINK = (230, 50, 230)
pygame.display.init()
disp = pygame.display.set_mode((600,600))
disp.fill(BLACK)
state = 1
x = 0
y = 0
while state:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            state -= 1
    if y < 600:
        y += 1
        pygame.draw.circle(disp, (WHITE), [x, y], 20)
        clock.tick(50)
    else:
        y = 0
        x += 50
    if x > 600:
        state -= 1
    print(x, y)
    pygame.display.update()
pygame.display.quit()
pygame.quit()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB