Python ve Pygame oyununda yeni biriyim ve klavyeyle birlikte Dance Dance Revolution'ın basit bir klonunu tasarlıyorum. Düşen ok ve altındaki statik ok arasındaki çarpışmayı saptamak için ayarladım ve çarpışmalar sırasında uygun tuşa basmalarını algılamaya ayarlıyorum. Sorun şu ki, bazı zamanlarda sadece bazı tuş basımlarını algılayacaktır. Neden olduğundan emin değilim ve kod önümde.Pygame çarpışmadaki tüm önemli olayları tespit etmiyor
def collisionDetect(arrow, contact_arrow):
return pygame.sprite.collide_rect(arrow, contact_arrow)
def game(list):
running = True
for i in list:
arrow = Arrow(i[0],i[1],0,0,screen,SCREEN_WIDTH,SCREEN_HEIGHT)
arrow.positionArrow()
arrows.add(arrow)
while running:
screen.fill((0,0,0))
arrowleft.drawArrowPanel()
arrowright.drawArrowPanel()
arrowup.drawArrowPanel()
arrowdown.drawArrowPanel()
for arrow in arrows:
if arrow.y < 500:
arrow.arrowFall()
arrow.positionArrow()
collisionLeft = collisionDetect(arrow, arrowleft)
collisionRight = collisionDetect(arrow, arrowright)
collisionUp = collisionDetect(arrow, arrowup)
collisionDown = collisionDetect(arrow, arrowdown)
else:
arrow.kill()
pygame.display.update()
for e in pygame.event.get():
if e.type == pygame.QUIT:
running = False
pygame.quit()
if e.type == pygame.KEYDOWN and e.key == pygame.K_LEFT and collisionLeft:
print "collided left"
if e.type == pygame.KEYDOWN and e.key == pygame.K_RIGHT and collisionRight:
print "collided right"
if e.type == pygame.KEYDOWN and e.key == pygame.K_UP and collisionUp:
print "collided up"
if e.type == pygame.KEYDOWN and e.key == pygame.K_DOWN and collisionDown:
print "collided down"
Sınıf tanımlarını dışarıda bıraktım ve istek üzerine alabilir. Olay döngüsü, çarpışma sırasında basılan aşağı oku algılar, ancak başka hiçbir şey. Bunun için hızlı bir düzeltme var mı? Bunu işlemenin daha iyi bir yolu var mı? Teşekkür ederim.
çok teşekkür ederim! bu mükemmel bir anlam ifade ediyor. – ineptchimpanzee