Compare commits

...

25 Commitit

Tekijä SHA1 Viesti Päivämäärä
  gaetanv 311d648ee6 Collision 3 vuotta sitten
  gaetanv 440e7d64f2 Sauvegarde 3 vuotta sitten
  gaetanv 019e2c4d6e Merge branch 'chapitre-2-start' of https://git.techprog.be/fabien.toune/paf-loiseau into chapitre-2-start 3 vuotta sitten
  gaetanv b5f3ed2b8a Merge branch 'chapitre-1-start' of https://git.techprog.be/Gaetanv/paf-loiseau into chapitre-1-start 3 vuotta sitten
  gaetanv 3978d74dda save 3 vuotta sitten
  Lapin-Blanc 305580eea7 chapitre 2 start ok 3 vuotta sitten
  Lapin-Blanc 96db89dfb6 instructions version 1 3 vuotta sitten
  gaetanv cad9b6dbff Merge branch 'chapitre-1-start' of https://git.techprog.be/Gaetanv/paf-loiseau into chapitre-1-start 3 vuotta sitten
  gaetanv bfda3ed00f Background qui bouge 3 vuotta sitten
  gaetanv 2a06d6470b last maj 3 vuotta sitten
  gaetanv 3efe248694 3° maj 3 vuotta sitten
  gaetanv 9800c67d76 New maj 3 vuotta sitten
  gaetanv a08aac1b04 MAJ 3 vuotta sitten
  gaetanv db7b0c69e8 modif 3 vuotta sitten
  gaetanv 6570da0bcb MAj 3 vuotta sitten
  Lapin-Blanc 282fd36d89 added image 3 vuotta sitten
  Lapin-Blanc a417a21f79 updated speed 3 vuotta sitten
  Lapin-Blanc f9834aeb37 updated chapitre-1-end 3 vuotta sitten
  gaetanv a70bd07f05 maj 3 vuotta sitten
  Lapin-Blanc 995c3cc308 updated chapitre 1 start 3 vuotta sitten
  Lapin-Blanc 8a2dac2bc3 Updated readme 3 vuotta sitten
  Lapin-Blanc 0a4ef519ff MIse à jour 3 vuotta sitten
  Lapin-Blanc 84dee5e4db Mise à jour du readme 3 vuotta sitten
  Lapin-Blanc 306893a57f removed useless comment 3 vuotta sitten
  Lapin-Blanc a65579a2b1 removed useless README 3 vuotta sitten
8 muutettua tiedostoa jossa 326 lisäystä ja 15 poistoa
  1. +4
    -0
      .gitignore
  2. +52
    -0
      Birdies.py
  3. +106
    -10
      README.md
  4. +52
    -0
      bird.py
  5. +34
    -0
      bird_prof.py
  6. +3
    -3
      birdie.py
  7. +74
    -0
      birdiesV2.py
  8. +1
    -2
      chapitre_1.md

+ 4
- 0
.gitignore Näytä tiedosto

@@ -3,7 +3,11 @@
__pycache__/
*.py[cod]
*$py.class
.vscode/
<<<<<<< HEAD
=======

>>>>>>> 305580eea7190f860f95c5a693da9fcb58fadf6a
# C extensions
*.so



+ 52
- 0
Birdies.py Näytä tiedosto

@@ -0,0 +1,52 @@
import pgzrun
# Le corps du programme devrait se trouver ici...
TITLE = "Paf l'oiseau"
WIDTH = 400
HEIGHT = 700

titi = Actor('bird1', (75, 350))
tutu = Actor ('bird2', ( 300, 20))
top = Actor('top', (300, -150))
bottom = Actor ('bottom', (300, 800))
fond = Actor('background', (200,350))
fond2 = Actor('background', (-200,350))

def draw():
fond.draw()
fond2.draw()
titi.draw()
tutu.draw()
top.draw()
bottom.draw()
def on_mouse_down(pos):
print( pos, 'est la position de titi lors du clic gauche')
titi.backupspeed = titi.speed
tutu.backupspeed = tutu.speed
titi.speed = 0
tutu.speed = 0
def on_mouse_up ():
titi.speed = titi.backupspeed + 2
tutu.speed = tutu.backupspeed + 2

def update():
fond.x += 2
fond2.x +=2
if fond.x > 400 :
fond.x = 200
if fond2.x > 200 :
fond2.x = 0
titi.x += titi.speed
tutu.y += tutu.speed
if titi.x > 400 :
titi.x = 0
if tutu.y > 700 :
tutu.y = 10
titi.speed = 1
tutu.speed = 1

pgzrun.go()

+ 106
- 10
README.md Näytä tiedosto

@@ -1,10 +1,106 @@
# Introduction
## Pour commencer

- Description de l'environnement de travail : python3.9, pip, virtualenv et vs code
- Principe du projet par changements successifs de commit
- Ètapes initiales :
- Fork et clonage du dépôt du projet
- Ouverture du projet dans VS Code
- Installation de l'environnement et des dépendances
- Passage sur le premier tag pour la première partie
# 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 😁

+ 52
- 0
bird.py Näytä tiedosto

@@ -0,0 +1,52 @@
import pgzrun
# Le corps du programme devrait se trouver ici...
TITLE = "Paf l'oiseau"
WIDTH = 400
HEIGHT = 700

titi = Actor('bird1', (75, 350))
tutu = Actor ('bird2', ( 300, 20))
top_tube = Actor('top', (300, 0))
bottom_tube = Actor ('bottom', (300, 800))
fond = Actor('background', (200,350))
fond2 = Actor('background', (-200,350))

def draw():
fond.draw()
fond2.draw()
titi.draw()
tutu.draw()
top_tube.draw()
bottom_tube.draw()
def on_mouse_down(pos):
print( pos, 'est la position de titi lors du clic gauche')
titi.backupspeed = titi.speed
tutu.backupspeed = tutu.speed
titi.speed = 0
tutu.speed = 0
def on_mouse_up ():
titi.speed = titi.backupspeed + 2
tutu.speed = tutu.backupspeed + 2

def update():
fond.x += 2
fond2.x +=2
if fond.x > 400 :
fond.x = 200
if fond2.x > 200 :
fond2.x = 0
titi.x += titi.speed
tutu.y += tutu.speed
if titi.x > 400 :
titi.x = 0
if tutu.y > 700 :
tutu.y = 10
titi.speed = 1
tutu.speed = 1

pgzrun.go()

+ 34
- 0
bird_prof.py Näytä tiedosto

@@ -0,0 +1,34 @@
import pgzrun

TITLE = "Paf l'oiseau"
WIDTH = 400
HEIGHT = 708

def on_mouse_down():
print('Clic souris !')
titi.y -= 50

def update():
titi.y += titi.speed
tube_superieur.x -= vitesse_defilement
tube_inferieur.x -= vitesse_defilement
if tube_superieur.x + tube_superieur.width/2< 0 :
tube_superieur.x = WIDTH + tube_superieur.width/2
tube_inferieur.x = WIDTH + tube_superieur.width/2

def draw():
screen.blit('background', (0, 0))
titi.draw()
tube_superieur.draw()
tube_inferieur.draw()

titi = Actor('bird1', (75, 350))
titi.speed = 1
ecart = 140
tube_superieur = Actor('top', (300, 0))
tube_inferieur = Actor('bottom', (300, tube_superieur.height + ecart))
vitesse_defilement = 1

# print(tube_superieur.width, tube_superieur.height)

pgzrun.go()

+ 3
- 3
birdie.py Näytä tiedosto

@@ -6,7 +6,7 @@ HEIGHT = 708

def on_mouse_down():
print('Clic souris !')
titi.y -= 50 # équivalent à titi.y = titi.y - 50
titi.y -= 50

def update():
titi.y += titi.speed
@@ -16,6 +16,6 @@ def draw():
titi.draw()

titi = Actor('bird1', (75, 350))
titi.speed = 3
titi.speed = 1

pgzrun.go()
pgzrun.go()

+ 74
- 0
birdiesV2.py Näytä tiedosto

@@ -0,0 +1,74 @@
import random
import pgzrun

TITLE = "Paf l'oiseau"
WIDTH = 400
HEIGHT = 708

titi = Actor('bird1', (75, 350))
titi.speed = 1
ecart = 140
tube_superieur = Actor('top', (300, 0))
tube_inferieur = Actor('bottom', (300, tube_superieur.height + ecart))
vitesse_defilement = 2
gravite = 0.3

fond = Actor('background', (200,350))
fond2 = Actor('background', (-200,350))

def draw():
fond.draw()
fond2.draw()
tube_superieur.draw()
tube_inferieur.draw()
titi.draw()

def on_mouse_down():
print('Clic souris !')
titi.y -= 30
def reset():
print("Retour au départ...")
titi.speed = 1
titi.center = (75, 350)
tube_superieur.center = (300, 0)
tube_inferieur.center = (300, tube_superieur.height + ecart)
titi.image = "bird1"
def heurte_tube() :
print ("Paf !")
titi.image = "birddead" # (oiseau mort)
if titi.y < 700 :
titi.y += 5


def update():
fond.x += 1
fond2.x += 1
if fond.x > 400 :
fond.x = 200
if fond2.x > 200 :
fond2.x = 0
titi.y += titi.speed
tube_superieur.x -= vitesse_defilement
tube_inferieur.x -= vitesse_defilement
if tube_superieur.x + tube_superieur.width/2< 0 :
tube_superieur.x = 400
tube_inferieur.x = 400
if (titi.colliderect(tube_superieur)) :
heurte_tube()
if (titi.colliderect(tube_inferieur)) :
heurte_tube()
if titi.y > HEIGHT :
reset()
if titi.y < 0 :
reset()
if (titi.colliderect(tube_inferieur)) :
heurte_tube()
#print(tube_superieur.width, tube_superieur.height)

pgzrun.go()

+ 1
- 2
chapitre_1.md Näytä tiedosto

@@ -18,8 +18,7 @@ pgzrun.go()
```

L'exécution d'un tel programme devrait d'ailleur faire apparaître une fenêtre au fond noir et dont le titre est *Pygame Zero Game*

> - Créez maintenant un nouveau script python, dans le dossier racine du projet, basé sur le squelette décrit ci-dessus.
> - Recréez maintenant le nouveau script python `birdie.py`, dans le dossier racine du projet, basé sur le squelette décrit ci-dessus.
> - Entre la première et la dernière ligne (corps du programme), rédigez le code suivant :

```python


Ladataan…
Peruuta
Tallenna