Я делаю игру, в которой игрок должен прыгать на платформах. Однако у меня возникла проблема с тем, чтобы у игрока всегда была плитка, на которую можно наступить. Я создал платформы следующим образом:
p1 = Platforms(random.randint(0, 200), -100)
p2 = Platforms(random.randint(200, 400),-250)
p3 = Platforms(random.randint(400, 600),-600)
p4 = Platforms(random.randint(600, 800),-400)
p5 = Platforms(random.randint(800, 1000),-500)
p6 = Platforms(random.randint(800, 1000),-300)
random.randint(n, n)
- это позиция игрока x
, а цифры после запятой - позиция игрока y
. Как я могу убедиться, что на экране есть как минимум 4 платформы с расстоянием 300 x и 200 y друг от друга (так как размер моего окна 1200, 600), а также создает впечатление, что они случайные и не всегда та же позиция. Спасибо
Также вот мой класс платформы для любых необходимых ссылок:
class Platforms:
def __init__(self, x, y):
self.x = x
self.y = y
self.width = 100
self.height = 20
self.speed_list = [0.5, 0.8, 1]
def draw(self):
pygame.draw.rect(g.d, (3, 124, 23), (self.x, self.y, self.width, self.height))
def move(self):
self.y += random.choice(self.speed_list)
def reset(self):
if p1.y > 600:
p1.y = -100
p1.x = random.randint(0, 200)
if p2.y > 600:
p2.y = -250
p2.x = random.randint(200, 400)
if p3.y > 600:
p3.y = -600
p3.x = random.randint(400, 600)
if p4.y > 600:
p4.y = -400
p4.x = random.randint(600, 800)
if p5.y > 600:
p5.y = -500
p5.x = random.randint(800, 1000)
if p6.y > 600:
p6.y = -300
p6.x = random.randint(800, 1000)
def on_plat(self):
for plat in g.platlist:
if (b.x > plat.x) and (b.x < plat.x + plat.width) or (b.x + b.side > plat.x) and (b.x + b.side < plat.x + plat.width):
if (b.y > plat.y) and (b.y < plat.y + plat.height) or (b.y + b.side > plat.y) and (b.y + b.side < plat.y + plat.height):
b.is_jumping = False
b.y = plat.y - b.side
p1 = Platforms(random.randint(0, 200), -100)
p2 = Platforms(random.randint(200, 400),-250)
p3 = Platforms(random.randint(400, 600),-600)
p4 = Platforms(random.randint(600, 800),-400)
p5 = Platforms(random.randint(800, 1000),-500)
p6 = Platforms(random.randint(800, 1000),-300)
g.platlist = [p1, p2, p3, p4, p5, p6]
while True:
for plats in g.platlist:
plats.draw()
plats.move()
plats.reset()
plats.on_plat()