1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
| # On importe Tkinter
from tkinter import *
# On importe le module random va nous permettre dutiliser des fonctions générant des nombres aléatoires.
import random
#On importe randint qui va nous perlettre de générer un nombre aléatoire dans un intervalle donné.
from random import randint
global h
global H
#height est la hauteur
#widhth est la largeur
#h est la hauteur du tuyau pointant vers le haut, plus h est grand, plus le tuyau est bas et inversement.
#h maximum = 128
#h minimum = 385
#distance entre les tuyaux vaut 100 pixels
h = randint(128,385)
H = randint (128,385)
# On crée une fenêtre, racine de notre interface
fenetre = Tk()
#La fonction deplacement va permettre, comme son nom l'indique, de déplacer l'objet (ici l'oiseau)
def deplacement():
#Met en place les coordonnées de l'image
img_coords=canvas.coords(image_oiseau)
#Met en place la largeur de l'image
img_width=O.width()
if img_coords[1] < 416 :
#0 représente le déplacmeent de X en abscisse et5 est Y en ordonnée
canvas.move(image_oiseau,0,5)
#Il se déplace toutes les 30 millisecondes
canvas.after (30,deplacement)
elif img_coords[1]>0:
#0 représente le déplacmeent de X en abscisse et5 est Y en ordonnée
canvas.move(image_oiseau,0,5)
#Il se déplace toutes les 30 millisecondes
canvas.after (30,deplacement)
def sauter(event):
print('sauter')
for i in range(20 ):
canvas.move(image_oiseau,0, -10)
canvas.move(image_oiseau,0, -10)
canvas.move(image_oiseau,0, -10)
canvas.move(image_oiseau,0, -10)
canvas.move(image_oiseau,0, -10)
canvas.update(30)
def deplacement1():
#On commence par associer les coordonnées de l'image à img_coords
img_coords_sol=canvas.coords(image_sol)
# On associe ensuite la largeur de l'image à img_width
img_width_sol=sol.width()
#Le chiffre 144 correspond au X de l'image et permet de le déplacer en entier (je crois)
if img_coords_sol[0]+img_width_sol >= 144:
#canvas.move va permettre de déplacer le sol de -5 pixels en abscisse.
canvas.move(image_sol,-5,0)
#canvas.after va permettre de déplacer l'image toutes les 40 milisecondes.
canvas.after (40,deplacement1)
else:
img_coords_sol=canvas.coords(image_sol,144,512)
canvas.move(image_sol,-5,0)
canvas.after (40,deplacement1)
def deplacement2():
img_coords_copy=canvas.coords(image_sol2)
img_width_copy=sol2.width()
#Si le déplacement est supérieur ou égal à 432 pixels.
if img_coords_copy[0]+img_width_copy >= 432:
canvas.move(image_sol2,-5,0)
canvas.after(40,deplacement2)
#J'ai mis 434 pour X car 432 est le X de l'image afin qu'on ne le voit plus à l'écran.
else:
img_coords_copy=canvas.coords(image_sol2,432,512)
canvas.move(image_sol2,-5,0)
canvas.after(40,deplacement2)
def deplacementT():
h = randint(128,385)
img_coords_tuyaux=canvas.coords(image_tuyaux)
img_width_tuyaux=tuyaux.width()
#Plus le chiffre est faible, plus le tuyau se déplace vers le droite.
if img_coords_tuyaux[0]+img_width_tuyaux >= 288-28:
canvas.move(image_tuyaux,-5,0)
canvas.after(40,deplacementT)
else:
img_coords_tuyaux=canvas.coords(image_tuyaux,288+28,h)
canvas.move(image_tuyaux,-5,0)
canvas.after(40,deplacementT)
def deplacementT2():
H = randint(128,385)
img_coords_tuyaux2=canvas.coords(image_tuyaux2)
img_width_tuyaux2=tuyaux2.width()
#Plus le chiffre est faible, plus le tuyau se déplace vers le droite.
if img_coords_tuyaux2[0]+img_width_tuyaux2 >= 288-28:
canvas.move(image_tuyaux2,-5,0)
canvas.after(40,deplacementT2)
else:
img_coords_tuyaux2=canvas.coords(image_tuyaux2,288+28,H)
canvas.move(image_tuyaux2,-5,0)
canvas.after(40,deplacementT2)
#On importe les image du jeu
fond = PhotoImage(file="background-day.png")
fond2 = PhotoImage(file="background-night.png")
tuyaux = PhotoImage(file="tuyaux.png")
tuyaux2 = PhotoImage(file="tuyaux2.png")
sol = PhotoImage(file="sol-day.png")
sol2 = PhotoImage(file="sol-day-copy.png")
oiseau = PhotoImage(file="yellowbird-midflap.png")
oiseau2 = PhotoImage(file="bluebird-midflap.png")
oiseau3 = PhotoImage(file="redbird-midflap.png")
#On crée une liste comprenant les deux images des fonds du jeu.
fond=[fond,fond2]
#On définit F qui représente le choix aléatoire entre les deux valeurs de la liste "fond" c'est-à-dire une des deux images (nuit ou jour)
F= random.choice(fond)
#On refait la même chos epour les oiseaux
oiseau=[oiseau,oiseau2,oiseau3]
O=random.choice(oiseau)
# interface racine
#J'ai redéfinit la hauteur pour mettre 510 car le tuyau dépassait (peut-être une erreur à voir avant c'était 512)
#J'ai redéfinit la hauteur pour mettre 286 car le sol dépassait (peut-être une erreur à voir avant c'était 288)
canvas = Canvas(fenetre, width=286, height=510)
#On insère les images dans la fenêtre.
canvas.create_image(144,256, anchor=CENTER,image=F)
image_tuyaux = canvas.create_image(288+28,h,anchor=CENTER,image=tuyaux)
image_tuyaux2 = canvas.create_image(432+28+28,H,anchor=CENTER,image=tuyaux2)
image_sol = canvas.create_image(144,512, anchor=S,image=sol)
image_sol2 = canvas.create_image(432,512, anchor=S,image=sol2)
image_oiseau=canvas.create_image(67,244, anchor=S,image=O)
#On démarre les boucles des déplacements
deplacement()
deplacement1()
deplacement2()
deplacementT()
deplacementT2()
# On affiche le label dans la fenêtre
canvas.pack()
canvas.focus_set()
canvas.bind("<space>",sauter)
# On démarre la boucle Tkinter qui s'interompt quand on ferme la fenêtre
fenetre.mainloop() |
Partager