Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #label bergamnn_deruaz
- from tkinter import *
- import time
- import math
- import random
- class vaisseau:
- def deplacement(self):
- global x,y,image
- if image == 0 and y>5:
- can1.coords(item0, x, y-10)
- can1.coords(item1, x, y-10)
- can1.coords(item2, x, y-10)
- can1.coords(item3, x, y-10)
- can1.coords(item4, x, y-10)
- can1.coords(item5, x, y-10)
- can1.coords(item6, x, y-10)
- can1.coords(item7, x, y-10)
- can1.coords(item8, x, y-10)
- can1.coords(item9, x, y-10)
- can1.coords(item10, x, y-10)
- can1.coords(item11, x, y-10)
- y = y-10
- elif image == 1 and x>2 and y>4:
- can1.coords(item0, x-4, y-8)
- can1.coords(item1, x-4, y-8)
- can1.coords(item2, x-4, y-8)
- can1.coords(item3, x-4, y-8)
- can1.coords(item4, x-4, y-8)
- can1.coords(item5, x-4, y-8)
- can1.coords(item6, x-4, y-8)
- can1.coords(item7, x-4, y-8)
- can1.coords(item8, x-4, y-8)
- can1.coords(item9, x-4, y-8)
- can1.coords(item10, x-4, y-8)
- can1.coords(item11, x-4, y-8)
- x,y = x-4,y-8
- elif image == 2 and x>4 and y>2:
- can1.coords(item0, x-8, y-4)
- can1.coords(item1, x-8, y-4)
- can1.coords(item2, x-8, y-4)
- can1.coords(item3, x-8, y-4)
- can1.coords(item4, x-8, y-4)
- can1.coords(item5, x-8, y-4)
- can1.coords(item6, x-8, y-4)
- can1.coords(item7, x-8, y-4)
- can1.coords(item8, x-8, y-4)
- can1.coords(item9, x-8, y-4)
- can1.coords(item10, x-8, y-4)
- can1.coords(item11, x-8, y-4)
- x,y = x-8,y-4
- elif image == 3 and x>5:
- can1.coords(item0, x-10, y)
- can1.coords(item1, x-10, y)
- can1.coords(item2, x-10, y)
- can1.coords(item3, x-10, y)
- can1.coords(item4, x-10, y)
- can1.coords(item5, x-10, y)
- can1.coords(item6, x-10, y)
- can1.coords(item7, x-10, y)
- can1.coords(item8, x-10, y)
- can1.coords(item9, x-10, y)
- can1.coords(item10, x-10, y)
- can1.coords(item11, x-10, y)
- x = x-5
- elif image == 4 and x>4 and y<596:
- can1.coords(item0, x-8, y+4)
- can1.coords(item1, x-8, y+4)
- can1.coords(item2, x-8, y+4)
- can1.coords(item3, x-8, y+4)
- can1.coords(item4, x-8, y+4)
- can1.coords(item5, x-8, y+4)
- can1.coords(item6, x-8, y+4)
- can1.coords(item7, x-8, y+4)
- can1.coords(item8, x-8, y+4)
- can1.coords(item9, x-8, y+4)
- can1.coords(item10, x-8, y+4)
- can1.coords(item11, x-8, y+4)
- x,y = x-8,y+4
- elif image == 5 and x>2 and y<596:
- can1.coords(item0, x-4, y+8)
- can1.coords(item1, x-4, y+8)
- can1.coords(item2, x-4, y+8)
- can1.coords(item3, x-4, y+8)
- can1.coords(item4, x-4, y+8)
- can1.coords(item5, x-4, y+8)
- can1.coords(item6, x-4, y+8)
- can1.coords(item7, x-4, y+8)
- can1.coords(item8, x-4, y+8)
- can1.coords(item9, x-4, y+8)
- can1.coords(item10, x-4, y+8)
- can1.coords(item11, x-4, y+8)
- x,y = x-4,y+8
- elif image == 6 and y<595:
- can1.coords(item0, x, y+10)
- can1.coords(item1, x, y+10)
- can1.coords(item2, x, y+10)
- can1.coords(item3, x, y+10)
- can1.coords(item4, x, y+10)
- can1.coords(item5, x, y+10)
- can1.coords(item6, x, y+10)
- can1.coords(item7, x, y+10)
- can1.coords(item8, x, y+10)
- can1.coords(item9, x, y+10)
- can1.coords(item10, x, y+10)
- can1.coords(item11, x, y+10)
- y = y+10
- elif image == 7 and x<798 and y<596:
- can1.coords(item0, x+4, y+8)
- can1.coords(item1, x+4, y+8)
- can1.coords(item2, x+4, y+8)
- can1.coords(item3, x+4, y+8)
- can1.coords(item4, x+4, y+8)
- can1.coords(item5, x+4, y+8)
- can1.coords(item6, x+4, y+8)
- can1.coords(item7, x+4, y+8)
- can1.coords(item8, x+4, y+8)
- can1.coords(item9, x+4, y+8)
- can1.coords(item10, x+4, y+8)
- can1.coords(item11, x+4, y+8)
- x,y = x+4,y+8
- elif image == 8 and x<796 and y<598:
- can1.coords(item0, x+8, y+4)
- can1.coords(item1, x+8, y+4)
- can1.coords(item2, x+8, y+4)
- can1.coords(item3, x+8, y+4)
- can1.coords(item4, x+8, y+4)
- can1.coords(item5, x+8, y+4)
- can1.coords(item6, x+8, y+4)
- can1.coords(item7, x+8, y+4)
- can1.coords(item8, x+8, y+4)
- can1.coords(item9, x+8, y+4)
- can1.coords(item10, x+8, y+4)
- can1.coords(item11, x+8, y+4)
- x,y = x+8,y+4
- elif image == 9 and x<795:
- can1.coords(item0, x+10, y)
- can1.coords(item1, x+10, y)
- can1.coords(item2, x+10, y)
- can1.coords(item3, x+10, y)
- can1.coords(item4, x+10, y)
- can1.coords(item5, x+10, y)
- can1.coords(item6, x+10, y)
- can1.coords(item7, x+10, y)
- can1.coords(item8, x+10, y)
- can1.coords(item9, x+10, y)
- can1.coords(item10, x+10, y)
- can1.coords(item11, x+10, y)
- x = x+10
- elif image == 10 and x<796 and y>2:
- can1.coords(item0, x+8, y-4)
- can1.coords(item1, x+8, y-4)
- can1.coords(item2, x+8, y-4)
- can1.coords(item3, x+8, y-4)
- can1.coords(item4, x+8, y-4)
- can1.coords(item5, x+8, y-4)
- can1.coords(item6, x+8, y-4)
- can1.coords(item7, x+8, y-4)
- can1.coords(item8, x+8, y-4)
- can1.coords(item9, x+8, y-4)
- can1.coords(item10, x+8, y-4)
- can1.coords(item11, x+8, y-4)
- x,y = x+8,y-4
- elif image == 11 and x<798 and y>4:
- can1.coords(item0, x+4, y-8)
- can1.coords(item1, x+4, y-8)
- can1.coords(item2, x+4, y-8)
- can1.coords(item3, x+4, y-8)
- can1.coords(item4, x+4, y-8)
- can1.coords(item5, x+4, y-8)
- can1.coords(item6, x+4, y-8)
- can1.coords(item7, x+4, y-8)
- can1.coords(item8, x+4, y-8)
- can1.coords(item9, x+4, y-8)
- can1.coords(item10, x+4, y-8)
- can1.coords(item11, x+4, y-8)
- x,y = x+4,y-8
- def angle_v(self,direction):
- global image
- if direction == 1:
- if image == 0:
- can1.itemconfigure(item0,state = HIDDEN)
- can1.itemconfigure(item1,state = NORMAL)
- image = image + 1
- elif image == 1:
- can1.itemconfigure(item1,state = HIDDEN)
- can1.itemconfigure(item2,state = NORMAL)
- image = image + 1
- elif image == 2:
- can1.itemconfigure(item2,state = HIDDEN)
- can1.itemconfigure(item3,state = NORMAL)
- image = image + 1
- elif image == 3:
- can1.itemconfigure(item3,state = HIDDEN)
- can1.itemconfigure(item4,state = NORMAL)
- image = image + 1
- elif image == 4:
- can1.itemconfigure(item4,state = HIDDEN)
- can1.itemconfigure(item5,state = NORMAL)
- image = image + 1
- elif image == 5:
- can1.itemconfigure(item5,state = HIDDEN)
- can1.itemconfigure(item6,state = NORMAL)
- image = image + 1
- elif image == 6:
- can1.itemconfigure(item6,state = HIDDEN)
- can1.itemconfigure(item7,state = NORMAL)
- image = image + 1
- elif image == 7:
- can1.itemconfigure(item7,state = HIDDEN)
- can1.itemconfigure(item8,state = NORMAL)
- image = image + 1
- elif image == 8:
- can1.itemconfigure(item8,state = HIDDEN)
- can1.itemconfigure(item9,state = NORMAL)
- image = image + 1
- elif image == 9:
- can1.itemconfigure(item9,state = HIDDEN)
- can1.itemconfigure(item10,state = NORMAL)
- image = image + 1
- elif image == 10:
- can1.itemconfigure(item10,state = HIDDEN)
- can1.itemconfigure(item11,state = NORMAL)
- image = image + 1
- elif image == 11:
- can1.itemconfigure(item11,state = HIDDEN)
- can1.itemconfigure(item0,state = NORMAL)
- image = 0
- elif direction == 0:
- if image == 0:
- can1.itemconfigure(item0,state = HIDDEN)
- can1.itemconfigure(item11,state = NORMAL)
- image = 11
- elif image == 11:
- can1.itemconfigure(item11,state = HIDDEN)
- can1.itemconfigure(item10,state = NORMAL)
- image = image - 1
- elif image == 10:
- can1.itemconfigure(item10,state = HIDDEN)
- can1.itemconfigure(item9,state = NORMAL)
- image = image - 1
- elif image == 9:
- can1.itemconfigure(item9,state = HIDDEN)
- can1.itemconfigure(item8,state = NORMAL)
- image = image - 1
- elif image == 8:
- can1.itemconfigure(item8,state = HIDDEN)
- can1.itemconfigure(item7,state = NORMAL)
- image = image - 1
- elif image == 7:
- can1.itemconfigure(item7,state = HIDDEN)
- can1.itemconfigure(item6,state = NORMAL)
- image = image - 1
- elif image == 6:
- can1.itemconfigure(item6,state = HIDDEN)
- can1.itemconfigure(item5,state = NORMAL)
- image = image - 1
- elif image == 5:
- can1.itemconfigure(item5,state = HIDDEN)
- can1.itemconfigure(item4,state = NORMAL)
- image = image - 1
- elif image == 4:
- can1.itemconfigure(item4,state = HIDDEN)
- can1.itemconfigure(item3,state = NORMAL)
- image = image - 1
- elif image == 3:
- can1.itemconfigure(item3,state = HIDDEN)
- can1.itemconfigure(item2,state = NORMAL)
- image = image - 1
- elif image == 2:
- can1.itemconfigure(item2,state = HIDDEN)
- can1.itemconfigure(item1,state = NORMAL)
- image = image - 1
- elif image == 1:
- can1.itemconfigure(item1,state = HIDDEN)
- can1.itemconfigure(item0,state = NORMAL)
- image = 0
- print(image)
- def tirer(self):
- global missilex,missiley,img_missile
- can1.itemconfigure(missile,state = NORMAL)
- if img_missile == 0:
- can1.coords(missile,missilex,missiley,missilex,missiley-15)
- missiley = missiley-15
- if img_missile == 1:
- can1.coords(missile,missilex,missiley,missilex-6,missiley-12)
- missilex = missilex-6
- missiley = missiley-12
- if img_missile == 2:
- can1.coords(missile,missilex,missiley,missilex-12,missiley-6)
- missilex = missilex-12
- missiley = missiley-6
- if img_missile == 3:
- can1.coords(missile,missilex,missiley,missilex-15,missiley)
- missilex = missilex-15
- if img_missile == 4:
- can1.coords(missile,missilex,missiley,missilex-12,missiley+6)
- missilex = missilex-12
- missiley = missiley+6
- if img_missile == 5:
- can1.coords(missile,missilex,missiley,missilex-6,missiley+1)
- missilex = missilex-6
- missiley = missiley+12
- if img_missile == 6:
- can1.coords(missile,missilex,missiley,missilex,missiley+15)
- missiley = missiley+15
- if img_missile == 7:
- can1.coords(missile,missilex,missiley,missilex+6,missiley+12)
- missilex = missilex+6
- missiley = missiley+12
- if img_missile == 8:
- can1.coords(missile,missilex,missiley,missilex+12,missiley+6)
- missilex = missilex+12
- missiley = missiley+6
- if img_missile == 9:
- can1.coords(missile,missilex,missiley,missilex+15,missiley)
- missilex = missilex+15
- if img_missile == 10:
- can1.coords(missile,missilex,missiley,missilex+12,missiley-6)
- missilex = missilex+12
- missiley = missiley-6
- if img_missile == 11:
- can1.coords(missile,missilex,missiley,missilex+6,missiley-12)
- missilex = missilex+6
- missiley = missiley-12
- vaisseau = vaisseau()
- ##Initialisation de la page
- fen=Tk()
- fen.title('Asteroids Game')
- can1=Canvas(fen,bg='black',height='600',width='800')
- ##Variable
- x,y = 400,300
- image = 0
- imagetemp = 0
- item = ""
- img_missile = image
- missilex = x
- missiley = y
- asteroid1 = True
- asteroid2 = True
- score_jeu = 0
- ##Asteroids
- LARGEUR = 800
- HAUTEUR = 600
- RAYON = 40 # rayon de l asteroid
- RAYON2 =15 # rayon des petits asteroids
- etape=0
- def aleatoire():
- global X,Y,X1,X2,Y1,Y2,vitesseG,vitesseP,angle,angle2,DX,DY,DX1,DX2,DY1,DY2
- # position initiale aléatoire
- X = random.randint(0,LARGEUR)/2
- Y = random.randint(0,HAUTEUR)/2
- X1,X2,Y1,Y2 = X,X,Y,Y
- # direction initiale aléatoire
- vitesseG = random.uniform(1.8,2)*4
- vitesseP = random.uniform(1.8,2)*5
- angle = random.uniform(0,2*math.pi)
- angle2 = random.uniform(0,2*math.pi)
- DX = vitesseG*math.cos(angle)
- DY = vitesseG*math.sin(angle)
- DX1,DX2,DY1,DY2 = DX,vitesseP*math.cos(angle2),DY,vitesseP*math.sin(angle2)
- class asteroids:
- def deplacement_asteroids1(self):
- """ Déplacement de la balle """
- global X,Y,DX,DY,RAYON,LARGEUR,HAUTEUR
- # rebond à droite
- if X+RAYON+DX > LARGEUR:
- X = 2*(LARGEUR-RAYON)-X
- DX = -DX
- # rebond à gauche
- if X-RAYON+DX < 0:
- X = 2*RAYON-X
- DX = -DX
- # rebond en bas
- if Y+RAYON+DY > HAUTEUR:
- Y = 2*(HAUTEUR-RAYON)-Y
- DY = -DY
- # rebond en haut
- if Y-RAYON+DY < 0:
- Y = 2*RAYON-Y
- DY = -DY
- X = X+DX
- Y = Y+DY
- X1,X2 = X,X
- Y1,Y2= Y,Y
- # affichage
- can1.coords(Balle,X,Y)
- # mise à jour toutes les 30 ms
- def deplacement_asteroids2(self):
- """ Déplacement de la balle """
- global X1,Y1,DX1,DY1,RAYON2,LARGEUR,HAUTEUR
- # rebond à droite
- if X1+RAYON2+DX1 > LARGEUR:
- X1 = 2*(LARGEUR-RAYON2)-X1
- DX1 = -DX1
- # rebond à gauche
- if X1-RAYON2+DX1 < 0:
- X1 = 2*RAYON2-X1
- DX1 = -DX1
- # rebond en bas
- if Y1+RAYON2+DY1 > HAUTEUR:
- Y1 = 2*(HAUTEUR-RAYON2)-Y1
- DY1 = -DY1
- # rebond en haut
- if Y1-RAYON2+DY1 < 0:
- Y1 = 2*RAYON2-Y1
- DY1 = -DY1
- X1 = X1+DX1
- Y1 = Y1+DY1
- # affichage
- can1.coords(Balle1,X1,Y1)
- # mise à jour toutes les 30 ms
- def deplacement_asteroids3(self):
- """ Déplacement de la balle """
- global X2,Y2,DX2,DY2,RAYON2,LARGEUR,HAUTEUR
- # rebond à droite
- if X2+RAYON2+DX2 > LARGEUR:
- X2 = 2*(LARGEUR-RAYON2)-X2
- DX2 = -DX2
- # rebond à gauche
- if X2-RAYON2+DX2 < 0:
- X2 = 2*RAYON2-X2
- DX2 = -DX2
- # rebond en bas
- if Y2+RAYON2+DY2 > HAUTEUR:
- Y2 = 2*(HAUTEUR-RAYON2)-Y2
- DY2 = -DY2
- # rebond en haut
- if Y2-RAYON2+DY2 < 0:
- Y2 = 2*RAYON2-Y2
- DY2 = -DY2
- X2 = X2+DX2
- Y2 = Y2+DY2
- # affichage
- can1.coords(Balle2,X2,Y2)
- # mise à jour toutes les 30 ms
- def win():
- global etape,touche,touche1,asteroid1,asteroid2,score_jeu
- if etape == 0:
- touche=can1.find_overlapping(X-RAYON,Y-RAYON,X+RAYON,Y+RAYON)
- print (touche)
- elif etape == 1:
- touche=can1.find_overlapping(X1-RAYON2,Y1-RAYON2,X1+RAYON2,Y1+RAYON2)
- touche1=can1.find_overlapping(X2-RAYON2,Y2-RAYON2,X2+RAYON2,Y2+RAYON2)
- print("/")
- print (touche)
- print (touche1)
- elif etape == 2:
- touche1=can1.find_overlapping(X2-RAYON2,Y2-RAYON2,X2+RAYON2,Y2+RAYON2)
- print("//")
- print (touche1)
- elif etape == 3:
- touche=can1.find_overlapping(X1-RAYON2,Y1-RAYON2,X1+RAYON2,Y1+RAYON2)
- print("///")
- print (touche)
- print(score_jeu)
- if (etape==0) and( touche==(1,13) or touche==(2,13) or touche==(3,13) or touche==(4,13) or touche==(5,13) or touche==(6,13) or touche==(7,13) or touche==(8,13) or touche==(9,13) or touche==(10,13) or touche==(11,13) or touche==(12,13)):
- fen.destroy()
- score(score_jeu)
- elif (etape == 1 or etape == 3) and( touche==(1,14) or touche==(2,14) or touche==(3,14) or touche==(4,14) or touche==(5,14) or touche==(6,14) or touche==(7,14) or touche==(8,14) or touche==(9,14) or touche==(10,14) or touche==(11,14) or touche==(12,14)):
- fen.destroy()
- elif (etape == 1 or etape == 2) and( touche1==(1,15) or touche1==(2,15) or touche1==(3,15) or touche1==(4,15) or touche1==(5,15) or touche1==(6,15) or touche1==(7,15) or touche1==(8,15) or touche1==(9,15) or touche1==(10,15) or touche1==(11,15) or touche1==(12,15)):
- fen.destroy()
- elif touche==(13,16) and etape == 0:
- can1.itemconfigure(Balle,state = HIDDEN)
- can1.itemconfigure(Balle1,state = NORMAL)
- can1.itemconfigure(Balle2,state = NORMAL)
- asteroids.deplacement_asteroids2()
- asteroids.deplacement_asteroids3()
- fen.after(30,win)
- etape = 1
- print("etape=1")
- score_jeu += 1
- elif touche == (14,16) and (etape == 1 or etape == 3):
- fen.after(31,asteroids.deplacement_asteroids3)
- can1.itemconfigure(Balle1,state = HIDDEN)
- fen.after(30,win)
- print("O")
- etape = 2
- score_jeu += 1
- asteroid2 = False
- elif (etape == 1 or etape == 2) and touche1 == (15,16) :
- fen.after(31,asteroids.deplacement_asteroids2)
- can1.itemconfigure(Balle2,state = HIDDEN)
- fen.after(30,win)
- print("X")
- etape = 3
- score_jeu += 1
- asteroid1 = False
- elif asteroid1 == False and asteroid2 == False:
- etape = 0
- asteroid1 = True
- asteroid2 = True
- aleatoire()
- can1.itemconfigure(Balle,state = NORMAL)
- fen.after(30,win)
- elif etape == 0:
- fen.after(30,asteroids.deplacement_asteroids1)
- fen.after(30,win)
- elif etape == 1:
- fen.after(30,asteroids.deplacement_asteroids2)
- fen.after(31,asteroids.deplacement_asteroids3)
- fen.after(30,win)
- elif etape == 2:
- fen.after(31,asteroids.deplacement_asteroids3)
- fen.after(30,win)
- elif etape == 3:
- fen.after(31,asteroids.deplacement_asteroids2)
- fen.after(30,win)
- fen.after(50,vaisseau.tirer)
- ##fenetre score
- def score(score_jeu):
- score=Tk()
- score.title('Votre score est :')
- score_aff=StringVar()
- score_char = str(score_jeu)
- score_aff.set(score_char)
- saisie0=Label(textvariable=score_aff, width=30)
- saisie0.pack()
- score.mainloop()
- ##Commande
- def gauche(event):
- vaisseau.angle_v(1)
- def droite(event):
- vaisseau.angle_v(0)
- def haut(event):
- vaisseau.deplacement()
- def bas(event):
- global img_missile,missilex,missiley
- img_missile = image
- missilex = x
- missiley = y
- vaisseau.tirer()
- aleatoire()
- score
- ##toute les images
- faucon_0 = PhotoImage(file="Faucon/faucon_0.png")
- item0 = can1.create_image(400, 300, image=faucon_0,state = NORMAL)
- faucon_1 = PhotoImage(file="Faucon/faucon_1.png")
- item1 = can1.create_image(400, 300, image=faucon_1,state = HIDDEN)
- faucon_2 = PhotoImage(file="Faucon/faucon_2.png")
- item2 = can1.create_image(400, 300, image=faucon_2,state = HIDDEN)
- faucon_3 = PhotoImage(file="Faucon/faucon_3.png")
- item3 = can1.create_image(400, 300, image=faucon_3,state = HIDDEN)
- faucon_4 = PhotoImage(file="Faucon/faucon_4.png")
- item4 = can1.create_image(400, 300, image=faucon_4,state = HIDDEN)
- faucon_5 = PhotoImage(file="Faucon/faucon_5.png")
- item5 = can1.create_image(400, 300, image=faucon_5,state = HIDDEN)
- faucon_6 = PhotoImage(file="Faucon/faucon_6.png")
- item6 = can1.create_image(400, 300, image=faucon_6,state = HIDDEN)
- faucon_7 = PhotoImage(file="Faucon/faucon_7.png")
- item7 = can1.create_image(400, 300, image=faucon_7,state = HIDDEN)
- faucon_8 = PhotoImage(file="Faucon/faucon_8.png")
- item8 = can1.create_image(400, 300, image=faucon_8,state = HIDDEN)
- faucon_9 = PhotoImage(file="Faucon/faucon_9.png")
- item9 = can1.create_image(400, 300, image=faucon_9,state = HIDDEN)
- faucon_10 = PhotoImage(file="Faucon/faucon_10.png")
- item10 = can1.create_image(400, 300, image=faucon_10,state = HIDDEN)
- faucon_11 = PhotoImage(file="Faucon/faucon_11.png")
- item11 = can1.create_image(400, 300, image=faucon_11,state = HIDDEN)
- asteroid80 = PhotoImage(file="asteroid80.png")
- Balle = can1.create_image(80, 80, image=asteroid80,state = NORMAL)
- can1.coords(Balle, X, Y)
- asteroid30 = PhotoImage(file="asteroid30.png")
- Balle1 = can1.create_image(30, 30, image=asteroid30,state = HIDDEN)
- can1.coords(Balle1, X, Y)
- Balle2 = can1.create_image(30, 30, image=asteroid30,state = HIDDEN)
- can1.coords(Balle2, X, Y)
- missile = can1.create_line(x,y,x,y,width=5,fill='green', state=HIDDEN)
- asteroids= asteroids()
- can1.pack()
- asteroids.deplacement_asteroids1()
- fen.after(30,win)
- fen.bind("<Left>",gauche)
- fen.bind("<Right>",droite)
- fen.bind("<Up>",haut)
- fen.bind("<Key>",bas)
- fen.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement