私は今ポンのゲームを作っています、そして私はボールを5ヒットごとにスピードアップさせたいのですが、私が走るとボールはちょうどその開始方向にスピードを落とし始めます。
ボールをスピードアップしなくても正常に動作するため、問題は前のコードではありません。
これを実装しようとすると、Ballクラスで変数をself.num_hits
作成し、最初は0にしました。その後、ゲームループで、ボールが衝突するたびに、をインクリメントしball.num_hits
てx_speedを逆にします。
collide_list = pygame.sprite.spritecollide(ball, players, False)
if collide_list != []:
ball.x_speed *= -1
hit.play()
ball.num_hits += 1
Ball()クラスの場合:
if self.num_hits % 5 == 0:
if self.x_speed > 0:
self.x_speed += 2
else:
self.x_speed -= 2
しかし、それによってボールの速度が開始速度でオフになったので、何self.num_hits % 5
が戻ってくるかを確認しました。常に0が返されます。私はいつもそう思っていた0 % number = number
ので、私の質問は、なぜ0%5が0を返すのかということです。また、0%5の問題を回避できない場合、5ヒットごとにボールの速度を上げる方法は他にありますか?