如何让精灵从 pygame 中的随机 x 位置掉落
How can I make a sprite fall from a random x position in pygame
所以我想做的是让我的玩家在从屏幕顶部掉落的物体周围导航。到目前为止,我有障碍物的随机 x 位置,但它不会继续从顶部掉落,只会卡住。这是它的样子:
Black "obstacle" stuck in the top.
这是我目前的代码:
import pygame, sys, time, random
from pygame.locals import *
pygame.init()
FPS = 30
fpsClock = pygame.time.Clock()
width = 640
height = 480
DISPLAYSURF = pygame.display.set_mode((width,height),0,32)
pygame.display.set_caption('Photon')
background = pygame.image.load('background.png')
mspeed = 5
hspeed = 5
hole = pygame.image.load('bHole.png')
sprite = pygame.image.load('photon.png')
spritex = 0
spritey = 0
holex = random.randint(0,260)
holey = 0
while True:
if holey < 460:
holey -= hspeed
DISPLAYSURF.blit(background,(0,0))
DISPLAYSURF.blit(sprite,(spritex,spritey))
DISPLAYSURF.blit(hole,(holex,holey))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_LEFT]:
spritex -= mspeed
if keys_pressed[pygame.K_RIGHT]:
spritex += mspeed
if keys_pressed[pygame.K_UP]:
spritey -= mspeed
if keys_pressed[pygame.K_DOWN]:
spritey += mspeed
if spritex > 620:
spritex = 620
if spritex < 0:
spritex = 0
if spritey > 460:
spritey = 460
if spritey < 0:
spritey = 0
if holey < 460:
holey += hspeed
elif holey > 460:
holex = random.randint(0,260)
holey = 0
pygame.display.update()
fpsClock.tick(FPS)
print('PX:', spritex, 'PY:', spritey, 'HX:', holex, 'HY:', holey)
任何帮助都将非常有帮助,因为我只是不确定现在该做什么。
您在屏幕更新循环的每次迭代中进行了两次 if holey < 460:
检查。第一个减去 hspeed
而另一个加法将它加回来——因此它们相互抵消并且对象得到 "stuck" 无论它在哪里。
所以我想做的是让我的玩家在从屏幕顶部掉落的物体周围导航。到目前为止,我有障碍物的随机 x 位置,但它不会继续从顶部掉落,只会卡住。这是它的样子: Black "obstacle" stuck in the top.
这是我目前的代码:
import pygame, sys, time, random
from pygame.locals import *
pygame.init()
FPS = 30
fpsClock = pygame.time.Clock()
width = 640
height = 480
DISPLAYSURF = pygame.display.set_mode((width,height),0,32)
pygame.display.set_caption('Photon')
background = pygame.image.load('background.png')
mspeed = 5
hspeed = 5
hole = pygame.image.load('bHole.png')
sprite = pygame.image.load('photon.png')
spritex = 0
spritey = 0
holex = random.randint(0,260)
holey = 0
while True:
if holey < 460:
holey -= hspeed
DISPLAYSURF.blit(background,(0,0))
DISPLAYSURF.blit(sprite,(spritex,spritey))
DISPLAYSURF.blit(hole,(holex,holey))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_LEFT]:
spritex -= mspeed
if keys_pressed[pygame.K_RIGHT]:
spritex += mspeed
if keys_pressed[pygame.K_UP]:
spritey -= mspeed
if keys_pressed[pygame.K_DOWN]:
spritey += mspeed
if spritex > 620:
spritex = 620
if spritex < 0:
spritex = 0
if spritey > 460:
spritey = 460
if spritey < 0:
spritey = 0
if holey < 460:
holey += hspeed
elif holey > 460:
holex = random.randint(0,260)
holey = 0
pygame.display.update()
fpsClock.tick(FPS)
print('PX:', spritex, 'PY:', spritey, 'HX:', holex, 'HY:', holey)
任何帮助都将非常有帮助,因为我只是不确定现在该做什么。
您在屏幕更新循环的每次迭代中进行了两次 if holey < 460:
检查。第一个减去 hspeed
而另一个加法将它加回来——因此它们相互抵消并且对象得到 "stuck" 无论它在哪里。