我正在进行一场乒乓球比赛,我希望球能够每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
Run Code Online (Sandbox Code Playgroud)
在Ball()类中:
if self.num_hits % 5 == 0:
if self.x_speed > 0:
self.x_speed += 2
else:
self.x_speed -= 2
Run Code Online (Sandbox Code Playgroud)
但是这使得球的速度以其起始速度关闭,所以我检查了self.num_hits % 5返回的内容,它总是返回0.我一直认为0 % number = number,所以我的问题是为什么0%5会返回0?如果我不能解决0%5的问题,还有其他方法可以让球每5次点击一次加速吗?
che*_*ner 11
定义分区以使以下内容始终为真
n = q × d + r
哪里
(这适用于正值和负值; 如果n和d具有相同的符号,则q为正,否则为负.r被定义为始终为正.)
在Python中,n/d == q和n % d == r.如果n为0,那么q也必须为0,在这种情况下也r必须为0 - 所有都独立于的值d.
(偏离主题,但请注意,这也通过除以0来捕获问题:对于非零d,q和r是唯一确定的;对于d = 0,q的任何值将满足r = n的等式.