Je commence tout juste à apprendre le pygame et les livewires, et j'essaye de faire un jeu de pong solo, où vous frappez juste la balle, et elle rebondit jusqu'à ce qu'elle passe votre pagaie (situé sur le côté gauche de l'écran et contrôlé par la souris), ce qui vous fait perdre. J'ai le code de base, mais la balle ne reste pas à l'écran, elle scintille et ne reste pas constante. De plus, la palette ne bouge pas avec la souris. Je suis sûr qu'il me manque quelque chose de simple, mais je n'arrive pas à le comprendre. Aidez-moi, s'il vous plaît! Voici ce que j'ai:Jeu solo 'pong'
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()
Je ne vois pas screen.flip n'importe où, mais peut-être que c'est dans screen.mainloop? –
Certaines bibliothèques retournent les tampons pour vous si vous utilisez la double mise en mémoire tampon. Pas trop, et je ne sais pas si livewires est l'un d'entre eux, mais ne pas appeler flip n'est pas le problème ici. Jam a mentionné que sa balle scintille. –