<p>首先我得说我很累我已经连续起床22个小时了。不管怎样,我在一场乒乓球比赛中遇到了一个奇怪的物理问题。你知道那个古老的经典。我已经看了很长时间的代码尝试不同的变化,注释出某些部分等,我找不到该死的错误!你知道吗</p>
<p>有人能帮我一下吗?你知道吗</p>
<p>球的物理是个问题。它从屏幕的顶部和底部反弹的很好,当它向左移动的时候就很好了。你知道吗</p>
<p>但我不能在它和从左边过来的桨相撞后把它送回右边。它只是迫使反弹了一点,迫使它的方式回来,并超过了船桨?!你知道吗</p>
<p>然而,我可以送球的权利,当我的程序,它反弹后,击中一个顶部或底部的权利,所以我不认为有任何错误的实际代码,移动球的权利。你知道吗</p>
<p>但是向右的移动与游戏所期望的物理相反,所以它是无用的,因为当它碰到左边的桨时,它应该反弹并向右移动,它不应该“强迫”它自己越过桨然后向左移动。你知道吗</p>
<p>如果你能看到的话,这其实有点好笑:)</p>
<p>有人能理解这一点并给我一个解释吗?你知道吗</p>
<p>[代码]</p>
<pre><code> # move the ball around
# if the ball disappears off the either side of the screen, send it back heading left
if ballRect.left > WINDOWWIDTH or ballRect.right < 0:
direction = getRandomDirection()
ballRect.center = (WINDOWWIDTH - ballRect.width, random.randint(100, 200))
if direction == 'downleft':
ballRect.left -= BALLSPEEDX
ballRect.top += BALLSPEEDY
if direction == 'upleft':
ballRect.left -= BALLSPEEDX
ballRect.top -= BALLSPEEDY
if direction == 'downright':
ballRect.left += BALLSPEEDX
ballRect.top += BALLSPEEDY
if direction == 'upright':
ballRect.left += BALLSPEEDX
ballRect.top -= BALLSPEEDY
if ballRect.top < 0:
if direction == 'upleft':
direction = 'downleft'
if direction == 'upright':
direction = 'downright'
if ballRect.bottom > WINDOWHEIGHT:
if direction == 'downleft':
direction = 'upleft'
if direction == 'downright':
direction = 'upright'
if paddleRect.colliderect(ballRect):
if direction == 'upleft':
direction = 'upright'
ballRect.left += BALLSPEEDX
ballRect.top -= BALLSPEEDY
if direction == 'upright':
direction = 'upleft'
ballRect.left += BALLSPEEDX
ballRect.top -= BALLSPEEDY
if direction == 'downleft':
direction = 'upleft'
ballRect.left += BALLSPEEDX
ballRect.top += BALLSPEEDY
if direction == 'downright':
direction = 'upright'
ballRect.left -= BALLSPEEDX
ballRect.top += BALLSPEEDY
</code></pre>
<p>[/代码]</p>