Un bloc qui tombe
Leçon 10 sur 41 du cours Créer des jeux avec Pygame de Coddy.
Un objet qui tombe est un objet dont la coordonnée y augmente à chaque image. Transforme également le bloc en Rect et ajoute une valeur à sa coordonnée y à chaque passage dans la boucle :
block = pygame.Rect(220, 0, 20, 20)
while running:
# événements et touches
block.y += 3
# remplir, dessinerÀ 60 images par seconde, 3 pixels par image correspondent à 180 pixels par seconde. La fenêtre fait 360 pixels de haut, le bloc met donc deux secondes à atteindre le bas.
Ce jeu avance image par image, comme Move a Square, et non à l’aide de dt. Un Rect ne conserve que des nombres entiers : un déplacement de 0,6 pixel, par exemple, serait arrondi à 0, et le Rect ne bougerait jamais. Les jeux qui déplacent des Rect en fonction du temps stockent la position dans un Vector2 et la copient dans le Rect.
Le bloc continue de tomber après avoir quitté la fenêtre. Rien ne l’arrête pour le moment ; la prochaine leçon le fera revenir.
Défi
FacileFais tomber un bloc depuis le haut.
- Sous le panier, écris
block = pygame.Rect(220, 0, 20, 20). - Dans la boucle, après le déplacement du panier, ajoute 3 à
block.y. - Dessine le bloc en rouge
(235, 80, 80)après le panier.
Appuie sur « Jouer » : un bloc rouge tombe depuis le haut. Puis appuie sur « Vérifier ».
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
basket = pygame.Rect(200, 330, 80, 16)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
basket.x -= 8
if keys[pygame.K_RIGHT]:
basket.x += 8
basket.clamp_ip(screen.get_rect())
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Toutes les leçons de Créer des jeux avec Pygame
2Événements et collisions
Le panierUn bloc qui tombeEntraînez-vous par vous-même : Playground Pygame