1

だから私はpythonでゲームを開発しています。これが私のコードです:

bif="main_background.jpg"
pif="player_head.png"

import pygame, sys
from pygame.locals import *

pygame.init()
screen=pygame.display.set_mode((900,600),0,32)

background=pygame.image.load(bif).convert()
player_sprite=pygame.image.load(pif).convert_alpha()

x,y=0,0
movex, movey=0,0

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type==KEYDOWN:
            if event.key==K_RIGHT:
                movex=+1
            if event.type==K_LEFT:
                movex=-1
            if event.type==K_UP:
                movey=-1
            if event.type==K_DOWN:
                movey=+1
        if event.type==KEYUP:
            if event.key==K_RIGHT:
                movex=0
            if event.type==K_LEFT:
                movex=0
            if event.type==K_UP:
                movey=0
            if event.type==K_DOWN:
                movey=0

    x+=movex
    y+=movey

    screen.blit(background, (0,0))
    screen.blit(player_sprite, (x,y))

    pygame.display.update()

しかし問題は、最初の event.key だけが機能していることです (K_RIGHT)

スプライトは、右矢印キーを押したときにのみ移動します。

また、2番目、3番目、4番目のevent.keyをelifに置き換えてみましたが、うまくいきませんでした。

4

2 に答える 2

4

(動作する)を除いて、他のすべてのキーのevent.type代わりに使用しています。これは、他のキーが機能しない理由を説明しています。また、次のように書く必要があります。event.keyK_RIGHT

movex += 1

また

movey -=1

など、スプライトの位置を変更します。これにより、スプライトの位置が増減します。ライティングmovex += 1は の省略形ですmovex = movex + 1

于 2013-04-30T21:34:45.393 に答える
2

あなたはチェックevent.key==K_RIGHTしますが、他の方向については、あなたはそうしますevent.type==K_LEFT

于 2013-04-30T21:34:49.233 に答える