我剛剛開始學習pygame和livewires,我正在嘗試製作一個單人乒乓遊戲,在那裏你剛剛擊中球,它會反彈,直到它通過你的槳(位於屏幕的左側並由鼠標控制),這會讓你失去。我有基本的代碼,但球不停留在屏幕上,它只是閃爍,並不保持不變。此外,槳不隨鼠標移動。我確信我錯過了一些簡單的東西,但我無法弄清楚。請幫助!這是我有什麼:單人遊戲「乒乓」遊戲
from livewires import games
import random
games.init(screen_width=640, screen_height=480, fps=50)
class Paddle(games.Sprite):
image=games.load_image("paddle.bmp")
def __init__(self, x=10):
super(Paddle, self).__init__(image=Paddle.image,
y=games.mouse.y,
left=10)
self.score=games.Text(value=0, size=25, top=5, right=games.screen.width - 10)
games.screen.add(self.score)
def update(self):
self.y=games.mouse.y
if self.top<0:
self.top=0
if self.bottom>games.screen.height:
self.bottom=games.screen.height
self.check_collide()
def check_collide(self):
for ball in self.overlapping_sprites:
self.score.value+=1
ball.handle_collide()
class Ball(games.Sprite):
image=games.load_image("ball.bmp")
speed=5
def __init__(self, x=90, y=90):
super(Ball, self).__init__(image=Ball.image,
x=x, y=y,
dx=Ball.speed, dy=Ball.speed)
def update(self):
if self.right>games.screen.width:
self.dx=-self.dx
if self.bottom>games.screen.height or self.top<0:
self.dy=-self.dy
if self.left<0:
self.end_game()
self.destroy()
def handle_collide(self):
self.dx=-self.dx
def end_game(self):
end_message=games.Message(value="Game Over",
size=90,
x=games.screen.width/2,
y=games.screen.height/2,
lifetime=250,
after_death=games.screen.quit)
games.screen.add(end_message)
def main():
background_image=games.load_image("background.bmp", transparent=False)
games.screen.background=background_image
paddle_image=games.load_image("paddle.bmp")
the_paddle=games.Sprite(image=paddle_image,
x=10,
y=games.mouse.y)
games.screen.add(the_paddle)
ball_image=games.load_image("ball.bmp")
the_ball=games.Sprite(image=ball_image,
x=630,
y=200,
dx=2,
dy=2)
games.screen.add(the_ball)
games.mouse.is_visible=False
games.screen.event_grab=True
games.screen.mainloop()
main()
我沒有看到screen.flip在任何地方,但也許它在screen.mainloop? – 2010-04-20 20:17:38
如果您使用雙緩衝,某些庫會爲您翻轉緩衝區。沒有太多,我不知道livewires是否是其中之一,但不打電話翻轉不是這裏的問題。果醬提到他的球是閃爍的。 – 2010-04-21 14:02:03