---
# System prepended metadata

title: Untitled

---

import pyxel, random

class App:

    def __init__(self):
        # taille de la fenetre 128x128 pixels
        # ne pas modifier
        pyxel.init(128, 128, title="Nuit du c0de 2022")
        self.x = 0
        self.y = 113
        
        # position initiale de sperman
        # (origine des positions : coin haut gauche)
        self.superman_x = 60
        self.superman_y = 60
        
        # initialisation des tirs
        self.tirs_liste = []

        # initialisation des ennemis
        self.ennemis_liste = []

        
        # vies
        self.vies = 3
        
        #points
        self.points = 0
        
          

        pyxel.run(self.update, self.draw)
    
    def superman_deplacement(self):
        """déplacement avec les touches de directions"""

        if pyxel.btn(pyxel.KEY_RIGHT) and self.superman_x<120:
            self.superman_x += 1
        if pyxel.btn(pyxel.KEY_LEFT) and self.superman_x>0:
            self.superman_x += -1
        if pyxel.btn(pyxel.KEY_DOWN) and self.superman_y<120:
            self.superman_y += 1
        if pyxel.btn(pyxel.KEY_UP) and self.superman_y>0:
            self.superman_y += -1
    
    def tirs(self):
        """tir avec la barre d'espace"""

        if pyxel.btnr(pyxel.KEY_SPACE):
            self.tirs_liste.append([self.superman_x+4, self.superman_y-4])
    
    def deplacement_de_tirs(self):
        """déplacement des tirs vers le haut"""

        for tir in  self.tirs_liste:
            tir[1] -= 1
            if  tir[1]<-8:
                self.tirs_liste.remove(tir)
                
    def ennemis(self):
        """création aléatoire des ennemis"""

        # un ennemi par seconde
        if (pyxel.frame_count % 50 == 0):
            self.ennemis_liste.append([random.randint(0, 120), 0])


    def deplacement_des_ennemis(self):
        """déplacement des ennemis vers le haut et suppression s'ils sortent du cadre"""              

        for ennemi in self.ennemis_liste:
            ennemi[1] += 1
            if  ennemi[1]>128:
                self.ennemis_liste.remove(ennemi)
                 
            
    def terre_suppression(self):
         """disparition de la Terre  si contact avec un ennemi"""

         for ennemi in self.ennemis_liste:
             if ennemi[0] <= self.x+13 and ennemi[1] <= self.y+13 and ennemi[0]+6 >= self.x and ennemi[1]+6 >= self.y:
                 self.ennemis_liste.remove(ennemi)
                 self.vies = self.vies - 1                    


    def ennemis_suppression_avec_tir(self):
         """disparition d'un ennemi et d'un tir si contact"""

         for ennemi in self.ennemis_liste:
             for tir in self.tirs_liste:
                 if ennemi[0] <= tir[0]+1 and ennemi[0]+8 >= tir[0] and ennemi[1]+8 >= tir[1]:
                     self.ennemis_liste.remove(ennemi)
                     self.tirs_liste.remove(tir)
                     self.points +=1
 
    def ennemis_suppression_avec_contactS(self):
         """disparition d'un ennemi avec contact"""

         for ennemi in self.ennemis_liste:
             if ennemi[0] <= self.superman_x+7 and ennemi[1] <= self.superman_y+7 and ennemi[0]+7 >= self.superman_x and ennemi[1]+7 >= self.superman_y:
                 self.ennemis_liste.remove(ennemi)
                 self.points +=2
   
    # =====================================================
    # == UPDATE
    # =====================================================
    def update(self):
        self.x = (self.x - 0.5) % pyxel.width
        # deplacement de superman
        self.superman_deplacement()
        
        # creation des tirs
        self.tirs()

        # mise a jour des positions des tirs
        self.deplacement_de_tirs()
        
        # creation des ennemis
        self.ennemis()

        # mise a jour des positions des ennemis
        self.deplacement_des_ennemis()
        
        # suppression des ennemis et tirs si contact
        self.ennemis_suppression_avec_tir()
        
        # suppression du vaisseau et ennemi si contact
        self.ennemis_suppression_avec_contactS()


        # suppression du vaisseau et ennemi si contact
        self.terre_suppression()
        
      



    
    # =====================================================
    # == DRAW
    # =====================================================
    def draw(self):
        
        # vide la fenetre
        pyxel.cls(0)
        
        # si le vaisseau possede des vies le jeu continue
        if self.vies > 0:
            
            # affichage des vies            
            pyxel.text(5,5, 'VIES:'+ str(self.vies), 7)
            
            #affichage des points
            pyxel.text(5,15, 'POINTS:'+ str(self.points), 7)

        
            #Terre
            pyxel.rect(self.x, self.y, 15, 15, 3)
        
            #Superman
            pyxel.rect(self.superman_x, self.superman_y, 8, 8, 1)
        
            # tirs
            for tir in self.tirs_liste:
                pyxel.rect(tir[0], tir[1], 1, 4, 10)   
            
            # ennemis
            for ennemi in self.ennemis_liste:
                pyxel.rect(ennemi[0], ennemi[1], 8, 8, 8)   
                
          
                
        # sinon: GAME OVER
        else:

            pyxel.text(50,64, 'GAME OVER', 7)
        
        


def lanceApp():
    mafenetre.destroy()
    App()
    






mafenetre = Tk ()
mafenetre.title('SAVE THE EARTH')
mafenetre.geometry('1100x600')
mafenetre ['bg'] = 'black'



labell = Label(mafenetre,text='2063...En Plein été...Tout semble bien se dérouler sur Terre...Tout...??? \n Les terriens ne se doutent de rien mais une grande pluie de météorite se dirige droit sur notre Terre !!! \n Notre monde est...Sans espoir. NE PARLONS PAS TROP VITE !!!Superman arrive, pour tous nous sauver !', fg = 'white',bg ='black')
labell['font']= ('Arial', 16,'bold')
label2 = Label (mafenetre,text="Deplacez et aidez Superman à l'aide des flèches du clavier pour tenter de \n sauver la Terre! Pour cela, appuyez sur espace pour tirer des lasers de ses yeux ou foncez sur les météorites \n pour les détruire afin de sauver notre monde ! \n L'avenir de la Terre est entre tes mains désormais...", fg = 'white',bg ='black')
label2['font']= ('Times', '16', 'bold italic')
label3 = Label(mafenetre,text='SAVE THE EARTH', fg="blue",bg="black")
label3['font']= ('Arial', 30,'bold')
labell.place(x=0, y=50)
label2.place(x=50,y=200)
label3.place(x=350,y=500)
bouton1 = Button (mafenetre, text='START', width=20,height=4, command=lanceApp ,bg = "gray",fg = "purple")
bouton1.place(x=200,y=400)
bouton2 = Button (mafenetre, text='QUITTER', command=mafenetre.destroy, width=20,height=4,bg = "gray",fg = "purple")
bouton2.place(x=800,y=400)




  
mafenetre.mainloop()
    
