Si le module pygame n'est pas installé, python mentionne une erreur d'importation et arrête l'exécution du code.
Si c'est le cas, installer pygame à l'aide de la commande
pip install pygame
ou en passant par le menu d'ajout de module de l'EDI.
Si la version de python est inférieure à la 3.7, les f-string ne sont pas supportées
Si c'est le cas, remplacer par :
Former les bons couples par glisser-déposer ou clics successifs.
Améliorer le code : niveau 1
Déplacement des ennemis
Quelle instruction permet le déplacement vertical de l'ennemi ?
enemy.y +=4
Ajouter, sur la ligne au dessus de enemy.y +=4 :
enemy.x += random.randint(-5,5)
Qu'observe-t-on ?
Le déplacement de l'ennemi devient aléatoire (+ ou - 5 pixels maximum à chaque rafraichissement de l'affichage).
Effacer cette ligne et la remplacer par :
enemy.x +=-2if player.x < enemy.x else2
Qu'observe-t-on ?
Le déplacement de l'ennemi suit le joueur (+ ou - 2 pixels à chaque rafraichissement de l'affichage).
On pourra écrire ces deux instructions, ensemble et à la suite pour en combiner les effets et surprendre le joueur.
Questions :
Débuter avec Python / Projet Jeu vidéo - questions
Apprentissage 0x
Réussite 0/0/8
L'instruction player.x -= 5 :
déplace qui ?
direction ?
sens ?
Former les bons couples par glisser-déposer ou clics successifs.
Taille de la fenêtre de jeu
Modifier la taille de la fenêtre de jeu (on pourra l'agrandir pour qu'elle occupe une partie plus importante de l'écran) en modifiant les variables H et W.
On pourra commencer par :
W, H =600,400
Remarques :
Cette écriture est équivalente à :
W =600
H =400
On parle d'affectation simultanée (ou multiple)
Les variables qui n'ont pas vocation à être changées durant l'éxécution du programme sont mises, par convention, en majuscules.
Repositionner le joueur verticalement en bas de la fenêtre.
player = pygame.Rect(180,350,40,20)
Déplacement vertical du joueur
Permettre un déplacement vertical pour le joueur.
On pourra utiliser : pygame.K_UP et pygame.K_DOWN.
Modifications du code : niveau 2
Player 2 enters the game
Colorier le joueur 1 en vert pour le différencier du joueur 2 qui sera en bleu.
En plaçant judicieusement les instructions suivantes, transformer le jeu en jeu à deux joueurs :
player2 = pygame.Rect(100,350,40,20)
player2.clamp_ip(screen.get_rect())
if keys[pygame.K_a]: player2.x -=5if keys[pygame.K_d]: player2.x +=5
et d'autres instructions pour les déplacements verticaux ; ⚠️ Pygame utilise le clavier QWERTY ! On utilisera les touches coloriées en orange pour les déplacements du joueur 2.
Clavier QWERTY :
Q
W
E
R
T
Y
U
I
O
P
A
S
D
F
G
H
J
K
L
M
W
X
C
V
B
N
M
pygame.draw.rect(screen,(0,0,255), player2)
if player.colliderect(enemy)or player2.colliderect(enemy):
Pour être équitable, le joueur 2 doit aussi être attaqué ; si l'ennemi est plus proche du joueur 2, faire en sorte qu'il se dirige vers lui.
abs(a-b) mesure la distance entre les valeurs a et b
Le son
Ajouter de la musique en insérant les lignes suivantes (avant la création des rectangles joueurs 1 et 2) :
Charger les fichier «bruitages», au format wav juste à la suite du code précédent permettant de charger la musique, en les affectant à une variable, par exemple :
son_bonus = pygame.mixer.Sound("bonus.wav")
Dans le programme, à l'endroit judicieux (par exemple lorsque le score augmente), j
ouer le son avec :
son_explosion.play()
.
Il est bien sur préférable d'utiliser plusieurs sons. Remarque : Pour un son de «Game Over»,
il peut être judicieux de faire une pause de la longueur correspondant au son avant de quitter :
par exemple,
pygame.time.delay(2000)
fait une pause de 2000 millisecondes.
Le fond
Ajouter une image de fond :
Charger l'image (avant d'entrer dans la boucle ; le fichier doit être dans le même dossier que le programme) :
Dans la boucle, rafraichir l'image de fond après screen.fill((0,0,0)) :
screen.blit(bg_image,(0,0))
Les «vies»
Ajouter un compteur de vies (au choix : pour chaque joueur avec affichage, ou partagé par les 2 joueurs.
Améliorations et style : niveau 3
⭐⭐⭐
Faire en sorte que le nombre d'ennemis augmente en fonction du temps, ou qu'ils grossissent en fonction du temps.
⭐⭐⭐⭐
Faire défiler l'image de fond (scrolling) et ajouter des images pour chaque joueur et ennemi, au lieu de rectangles de couleurs. On pourra utiliser la documentation de pygame
⭐⭐⭐⭐⭐
Faire en sorte que les joueurs puissent éliminer les ennemis en tirant dessus.