код не работает, я не могу понять почему
import pygame
import random
pygame.init()
sc = pygame.display.set_mode((600, 650))
class guy:
x = random.randrange(30, 501, 235)
y = -70
def osn(self):
pygame.draw.rect(sc, (255, 255, 255), (guy.x, guy.y , 70, 70))
guy.y - 10
if guy.y <= -650:
y = 70
guy1 = guy()
guy2 = guy()
while 1:
guy1.osn()
guy2.osn()
for i in pygame.event.get():
if i.type == pygame.QUIT:
exit()
pygame.display.update()
pygame.time.delay(60)
Тут должны появляться квадраты, которые должны двигаться вниз и при достижении определённых координат возвращаться на верх. Квадраты не появляются вообще.
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Ну наверное вот тут:
guy.y - 10
Должно было быть так:
guy.y -= 10
И вообще не очень понятно у вас то y, то guy.y используется. Там наверное вообще self.y должен быть в функции osn, если у вас не на все экземпляры одна переменная, а на каждый экземпляр своя.
Автор решения: cauf
→ Ссылка
Вот так должен примерно выглядеть ваш код:
import pygame
import random
pygame.init()
sc = pygame.display.set_mode((600, 650))
class Guy():
def __init__(self):
self.x = random.randrange(30, 501, 235)
self.y = -70
def osn(self):
pygame.draw.rect(sc, (255, 255, 255), (self.x, self.y , 70, 70))
self.y += 10
if self.y <= -650:
self.y = 70
guy1 = Guy()
guy2 = Guy()
while True:
sc.fill((0,0,0))
guy1.osn()
guy2.osn()
for i in pygame.event.get():
if i.type == pygame.QUIT:
exit()
pygame.display.update()
pygame.time.delay(60)
Обратите внимание на класс Guy и его метод __init__(), являющийся конструктором экземпляра данного класса. Именно в нем определяются стартовые атрибуты экземпляра. Ссылаться на сам экземпляр необходимо через аргумент self.