我教計算機編程。對於第一門課程的學生,我正在尋找最簡單的算法來改變碰撞方向(使用窗口框架)。這是我的實際代碼:最簡單的算法來反向衝突方向
import sys, pygame
pygame.init()
speed_x = 1
speed_y = 1
black = (0, 0, 0)
width, height = 320, 240
size = (width, height)
screen = pygame.display.set_mode(size)
display_surface = pygame.display.get_surface()
display_rectangle = display_surface.get_rect()
ball_img = pygame.image.load("data/ball.gif")
ball = ball_img.convert_alpha()
ballrect = ball.get_rect()
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if not display_rectangle.contains(ballrect.move([speed_x, 0])):
speed_x *= -1
else:
ballrect = ballrect.move([speed_x, 0])
if not display_rectangle.contains(ballrect.move([0, speed_y])):
speed_y *= -1
else:
ballrect = ballrect.move([0, speed_y])
screen.fill(black)
screen.blit(ball, ballrect)
pygame.display.flip()
pygame.time.delay(30)
此代碼工作正常,我的問題是,如果有人知道一個簡單的算法或明確的算法來扭轉使用contains
或任何其他collide
pygame的測試方向。
有些時候,我認爲一種方法對學生來說是最容易的,並且會出現一種新的清晰方法。
所有建議,歡迎
一些建議嗎?謝謝!
我還沒有試過你的代碼,但它看起來可能會工作。你有什麼問題? – 2012-02-11 20:42:53
@GregHewgill,感謝您的評論,是的,它的工作原理,我編輯過的問題。 – danihp 2012-02-11 20:47:21