1

私はpygameを作成しました。ゲームの目的は、ボールが画面上を移動しないようにすることです(ランダム)

ballpic = pygame.image.load('ball.png').convert_alpha()

レベル関数があります:

def levels(score):
 global enemies
 global velocity
 enemies = enemies
 velocity = velocity

#level one 
if score >= 500:
  enemies = 6
  velocity = 2

#level two
if score >= 1000:
  enemies = 6
  velocity = 2
  #....And so on

インデント付きのゲーム:///期限切れ/

これを行おうとすると、次のエラーが発生します。

Traceback (most recent call last):
 File "C:\Users\MO\Desktop\Twerk\twerk-bck.py", line 252, in <module>
  game()
File "C:\Users\MO\Desktop\Twerk\twerk-bck.py", line 199, in game
 positionx[i]=positionx[i]+positionxmove[i]
IndexError: list index out of range

リストをさらに3エントリ拡張するには、リストに新しい値を追加する必要があることを理解しています。私が達成しようとしているのは、画面のスコアにボールを追加することです。しかし、どうすればそれができるのかわかりません。

ありがとうございました

4

1 に答える 1

0

positionx147のメインループの前の134行目で初期化して友達になります。次にlevels(score)、ループ内を呼び出します。これにより、カウントが更新されますが、実際には追加の敵に追加の enemiesスペースが割り当てられません。敵の数が増える場合は、アレイのサイズを変更する必要があります。positionxlevels()

Lattywareがコメントしたように、各敵にオブジェクトを使用する方がはるかに優れたデザインになります。positionx一般に、やのような任意の種類の並列配列を保持しているpositiony場合は、それらをオブジェクトの配列に置き換える必要があります。次に、すべての異なるループがrange(enemies)次のような1つの大きなループに置き換えられます。

for enemy in enemies:
    enemy.update(globalGameState)

ここで、はすべての敵で同じglobalGameStateマウスの位置などを追跡する1つ以上の変数です。

于 2012-05-01T14:42:50.963 に答える