1

現在横スクロールゲームを作っています。私は棒人間を描き、「W」キーがヘルプダウンのときに彼が右に行くアニメーションを描きました。問題は、元の図面 (彼が静止している図面) を、W を押したときに消えて重なり合うようにする方法がわからないことです。これが私のコードです:

def pulse_ninja(screen,x,y):

    #Head
    pygame.draw.ellipse(screen,PULSEPURPLE,[14+x,-8+y,15,15],0)

     #Legs
    pygame.draw.line(screen,WHITE,[20+x,17+y],[25+x,27+y],4)
    pygame.draw.line(screen,WHITE,[20+x,17+y],[15+x,27+y],4)

     #Body
    pygame.draw.line(screen,PULSEPURPLE,[20+x,16+y],[20+x,-2+y],4)

     #Arms
    pygame.draw.line(screen,PULSEPURPLE,[20+x,3+y],[30+x,18+y],4)
    pygame.draw.line(screen,PULSEPURPLE,[20+x,3+y],[10+x,18+y],4)

    #Sword
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_w:
            pygame.draw.line(screen,GREEN,[30+x,18+y],[35+x,0+y],3)
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_w:
            pygame.draw.line(screen,GREEN,[30+x,18+y],[50+x,16+y],3)

def ninja_animate_right(screen,x,y):

     if event.type == pygame.KEYDOWN:
         if event.key == pygame.K_d:
            # Head
            pygame.draw.ellipse(screen,PULSEPURPLE,[16+x,-6+y,15,15],0)

            # Legs
            pygame.draw.arc(screen,WHITE,[10+x,0+y,15,30], 3*pi/2, 2*pi, 2)
            #pygame.draw.arc(screen,WHITE,[20+x,17+y],[15+x,27+y],4)

            # Body
            pygame.draw.line(screen,PULSEPURPLE,[20+x,16+y],[25+x,-2+y],4)

            # Arms
            pygame.draw.line(screen,PULSEPURPLE,[20+x,3+y],[30+x,18+y],4)
            pygame.draw.line(screen,PULSEPURPLE,[20+x,3+y],[10+x,18+y],4) 
    if event.type == pygame.KEYUP:
        if event.key == pygame.K_w:
            pygame.draw.line(screen,GREEN,[30+x,18+y],[35+x,0+y],3)
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_w:
            pygame.draw.line(screen,GREEN,[30+x,18+y],[50+x,16+y],3)

私がそれらを呼び出すとき、私はそれらを1行ずつ持っています

pulse_ninja(screen,x,y)

ninja_animate_right(screen,x,y)

whileループが必要だと思いますか?ストップモジュールはありますか?関数を実行し、条件が満たされた後に停止したいとします。それが本質的に私がやりたいことです。

4

1 に答える 1

1

さて、あなたのクラスでの小さなアドバイスは、状態を定義します。左、右、停止などです。移動フィールドでは、キャラクターの現在の状態に応じて物を描きます。したがって、あなたがする必要がある唯一のことは次のとおりです。

if event.type == pygame.KEYUP:
    if event.key == pygame.K_w:
        character.state = WALKING

if event.type == pygame.KEYDOWN:
    if event.key == pygame.K_w:
        character.state = STANDING

move 関数では、現在の状態を確認し、それに応じて描画します。変数と関数がより整理されるため、クラスの使用をお勧めします。

于 2012-10-02T18:30:11.973 に答える