diff --git a/.gitignore b/.gitignore index b21b314..ce13b0b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,10 @@ __pycache__/ *.py[cod] *$py.class .vscode/ +<<<<<<< HEAD +======= + +>>>>>>> 305580eea7190f860f95c5a693da9fcb58fadf6a # C extensions *.so diff --git a/README.md b/README.md index b235189..c7cea51 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ +<<<<<<< HEAD # Partie 1 ## Pour commencer @@ -152,4 +153,112 @@ Cela veut dire que **speed** peut changer pendant que le jeu est en train de tou - Arrangez-vous pour que quand vous gardez le bouton de la souris enfoncé, l'oiseau arrête de bouger, mais que quand vous relâchez le bouton, il recommence à bouger. (Indice : vous aurez besoin d'une nouvelle fonction : **`on_mouse_up`**) - Ajoutez un autre oiseau, se déplacant à une autre vitesse, - Arrangez-vous pour que quand un oiseau dépasse les limites de l'écran, il réapparaisse de l'autre côté. (Indice : vous allez devoir vous servir de l'instruction **`if`**) -- Arangez-vous pour qu'à chaque clic, l'oiseau accélère... \ No newline at end of file +- Arangez-vous pour qu'à chaque clic, l'oiseau accélère... +======= +# Partie 2 +Maintenant que nous avons un arrière-plan et un oiseau qui vole de haut en bas, ajoutons les tuyaux aux travers desquels l'oiseau va devoir passer. + +## Ajouter les tuyaux + +Vous avez déjà vu que nous pouvons créer des objets `Actor` et comment les déplacer sur l'écran. Au besoin, retournez voir dans la section précédente comment vous avez procédé avec l'oiseau. + +Nous devons donc ajouter deux tuyaux, et si vous regardez dans le répertoire images, vous verrez que nous avons deux fichiers nommés `top.png` et `bottom.png`. Comment les ajouter au jeu ? + +> Créons deux nouveaux acteurs en ajoutant à la fin de votre code : + +```python +tube_superieur = Actor('top', (300,0)) +tube_inferieur = Actor('bottom', (300,500)) +``` + +Pour voir apparaître les tuyaux, il ne faut pas oublier de demander leur dessin. À vous de déterminer où placer ces deux lignes : + +```python +tube_superieur.draw() +tube_inferieur.draw() +``` + +> Testez le résultat + +Bien, nous avons des tuyaux ! Mais ils sont juste là, sur la page, et il n'y a pas d'espace entre eux. + +*Pouvez-vous deviner ce que les `(300, 0)` et `(300, 500)` signifient ? Modifiez-les pour vérifier.* + +## Attention à l'écart + +Comment faire un trou pour que notre oiseau puisse voler ? Nous devons nous assurer que nous positionnons les tuyaux au bon endroit sur l'écran, et pour ce faire, nous devons connaître la taille de chaque image. + +> Voyons ce que nous pouvons découvrir d'un acteur, en ajoutant ce code à la fin de votre programme : + +```python +print(tube_superieur.width, tube_superieur.height) +``` + +> Exécutez le programme et regardez quels nombres apparaissent dans la console. + +Vous devriez voir apparaître deux chiffres (normalement 100 500), c'est la largeur et la hauteur du tube supérieur en pixels. + +Grâce à ces informations, nous pouvons modifier la construction des tuyaux supérieurs et inférieurs en conséquence : + +```python +ecart = 140 +tube_superieur = Actor('top', (300, 0)) +tube_inferieur = Actor('bottom', (300, tube_superieur.height + ecart)) +``` + +Les deux valeurs séparées par une virgule à la fin de chaque ligne Actor contrôlent la position **x** (de gauche à droite), et **y** (de haut en bas) de l'Actor. Ainsi `(300,0)` place le tuyau à 300 pixels du bord gauche, et 0 pixel en bas du haut de la fenêtre. + +D'où viennent ces calculs ? Eh bien, l'écart est une nouvelle variable que nous créons, et nous disons que la hauteur du tuyau supérieur plus l'écart doit être la valeur **y** du tuyau inférieur. Essayez de changer la valeur de l'écart et voyez ce qui se passe. + +> Exécutez pour vérifier que nous avons créé un écart + +*Quel est le plus grand écart que vous pouvez faire tout en voyant le tuyau de fond ?* + + +## Allons de l'avant + +Pour donner l'impression que l'oiseau vole vers l'avant, et bien que cela paraissent paradoxal, il va falloir faire se déplacer les tubes. C'est une technique classique dans les jeux vidéos : le joueur reste immobile, c'est tout le reste qui se déplace. + +Faisons donc bouger ces tuyaux. Tout comme nous l'avons fait avec notre oiseau, nous pouvons créer une variable de vitesse pour les tuyaux et l'utiliser pour les faire bouger. Nous voulons que la ligne de code suivante s'exécute une fois lorsque nous lançons le programme, elle doit donc se trouver à la fin de votre code : + +```python +vitesse_defilement = 1 +``` + +Et ils doivent se déplacer continuellement, donc ce code va dans la fonction de mise à jour : + +```python +tube_superieur.x += vitesse_defilement +tube_inferieur.x += vitesse_defilement +``` + +Testez. Tout se passe-t-il comme prévu ? Si ce n'est pas le cas, relisez votre code et essayez de le corriger. + + +## Plus de tuyaux + +Nous avons besoin de plus de tuyaux, une seule paire ne suffit pas. En fait, nous en avons déjà assez, nous pouvons simplement les faire tourner en boucle lorsqu'ils sortent de l'écran. + +Pour ce faire, nous allons utiliser l'instruction `if` ainsi que les tests conditinnels `<` et `>`. + +Il y a trois choses délicates avec les énoncés `if` : + +- Que testez-vous exactement ? Que se passe-t-il après le "si" ? +- Il ne faut pas oublier les deux points à la fin du test conditionnel. +- Il faut que l'indentation soit correcte - combien d'espaces au début de la ligne ? - pour que le bon code soit exécuté. + + +## Boucles sur les tuyaux + +Mettons-nous au travail dans la fonction de mise à jour, car c'est là que nous déplaçons les tuyaux. + +> Ajoutez ce code à la fin de la fonction, et assurez-vous que vous l'indentez pour qu'il soit vraiment à l'intérieur de la fonction. +> Efforcez-vous de *réellement* comprendre le sens des lignes de code. + +```python +if tube_superieur.x < 0 : + tube_superieur.x = WIDTH +``` + +Il devrait toutefois subsister certains soucis... À vous de les corriger 😁 +>>>>>>> 305580eea7190f860f95c5a693da9fcb58fadf6a diff --git a/birdie.py b/birdie.py index 5b8b49c..97584f0 100644 --- a/birdie.py +++ b/birdie.py @@ -1,9 +1,14 @@ import pgzrun +<<<<<<< HEAD +======= + +>>>>>>> 305580eea7190f860f95c5a693da9fcb58fadf6a TITLE = "Paf l'oiseau" WIDTH = 400 HEIGHT = 708 def on_mouse_down(): +<<<<<<< HEAD print('Clic enfoncé souris !') birdie.backupspeed = birdie.speed birdie2.backupspeed = birdie.speed @@ -39,4 +44,20 @@ def update(): birdie.speed = 1 birdie2.speed = 1 -pgzrun.go() \ No newline at end of file +pgzrun.go() +======= + print('Clic souris !') + titi.y -= 50 + +def update(): + titi.y += titi.speed + +def draw(): + screen.blit('background', (0, 0)) + titi.draw() + +titi = Actor('bird1', (75, 350)) +titi.speed = 1 + +pgzrun.go() +>>>>>>> 305580eea7190f860f95c5a693da9fcb58fadf6a