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
| """L'interface graphique avec Tkinter.
On crée une fenêtre constitué du fond du jeu et où les obstabcles/sol défilent...
"""
# 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 va permettre de définir des variables globales que l'on va utiliser dans des fonctions par exemple.
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 = 256
#h minimum = 505
#distance entre les tuyaux vaut 100 pixels
#Les tuyaux se superposent aussi de 141 pixels à cause de leur emplacment initial
#Donc si H est la hauteur du tuyau pointant vers le bas, on enlève 241 pixel à h
h = randint(256,505)
H = h-241
h2 = randint(256,505)
H2 = h-241
# 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 le sol)
def deplacement():
#On commence par associer les coordonnées de l'image à img_coords
img_coords=canvas.coords(image_sol)
# On associe ensuite la largeur de l'image à img_width
img_width=sol.width()
#Le chiffre 144 correspond au X de l'image et permet de le déplacer en entier (je crois)
if img_coords[0]+img_width >= 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,deplacement)
else:
img_coords=canvas.coords(image_sol,144,512)
canvas.move(image_sol,-5,0)
canvas.after (40,deplacement)
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 deplacementTH():
img_coords_tuyau_haut=canvas.coords(image_tuyau_haut)
img_width_tuyau_haut=tuyau_haut.width()
#Plus le chiffre est faible, plus le tuyau se déplace vers le droite.
if img_coords_tuyau_haut[0]+img_width_tuyau_haut >= 288-28:
canvas.move(image_tuyau_haut,-5,0)
canvas.after(40,deplacementTH)
else:
img_coords_tuyau_haut=canvas.coords(image_tuyau_haut,288+28,h)
canvas.move(image_tuyau_haut,-5,0)
canvas.after(40,deplacementTH)
def deplacementTB():
img_coords_tuyau_bas=canvas.coords(image_tuyau_bas)
img_width_tuyau_bas=tuyau_bas.width()
if img_coords_tuyau_bas[0]+img_width_tuyau_bas >= 288-28:
canvas.move(image_tuyau_bas,-5,0)
canvas.after(40,deplacementTB)
else:
img_coords_tuyau_bas=canvas.coords(image_tuyau_bas,288+28,H)
canvas.move(image_tuyau_bas,-5,0)
canvas.after(40,deplacementTB)
#On importe les image du jeu
fond = PhotoImage(file="background-day.png")
fond2 = PhotoImage(file="background-night.png")
tuyau_haut = PhotoImage(file="tuyau_vers_le_haut.png")
tuyau_bas = PhotoImage(file="tuyau_vers_le_bas.png")
sol = PhotoImage(file="sol-day.png")
sol2 = PhotoImage(file="sol-day-copy.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)
# 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_tuyau_haut = canvas.create_image(288+28,h,anchor=CENTER,image=tuyau_haut)
image_tuyau_bas = canvas.create_image(288+28,H,anchor=CENTER,image=tuyau_bas)
image_sol = canvas.create_image(144,512, anchor=S,image=sol)
image_sol2 = canvas.create_image(432,512, anchor=S,image=sol2)
#On démarre les boucles deplacement et deplacement 2
deplacement()
deplacement2()
deplacementTH()
deplacementTB()
# On affiche le label dans la fenêtre
canvas.pack()
# On démarre la boucle Tkinter qui s'interompt quand on ferme la fenêtre
fenetre.mainloop() |
Partager