J'ai un jeu avec un fond de tuiles, certains sont statiques (herbe, boue), mais je veux que l'eau coule. J'ai créé une surface appelée eau, puis j'ai une boucle qui traverse une série de 10 pngs pour les cadres de l'eau qui coule. Je veux ensuite mettre à jour cette surface 10 fois plus souvent que le reste du jeu, et le blitter à la surface principale à 30 images par seconde avec les autres objets.Mettre à jour une surface dans Pygame
Cependant tout ce que je peux obtenir est aucun mouvement ou l'eau qui coule à une vitesse folle (en mettant à jour l'affichage entier dans la boucle de mise à jour de l'eau.)
est-il un moyen que je peux mettre à jour juste cette surface?
voici mon code:
#mud, grass and surface are defined earlier.
water = pygame.Surface((100,100))
#create mud tiles
for x in range(0,800,100):
for y in range(0, 500, 100):
screen.blit(mud,(x,y))
#create grass tiles
for x in range(400, 800, 100):
for y in range(0, 300, 100):
screen.blit(grass,(x,y))
#create filenames
for x in range(1,11):
if x < 10:
filename = "images\water\water1000" + str(x) + ".png "
else:
filename = "images\water\water100" + str(x) + ".png "
waterimg = pygame.image.load(filename)
#add to a surface, then tile the surface onto the game.
water.blit(waterimg,(0,0))
for x in range(100, 200, 100):
for y in range(0, 500, 100):
screen.blit(water, (x,y))
pygame.display.flip() #makes it update crazily. removing this line makes it not update at all.
allsprites.draw(screen)
pygame.display.flip()
semble très bien, acclame accepté parce que même si je ne l'obtiens pas pour travailler je comprends maintenant le concept beaucoup mieux. une question: comment puis-je obtenir la variable tick? Je n'ai pas une méthode de tirage, juste une boucle infinie: tandis que 1: clock.tick (30) # manipuler les entrées et dessiner tout – espekia
Pour garder une trace de la coche, mettre tick = 0 avant d'entrer dans la boucle et mettez tick = = 1 après avoir appelé flip(). – Krendil
hey, que totalement travaillé = D merci tout un tas! – espekia