2016-05-29 7 views
0

私は学校用のPythonコーディングプロジェクトを行っています。特定のblitから弾丸を撃つpygameをコードする必要があります。発射のx座標私はこのコードを使用してみましたPygame Bullets(python 3.2.5)

if (event.type == pygame.KEYDOWN):  
     if (event.key == pygame.K_SPACE):  
      screen.blit(projectile,(projectilex,projectiley)) 

は、プレイヤのxそれから撃つこと座標に等しいです。したがって、次のようになります。

projectilex = playerx 

これは1秒間だけ画面に表示され、消えます。私はそれがプレーヤーのxで始まり、それが画面の一番上に当たって消えるまでそれをyの値に増やす必要があります。どんな助け?

注:私はpython 3.2.5を使用する必要があります。新しいバージョンにアップグレードすることはできません。

答えて

1

screen.blitは、1つのフレームの期間だけ何かを表示します。あなたは各フレームを弾く必要があります。弾丸のXとYの位置と弾丸を表示するかどうかを追跡するために別々の変数を使用します。例えば、

if (event.type == pygame.KEYDOWN):  
    if (event.key == pygame.K_SPACE):  
     show_projectile = True 
     projectile_x = player_x 
     projectile_y = player_y 
# ... 
if show_projectile: 
    screen.blit(projectile, (projectile_x, projectile_y)) 
0

はあなたのコードでこれを挿入しよう:

pygame.key.set_repeat (1, 50) 

このコードはKEY_DOWNチェックをrepeateすることができます:1 =遅延、50 =時間リピート

ので:

pygame.key.set_repeat (1, 50) 

if (event.type == pygame.KEYDOWN):  
     if (event.key == pygame.K_SPACE):  
      screen.blit(projectile,(projectilex,projectiley))