2016-11-03 6 views
-1

これは私のコードPythonモジュールのPythonモジュールの一部です。Pygameバグがインクリメントされました

gravity = 0.06 
play = 1 
while play: 
    touch = 0 
    while touch == 0: 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       continuer = 0 
      if (event.type == MOUSEBUTTONDOWN) and (event.button == 1): 
       y_flappy = y_flappy - 50    
      if (event.type == KEYDOWN) and (event.key == K_UP): 
       y_flappy = y_flappy - 50     
     y_flappy = y_flappy+gravity 

     fenetre.blit(background,(0,0))  
     fenetre.blit(ground,(0,400)) 
     fenetre.blit(flappy,(x_flappy,y_flappy)) 
     pygame.display.flip() 
     if y_flappy > 400: 
      touch = touch + 1 

ただし、y_flappy> 400の場合、touchはインクリメントされません。

答えて

1

最終的に何かが起こるのを見て(if y_flappy > 400:と同じインデントレベル)print("y_flappy: %f touch: %f" % (y_flappy, touch))を追加するようなものを試しましたか?

変数touchは、whileループを終了してtouch = 0を再初期化するため、1より大きくなりません。

更新

これはまだ動作しない場合は、このような最小限のスクリプトを使って起動します。

y_flappy = 0 
gravity = 0.06 
play = 1 
while play: 
    print("Next iteration, reset touch.") 
    touch = 0 
    print("y_flappy: %f touch: %f" % (y_flappy, touch)) 
    while touch == 0: 
     y_flappy = y_flappy+gravity 

     if y_flappy > 400: 
      touch = touch + 1 
     print("y_flappy: %f touch: %f" % (y_flappy, touch)) 

ダブル各インデントを確認してください。

Next iteration, reset touch. 
y_flappy: 0.000000 touch: 0.000000 
y_flappy: 0.060000 touch: 0.000000 
y_flappy: 0.120000 touch: 0.000000 
y_flappy: 0.180000 touch: 0.000000 
... 
y_flappy: 399.960000 touch: 0.000000 
y_flappy: 400.020000 touch: 1.000000 
Next iteration, reset touch. 
y_flappy: 400.020000 touch: 0.000000 
y_flappy: 400.080000 touch: 1.000000 
Next iteration, reset touch. 
y_flappy: 400.080000 touch: 0.000000 
... 

これが機能する場合は、スクリプトが1行ずつ拡張され、失敗したときに確認してください。

0

私はこれを試しました。たとえば、y_flappyが425.3の場合、touchは0です(ここでは1以上にする必要があります)。

はい私はタッチが1より大きくならないことを知っています。私はブレークアクションを挿入できますが、それはもっと簡単です。

+0

回答はhttp://stackoverflow.com/a/40392179/7010554の回答を参照してください。 – maij

関連する問題