Salut tous im travailler sur un devoir de devoirs dans lequel je dois créer un jeu de pong solo par le biais de pygame et livewire. J'ai terminé le code pour la plupart, mais j'ai un problème. L'écran ne se met pas à jour et, ce faisant, la palette ne bouge pas et la balle ne rebondit pas. J'ai une méthode de mise à jour à la fois sur la raquette et sur la balle, mais pour une raison quelconque, cela ne fonctionne pas. Voici mon code Merci! MISE À JOUR: J'ai dû refaire quelque chose mais je suis maintenant capable de faire appel aux mes classes et les balles rebondissent mais je ne peux pas bouger la pagaie. Je n'ai aucune idée de pourquoi cela ne fonctionne pas puisque le self.y = games.mouse.y devrait mettre à jour les coordonnées de ma raquette. Voici mon code édité cependant, et merci pour l'aide jusqu'ici!pong programme en python, ne peut pas bouger paddle avec la souris
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()
je vais essayer que merci EDIT: J'ai essayé de mettre pygame.display.update() et rien ne s'est passé. Je suppose que cette ligne de code ne fonctionne pas avec livewires. –
Oui. Vous utilisez l'écran livewires, pas l'écran pygame. – PygameNerd
Donc, à tout le moins, la balle/palette DO apparaître sur l'écran. Êtes-vous sûr que les méthodes de mise à jour sont appelées? Essayez de mettre une déclaration d'impression dans la méthode de mise à jour de balle et assurez-vous que cette méthode est effectivement appelée –