嘿所有即時通訊工作在一個家庭作業,其中我必須通過pygame和livewire創建單人乒乓遊戲。我的代碼大部分已完成,但我確實有一個問題。屏幕不會更新,因此槳板不會移動,球也不會反彈。我有槳和球的更新方法,但由於某些原因它不起作用。這是我的代碼謝謝!在python中的乒乓程序,不能用鼠標移動槳
更新:我不得不重做出頭,但現在我可以對我的課打電話,球反彈,但我不能移動擋板。我不知道爲什麼這不起作用,因爲self.y = games.mouse.y應該更新我的槳的y座標。這是我重新編輯的代碼,但是,感謝迄今的幫助!
from livewires import games, color
import random
#make screen size
games.init(screen_width = 640, screen_height = 480 , fps = 50)
class Paddle(games.Sprite):
image = games.load_image("paddle.bmp")
def __init__(self):
super(Paddle, self).__init__(image = Paddle.image,x = 10, y = games.mouse.y)
self.score = games.Text(value = 0, size = 25, color = color.black,
top = 20, right = games.screen.width - 8)
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_hit()
def check_hit(self):
countdown = 0
if countdown == 0:
for ball in self.overlapping_sprites:
self.score.value += 1
ball.dat_touch()
countdown == 10
else: countdown -= 1
"""
class Ball(games.Sprite):
image = games.load_image("ball.bmp")
speed = 2
def __init__(self, x = games.screen.height/2, y = games.screen.height/2):
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 dat_touch(self):
#self.dx = - self.dx
#handles paddle touch
#doesn't work = game_over
"""
def end_game(self):
end_message = games.Message(value = "Game Over",
size = 90,
color = color.red,
x = games.screen.width/2,
y = games.screen.height/2,
lifetime = 5 * games.screen.fps,
after_death = games.screen.quit)
games.screen.add(end_message)
"""
def main():
wall_image = games.load_image("background.bmp", transparent = False)
games.screen.background = wall_image
the_ball = Ball()
games.screen.add(the_ball)
the_paddle = Paddle()
games.screen.add(the_paddle)
games.mouse.is_visible = False
games.screen.event_grab = True
games.screen.mainloop()
main()
我會嘗試,謝謝編輯:我試圖把pygame.display.update()並沒有發生。即時通訊假設該行代碼不適用於livewires。 –
是的。您正在使用livewires屏幕,而不是pygame屏幕。 – PygameNerd
所以,至少,球/槳DO會出現在屏幕上。你確定更新方法被調用嗎?嘗試將打印語句放入球更新方法中,並確保該方法確實被稱爲 –