Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide compréhension

    18 mai 2014 à 22:46:59

    #Lorsque les missiles touchent le vaisseau ennemi ils le detruisent
                if position_missile[0]+3 > position_vaisseauX[0]+99 and position_missile[0]-3 < position_vaisseauX[0]+126 and position_missile[1] > position_vaisseauX[1] + 35 and position_missile[1] < position_vaisseauX[1]+153 :
                    explosion()
                    score = (serie * 100) + score
                if position_missile[0]+3 > position_vaisseauX[0]+127 and position_missile[0]-3 < position_vaisseauX[0]+182 and position_missile[1] > position_vaisseauX[1] + 23 and position_missile[1] < position_vaisseauX[1]+115 :
                    explosion()
                    score = (serie*100) + score
                if position_missile[0]+3 > position_vaisseauX[0]+42 and position_missile[0]-3 < position_vaisseauX[0]+98 and position_missile[1] > position_vaisseauX[1] + 23 and position_missile[1] < position_vaisseauX[1]+117 :
                    explosion()
                    score = (serie * 100) + score

            if (position_vaisseau[0]+60 > position_vaisseauX[0]+99 and position_vaisseau[0]+60 < position_vaisseauX[0]+126 )  and (position_vaisseau[1]+4 < position_vaisseauX[1] + 150 or position_vaisseau[1]+126 < position_vaisseauX[1]+153) :
                vie-=1
                explosionbis()
            if position_vaisseau[0]+60 > position_vaisseauX[0]+127 and position_vaisseau[0]+60 < position_vaisseauX[0]+182 and (position_vaisseau[1]+4 < position_vaisseauX[1] + 23 or position_vaisseau[1]+126 < position_vaisseauX[1]+115) :
                vie-=1
                explosionbis()
            if position_vaisseau[0]+60 > position_vaisseauX[0]+42 and position_vaisseau[0]+60 < position_vaisseauX[0]+99 and (position_vaisseau[1]+4 < position_vaisseauX[1] + 23 or position_vaisseau[1]+126 < position_vaisseauX[1]+117) :
                vie-=1
                explosionbis()

            if vie == 0 :
                vie = VIEMAX
                score = 0
                serie = 0
                Gameover()

    Quelqu'un peut m'expliquer cette partie d'algorithme sur l'explosion d'un vaisseau dans un jeu shoot'em up ?

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2014 à 22:47:58

      Je vous donne tout l'algo si quelqu'un a des explications 

      import pygame

      from pygame.locals import *


      import random
      import time

      #variables globales du programme
      LARGEUR = 1920 #1920
      HAUTEUR = 1080 #1080
      VIEMAX = 10
      SORTIR = 1
      a = 1


      pygame.init()

      #Definition de la fenetre
      fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR))
      fond1 = pygame.image.load("./Imgs/fondmenu.jpg").convert()
      fond2 = pygame.image.load("./Imgs/Pause.png").convert()
      fond2.set_colorkey((48,80,127))
      fond3 = pygame.image.load("./Imgs/Gameover.png").convert()
      screen = pygame.display.set_mode([LARGEUR,HAUTEUR])
      font=pygame.font.Font(None,30)

      #Integration du son
      volume = pygame.mixer.music.get_volume()
      pygame.mixer.music.set_volume(1)

      #Charger les credits
      def credits():
          FPS = 60

          pygame.init()
          clock = pygame.time.Clock()
          movie = pygame.movie.Movie('./vid/credits.MPG')
          pygame.mixer.music.load("./Son/credits.wav")
          pygame.mixer.music.play()
          screen = pygame.display.set_mode(movie.get_size())
          movie_screen = pygame.Surface(movie.get_size()).convert()

          movie.set_display(movie_screen)
          movie.play()


          playing = True
          while playing:
              for event in pygame.event.get():
                  if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                      pygame.quit()
                      exit()

              screen.blit(movie_screen,(0,0))
              pygame.display.update()
              clock.tick(FPS)


      #Charger les variables joueur
      vie = VIEMAX
      score = 0
      ex = 0
      exx = 0
      serie = 0

      #Charger menu
      def menu():
          global SORTIR
          loop1 = 1
          fenetre.blit(fond1, (0,0))
          pygame.mixer.music.load("./Son/menu.wav")
          pygame.mixer.music.play()
          pygame.display.flip()
          while loop1:
              for e in pygame.event.get():
                  if e.type == pygame.KEYDOWN and e.key == pygame.K_SPACE:
                      loop1 = 0
                      loop = 0
                      pygame.mixer.music.load("./Son/music.wav")    #Gestion Son
                      pygame.mixer.music.play()
                  if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE:
                      SORTIR = 0
                      pygame.quit()
                      exit()
                  if e.type == pygame.MOUSEBUTTONDOWN and e.pos[0] > 842  and e.pos[0] < 1122 and e.pos[1] > 743 and e.pos[1] < 835:
                      SORTIR = 0
                      pygame.quit()
                      exit()
                  if e.type == pygame.MOUSEBUTTONDOWN and e.pos[0] > 772 and e.pos[0] < 1175 and e.pos[1] > 606 and e.pos[1] < 705:
                      loop1 = 0
                      loop = 0
                      pygame.mixer.music.load("./Son/music.wav")    #Gestion Son
                      pygame.mixer.music.play()
                  if e.type == pygame.MOUSEBUTTONDOWN and e.pos[0] > 929  and e.pos[0] < 1035 and e.pos[1] > 903 and e.pos[1] < 930:
                      credits()

      menu()

      #Charger les fonctions explosion
      def explosion():
          global vaisseauXSpeedY
          global serie
          vaisseauXSpeedY +=1
          print(vaisseauXSpeedY)
          serie+= 1
          print(serie)
          position_exxplosion = exxplosion.get_rect()
          exxplosionx = position_vaisseauX[0] + 100 #Chargement des explosions du vaisseau sur x
          exxplosionty = position_vaisseauX[1] + 55
          position_exxplosion.center = (exxplosionx, exxplosionty)
          fenetre.blit(exxplosion, position_exxplosion)
          rand = random.randint(0,1920)
          position_vaisseauX.center = (rand, -157)
          position_missile.center = (3000, 3000)


      def explosionbis():
          global serie
          global vaisseauXSpeedY
          serie = 0
          print(serie)
          position_exxplosion = exxplosion.get_rect()
          exxplosionx = position_vaisseau[0] + 65
          exxplosionty = position_vaisseau[1] + 70
          position_exxplosion.center = (exxplosionx, exxplosionty)
          fenetre.blit(exxplosion, position_exxplosion)
          pygame.display.flip()
          for i in range(0,100):
              time.sleep(0.01)
          vaisseauXSpeedY = 5
          print(vaisseauXSpeedY)
          position_vaisseau.center = (LARGEUR/2-40, HAUTEUR - 60) #Recentrage du vaisseau après son explosion
          rand = random.randint(0, 1080)
          position_vaisseauX.center = (rand, -157)

      #Charger les tirs
      missiles = 0
      missile = pygame.image.load("./Imgs/missile.png").convert()
      missile.set_colorkey((0,255,255))

      #Charger la fonction Game Over
      def Gameover():
          fenetre.blit(fond3, (0,0))
          loop2 = 1
          pygame.mixer
          pygame.mixer.music.load("./Son/loose.wav")
          pygame.mixer.music.play()
          screen.blit(scoretext, (850, 550))
          pygame.display.flip()
          time.sleep(3)
          while loop2:
               for e in pygame.event.get():
                  if e.type == pygame.KEYDOWN and e.key == pygame.K_RETURN:
                      loop2 = 0
                      menu()

      #Preparation du fond apres le menu
      fond = pygame.image.load("./Imgs/fond.jpg").convert()

      #Import du vaisseau et transparence de fond
      vaisseau = pygame.image.load("./Imgs/Vaisseau final.png").convert()
      vaisseau.set_colorkey((0,255,255))

      #Placement et deplacement vaisseau
      position_vaisseau = vaisseau.get_rect()
      position_vaisseau.center = (LARGEUR/2-40, HAUTEUR - 60)
      fenetre.blit(vaisseau, position_vaisseau)

      #Import etoiles
      etoil1 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil2 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil3 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil4 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil5 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil6 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil7 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil8 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil9 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil10 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil11 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil12 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil13 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil14 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil15 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil16 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil17 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil18 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil19 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil20 = pygame.image.load("./Imgs/etoil.png").convert()
      etoil21 = pygame.image.load("./Imgs/etoil.png").convert()

      #Vaisseau ennemi
      vaisseauX = pygame.image.load("./Imgs/ennemi.png").convert() #import de l'image de l'ennemi.
      vaisseauX.set_colorkey((0,255,255))
      position_vaisseauX = vaisseauX.get_rect()
      rand = random.randint(0, 1440)
      position_vaisseauX.center = (rand, 0)
      vaisseauXSpeedY = 5
      exxplosion = pygame.image.load("./Imgs/Explosion.png").convert()
      exxplosion.set_colorkey((0,255,255))

      #Placement et deplacemnt etoile
      tabl = [10,106,202,298,394,490,586,682,778,874,970,1066,1162,1258,1354,1450,1548,1644,1740,1836] #Abscisses de chaque étoiles
      #(Il s'agit d'un tableau correspondant aux coordonnees de chaque etoile)
      position_etoil1 = etoil1.get_rect()
      position_etoil1.center = (tabl[0],0)
      fenetre.blit(etoil1, position_etoil1)
      position_etoil2 = etoil2.get_rect()
      position_etoil2.center = (tabl[1],HAUTEUR/2)
      fenetre.blit(etoil2, position_etoil2)
      position_etoil3 = etoil3.get_rect()
      position_etoil3.center = (tabl[2],0)
      fenetre.blit(etoil3,position_etoil3)
      position_etoil4 = etoil4.get_rect()
      position_etoil4.center = (tabl[3],HAUTEUR/2)
      fenetre.blit(etoil4, position_etoil4)
      position_etoil5 = etoil5.get_rect()
      position_etoil5.center = (tabl[4],0)
      fenetre.blit(etoil5, position_etoil5)
      position_etoil6 = etoil6.get_rect()
      position_etoil6.center = (tabl[5],HAUTEUR/2)
      fenetre.blit(etoil6, position_etoil6)
      position_etoil7 = etoil7.get_rect()
      position_etoil7.center = (tabl[6],0)
      fenetre.blit(etoil7, position_etoil7)
      position_etoil8 = etoil8.get_rect()
      position_etoil8.center = (tabl[7],HAUTEUR/2)
      fenetre.blit(etoil8, position_etoil8)
      position_etoil9 = etoil9.get_rect()
      position_etoil9.center = (tabl[8],0)
      fenetre.blit(etoil9, position_etoil9)
      position_etoil10 = etoil10.get_rect()
      position_etoil10.center = (tabl[9],HAUTEUR/2)
      fenetre.blit(etoil10, position_etoil10)
      position_etoil11 = etoil11.get_rect()
      position_etoil11.center = (tabl[10],0)
      fenetre.blit(etoil11, position_etoil11)
      position_etoil12 = etoil12.get_rect()
      position_etoil12.center = (tabl[11],HAUTEUR/2)
      fenetre.blit(etoil12, position_etoil12)
      position_etoil13 = etoil13.get_rect()
      position_etoil13.center = (tabl[12],0)
      fenetre.blit(etoil13, position_etoil13)
      position_etoil14 = etoil14.get_rect()
      position_etoil14.center = (tabl[13],HAUTEUR/2)
      fenetre.blit(etoil14, position_etoil14)
      position_etoil15 = etoil15.get_rect()
      position_etoil15.center = (tabl[14],0)
      fenetre.blit(etoil15, position_etoil15)
      position_etoil16 = etoil16.get_rect()
      position_etoil16.center = (tabl[15],HAUTEUR/2)
      fenetre.blit(etoil16, position_etoil16)
      position_etoil17 = etoil17.get_rect()
      position_etoil17.center = (tabl[16],0)
      fenetre.blit(etoil17, position_etoil17)
      position_etoil18 = etoil18.get_rect()
      position_etoil18.center = (tabl[17],HAUTEUR/2)
      fenetre.blit(etoil18, position_etoil18)
      position_etoil19 = etoil19.get_rect()
      position_etoil19.center = (tabl[18],0)
      fenetre.blit(etoil19, position_etoil19)
      position_etoil20 = etoil20.get_rect()
      position_etoil20.center = (tabl[19],HAUTEUR/2)
      fenetre.blit(etoil20, position_etoil20)

      #Charger la fonction pause
      def pause():
          global continuer
          loop = 1
          screen.blit(scoretext, (950, 450))
          fenetre.blit(fond2, (0,0))
          pygame.display.flip()
          pygame.mixer.music.set_volume(0.25)
          while loop:
                  for e in pygame.event.get():
                      if e.type == pygame.KEYDOWN and e.key == pygame.K_SPACE:
                          loop = 0 #Arrêt de la pause (valeur booléenne
                          pygame.mixer.music.set_volume(1)
                      if e.type == pygame.KEYDOWN and e.key == pygame.K_TAB:
                          score = 0
                          vie = VIEMAX
                          for i in range(0,100):
                              time.sleep(0.01)
                          pygame.mixer.music.set_volume(1)
                          loop = 0
                          continuer = 0

      #Rafraischissement de l'image pour afficher le jeu a la sortie du menu
      pygame.display.flip()
      pygame.key.set_repeat(1,1)


      #---------------------------------------------------------------------------------------------------------------------------------
      #Boucle infinie-------------------------------------------------------------------------------------------------------------------
      #---------------------------------------------------------------------------------------------------------------------------------

      continuer = 1
      while SORTIR:
          while continuer:
              time.sleep(0.01) #Ralentissement du jeu qui tourne trop vite sur mon pc

              missilex = position_vaisseau[0] + 65
              missiley = position_vaisseau[1] + 80

              if score >= a*10000:
                  global vie
                  global a
                  a = a+1
                  print(a)
                  vie += 1
                  print(vie)


          #Affichage score et vie
              scoretext=font.render("Score:"+str(score), 1,(255,255,255))
              vietext=font.render("Vie:"+str(vie), 1,(255,255,255))
              serietext=font.render("Serie: x"+str(serie), 1,(255,255,255))

          #Attente d'utilisation d'une touche
              for event in pygame.event.get():
                  if event.type == QUIT:
                      continuer = 0
                      for i in range(0,100):
                          time.sleep(0.01)
                  if event.type == KEYDOWN:
                      if event.key == K_RIGHT:
                          if position_vaisseau[0] < LARGEUR-60:
                              position_vaisseau = position_vaisseau.move(30,0)
                      if event.key == K_LEFT:
                          if position_vaisseau[0] > 0:
                              position_vaisseau = position_vaisseau.move(-30,0)
                      if event.key == pygame.K_RETURN:
                          pause()
                      if event.key == pygame.K_DOWN:
                          missiles = 1
                          position_missile = missile.get_rect()
                          position_missile.center = (missilex, missiley)
                      if event.key == pygame.K_ESCAPE:
                          for i in range(0,100):
                              time.sleep(0.01)
                          continuer = 0

          #Changement des positions des sprites
              position_vaisseauX.y += vaisseauXSpeedY
              position_etoil1 = position_etoil1.move(0,(30+serie)) #"serie" permet d'accéler la vitesse des étoiles
              position_etoil2 = position_etoil2.move(0,(15+serie))
              position_etoil3 = position_etoil3.move(0,(31+serie))
              position_etoil4 = position_etoil4.move(0,(25+serie))
              position_etoil5 = position_etoil5.move(0,(19+serie))
              position_etoil6 = position_etoil6.move(0,(35+serie))
              position_etoil7 = position_etoil7.move(0,(29+serie))
              position_etoil8 = position_etoil8.move(0,(16+serie))
              position_etoil9 = position_etoil9.move(0,(24+serie))
              position_etoil10 = position_etoil10.move(0,(21+serie))
              position_etoil11 = position_etoil11.move(0,(30+serie))
              position_etoil12 = position_etoil12.move(0,(15+serie))
              position_etoil13 = position_etoil13.move(0,(31+serie))
              position_etoil14 = position_etoil14.move(0,(25+serie))
              position_etoil15 = position_etoil15.move(0,(19+serie))
              position_etoil16 = position_etoil16.move(0,(35+serie))
              position_etoil17 = position_etoil17.move(0,(29+serie))
              position_etoil18 = position_etoil18.move(0,(16+serie))
              position_etoil19 = position_etoil19.move(0,(24+serie))
              position_etoil20 = position_etoil20.move(0,(21+serie))
              if missiles == 1:
                  position_missile = position_missile.move(0,-30)

          #Placement des sprites aux nouvelles coordonees
              fenetre.blit(fond, (0,0))
              fenetre.blit(etoil1, position_etoil1)
              fenetre.blit(etoil2, position_etoil2)
              fenetre.blit(etoil3, position_etoil3)
              fenetre.blit(etoil4, position_etoil4)
              fenetre.blit(etoil5, position_etoil5)
              fenetre.blit(etoil6, position_etoil6)
              fenetre.blit(etoil7, position_etoil7)
              fenetre.blit(etoil8, position_etoil8)
              fenetre.blit(etoil9, position_etoil9)
              fenetre.blit(etoil10, position_etoil10)
              fenetre.blit(etoil11, position_etoil11)
              fenetre.blit(etoil12, position_etoil12)
              fenetre.blit(etoil13, position_etoil13)
              fenetre.blit(etoil14, position_etoil14)
              fenetre.blit(etoil15, position_etoil15)
              fenetre.blit(etoil16, position_etoil16)
              fenetre.blit(etoil17, position_etoil17)
              fenetre.blit(etoil18, position_etoil18)
              fenetre.blit(etoil19, position_etoil19)
              fenetre.blit(etoil20, position_etoil20)
              fenetre.blit(vaisseau, position_vaisseau)
              screen.blit(scoretext, (50, 50))
              screen.blit(vietext, (1800, 50))
              screen.blit(serietext, (950, 50))
              fenetre.blit(vaisseauX, position_vaisseauX)
              if missiles == 1:
                  fenetre.blit(missile, position_missile)

          #Lorsque les etoiles sortent de l'ecran par le bas elle sont replacées en haut
              if position_etoil1[1] > HAUTEUR :
                      position_etoil1.center = (tabl[0],0)
              if position_etoil2[1] > HAUTEUR :
                      position_etoil2.center = (tabl[1],0)
              if position_etoil3[1] > HAUTEUR :
                      position_etoil3.center = (tabl[2],0)
              if position_etoil4[1] > HAUTEUR :
                      position_etoil4.center = (tabl[3],0)
              if position_etoil5[1] > HAUTEUR :
                      position_etoil5.center = (tabl[4],0)
              if position_etoil6[1] > HAUTEUR :
                      position_etoil6.center = (tabl[5],0)
              if position_etoil7[1] > HAUTEUR :
                      position_etoil7.center = (tabl[6],0)
              if position_etoil8[1] > HAUTEUR :
                      position_etoil8.center = (tabl[7],0)
              if position_etoil9[1] > HAUTEUR :
                      position_etoil9.center = (tabl[8],0)
              if position_etoil10[1] > HAUTEUR :
                      position_etoil10.center = (tabl[9],0)
              if position_etoil11[1] > HAUTEUR :
                      position_etoil11.center = (tabl[10],0)
              if position_etoil12[1] > HAUTEUR :
                      position_etoil12.center = (tabl[11],0)
              if position_etoil13[1] > HAUTEUR :
                      position_etoil13.center = (tabl[12],0)
              if position_etoil14[1] > HAUTEUR :
                      position_etoil14.center = (tabl[13],0)
              if position_etoil15[1] > HAUTEUR :
                      position_etoil15.center = (tabl[14],0)
              if position_etoil16[1] > HAUTEUR :
                      position_etoil16.center = (tabl[15],0)
              if position_etoil17[1] > HAUTEUR :
                      position_etoil17.center = (tabl[16],0)
              if position_etoil18[1] > HAUTEUR :
                      position_etoil18.center = (tabl[17],0)
              if position_etoil19[1] > HAUTEUR :
                      position_etoil19.center = (tabl[18],0)
              if position_etoil20[1] > HAUTEUR :
                      position_etoil20.center = (tabl[19],0)
              if position_vaisseauX[1] > HAUTEUR + 50:
                      serie = 0
                      vie-= 1
                      rand = random.randint(0,1920)
                      position_vaisseauX.center = (rand, -157)
                      vaisseauXSpeedY = 5

              if missiles == 1 :
              #Lorsque les missiles touchent le vaisseau ennemi ils le detruisent
                  if position_missile[0]+3 > position_vaisseauX[0]+99 and position_missile[0]-3 < position_vaisseauX[0]+126 and position_missile[1] > position_vaisseauX[1] + 35 and position_missile[1] < position_vaisseauX[1]+153 :
                      explosion()
                      score = (serie * 100) + score
                  if position_missile[0]+3 > position_vaisseauX[0]+127 and position_missile[0]-3 < position_vaisseauX[0]+182 and position_missile[1] > position_vaisseauX[1] + 23 and position_missile[1] < position_vaisseauX[1]+115 :
                      explosion()
                      score = (serie*100) + score
                  if position_missile[0]+3 > position_vaisseauX[0]+42 and position_missile[0]-3 < position_vaisseauX[0]+98 and position_missile[1] > position_vaisseauX[1] + 23 and position_missile[1] < position_vaisseauX[1]+117 :
                      explosion()
                      score = (serie * 100) + score

              if (position_vaisseau[0]+60 > position_vaisseauX[0]+99 and position_vaisseau[0]+60 < position_vaisseauX[0]+126 )  and (position_vaisseau[1]+4 < position_vaisseauX[1] + 150 or position_vaisseau[1]+126 < position_vaisseauX[1]+153) :
                  vie-=1
                  explosionbis()
              if position_vaisseau[0]+60 > position_vaisseauX[0]+127 and position_vaisseau[0]+60 < position_vaisseauX[0]+182 and (position_vaisseau[1]+4 < position_vaisseauX[1] + 23 or position_vaisseau[1]+126 < position_vaisseauX[1]+115) :
                  vie-=1
                  explosionbis()
              if position_vaisseau[0]+60 > position_vaisseauX[0]+42 and position_vaisseau[0]+60 < position_vaisseauX[0]+99 and (position_vaisseau[1]+4 < position_vaisseauX[1] + 23 or position_vaisseau[1]+126 < position_vaisseauX[1]+117) :
                  vie-=1
                  explosionbis()

              if vie == 0 :
                  vie = VIEMAX
                  score = 0
                  serie = 0
                  Gameover()


          #Rafraichissement de l'ecran
              pygame.display.flip()

          continuer = 1
          menu()

      • Partager sur Facebook
      • Partager sur Twitter
        19 mai 2014 à 11:01:55

        Bonjour,

        utilise les balises d'insertion de code si tu veux que les gens prennent le temps de lire ton sujet.

        • Partager sur Facebook
        • Partager sur Twitter
          19 mai 2014 à 19:00:12

          Je vous donne tout l'algo si quelqu'un a des explications 
          
          import pygame
          
          from pygame.locals import *
          
          
          import random
          import time
          
          #variables globales du programme
          LARGEUR = 1920 #1920
          HAUTEUR = 1080 #1080
          VIEMAX = 10
          SORTIR = 1
          a = 1
          
          
          pygame.init()
          
          #Definition de la fenetre
          fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR))
          fond1 = pygame.image.load("./Imgs/fondmenu.jpg").convert()
          fond2 = pygame.image.load("./Imgs/Pause.png").convert()
          fond2.set_colorkey((48,80,127))
          fond3 = pygame.image.load("./Imgs/Gameover.png").convert()
          screen = pygame.display.set_mode([LARGEUR,HAUTEUR])
          font=pygame.font.Font(None,30)
          
          #Integration du son
          volume = pygame.mixer.music.get_volume()
          pygame.mixer.music.set_volume(1)
          
          #Charger les credits
          def credits():
              FPS = 60
          
              pygame.init()
              clock = pygame.time.Clock()
              movie = pygame.movie.Movie('./vid/credits.MPG')
              pygame.mixer.music.load("./Son/credits.wav")
              pygame.mixer.music.play()
              screen = pygame.display.set_mode(movie.get_size())
              movie_screen = pygame.Surface(movie.get_size()).convert()
          
              movie.set_display(movie_screen)
              movie.play()
          
          
              playing = True
              while playing:
                  for event in pygame.event.get():
                      if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                          pygame.quit()
                          exit()
          
                  screen.blit(movie_screen,(0,0))
                  pygame.display.update()
                  clock.tick(FPS)
          
          
          #Charger les variables joueur
          vie = VIEMAX
          score = 0
          ex = 0
          exx = 0
          serie = 0
          
          #Charger menu
          def menu():
              global SORTIR
              loop1 = 1
              fenetre.blit(fond1, (0,0))
              pygame.mixer.music.load("./Son/menu.wav")
              pygame.mixer.music.play()
              pygame.display.flip()
              while loop1:
                  for e in pygame.event.get():
                      if e.type == pygame.KEYDOWN and e.key == pygame.K_SPACE:
                          loop1 = 0
                          loop = 0
                          pygame.mixer.music.load("./Son/music.wav")    #Gestion Son
                          pygame.mixer.music.play()
                      if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE:
                          SORTIR = 0
                          pygame.quit()
                          exit()
                      if e.type == pygame.MOUSEBUTTONDOWN and e.pos[0] > 842  and e.pos[0] < 1122 and e.pos[1] > 743 and e.pos[1] < 835:
                          SORTIR = 0
                          pygame.quit()
                          exit()
                      if e.type == pygame.MOUSEBUTTONDOWN and e.pos[0] > 772 and e.pos[0] < 1175 and e.pos[1] > 606 and e.pos[1] < 705:
                          loop1 = 0
                          loop = 0
                          pygame.mixer.music.load("./Son/music.wav")    #Gestion Son
                          pygame.mixer.music.play()
                      if e.type == pygame.MOUSEBUTTONDOWN and e.pos[0] > 929  and e.pos[0] < 1035 and e.pos[1] > 903 and e.pos[1] < 930:
                          credits()
          
          menu()
          
          #Charger les fonctions explosion
          def explosion():
              global vaisseauXSpeedY
              global serie
              vaisseauXSpeedY +=1
              print(vaisseauXSpeedY)
              serie+= 1
              print(serie)
              position_exxplosion = exxplosion.get_rect()
              exxplosionx = position_vaisseauX[0] + 100 #Chargement des explosions du vaisseau sur x
              exxplosionty = position_vaisseauX[1] + 55
              position_exxplosion.center = (exxplosionx, exxplosionty)
              fenetre.blit(exxplosion, position_exxplosion)
              rand = random.randint(0,1920)
              position_vaisseauX.center = (rand, -157)
              position_missile.center = (3000, 3000)
          
          
          def explosionbis():
              global serie
              global vaisseauXSpeedY
              serie = 0
              print(serie)
              position_exxplosion = exxplosion.get_rect()
              exxplosionx = position_vaisseau[0] + 65
              exxplosionty = position_vaisseau[1] + 70
              position_exxplosion.center = (exxplosionx, exxplosionty)
              fenetre.blit(exxplosion, position_exxplosion)
              pygame.display.flip()
              for i in range(0,100):
                  time.sleep(0.01)
              vaisseauXSpeedY = 5
              print(vaisseauXSpeedY)
              position_vaisseau.center = (LARGEUR/2-40, HAUTEUR - 60) #Recentrage du vaisseau après son explosion
              rand = random.randint(0, 1080)
              position_vaisseauX.center = (rand, -157)
          
          #Charger les tirs
          missiles = 0
          missile = pygame.image.load("./Imgs/missile.png").convert()
          missile.set_colorkey((0,255,255))
          
          #Charger la fonction Game Over
          def Gameover():
              fenetre.blit(fond3, (0,0))
              loop2 = 1
              pygame.mixer
              pygame.mixer.music.load("./Son/loose.wav")
              pygame.mixer.music.play()
              screen.blit(scoretext, (850, 550))
              pygame.display.flip()
              time.sleep(3)
              while loop2:
                   for e in pygame.event.get():
                      if e.type == pygame.KEYDOWN and e.key == pygame.K_RETURN:
                          loop2 = 0
                          menu()
          
          #Preparation du fond apres le menu
          fond = pygame.image.load("./Imgs/fond.jpg").convert()
          
          #Import du vaisseau et transparence de fond
          vaisseau = pygame.image.load("./Imgs/Vaisseau final.png").convert()
          vaisseau.set_colorkey((0,255,255))
          
          #Placement et deplacement vaisseau
          position_vaisseau = vaisseau.get_rect()
          position_vaisseau.center = (LARGEUR/2-40, HAUTEUR - 60)
          fenetre.blit(vaisseau, position_vaisseau)
          
          #Import etoiles
          etoil1 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil2 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil3 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil4 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil5 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil6 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil7 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil8 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil9 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil10 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil11 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil12 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil13 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil14 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil15 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil16 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil17 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil18 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil19 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil20 = pygame.image.load("./Imgs/etoil.png").convert()
          etoil21 = pygame.image.load("./Imgs/etoil.png").convert()
          
          #Vaisseau ennemi
          vaisseauX = pygame.image.load("./Imgs/ennemi.png").convert() #import de l'image de l'ennemi.
          vaisseauX.set_colorkey((0,255,255))
          position_vaisseauX = vaisseauX.get_rect()
          rand = random.randint(0, 1440)
          position_vaisseauX.center = (rand, 0)
          vaisseauXSpeedY = 5
          exxplosion = pygame.image.load("./Imgs/Explosion.png").convert()
          exxplosion.set_colorkey((0,255,255))
          
          #Placement et deplacemnt etoile
          tabl = [10,106,202,298,394,490,586,682,778,874,970,1066,1162,1258,1354,1450,1548,1644,1740,1836] #Abscisses de chaque étoiles
          #(Il s'agit d'un tableau correspondant aux coordonnees de chaque etoile)
          position_etoil1 = etoil1.get_rect()
          position_etoil1.center = (tabl[0],0)
          fenetre.blit(etoil1, position_etoil1)
          position_etoil2 = etoil2.get_rect()
          position_etoil2.center = (tabl[1],HAUTEUR/2)
          fenetre.blit(etoil2, position_etoil2)
          position_etoil3 = etoil3.get_rect()
          position_etoil3.center = (tabl[2],0)
          fenetre.blit(etoil3,position_etoil3)
          position_etoil4 = etoil4.get_rect()
          position_etoil4.center = (tabl[3],HAUTEUR/2)
          fenetre.blit(etoil4, position_etoil4)
          position_etoil5 = etoil5.get_rect()
          position_etoil5.center = (tabl[4],0)
          fenetre.blit(etoil5, position_etoil5)
          position_etoil6 = etoil6.get_rect()
          position_etoil6.center = (tabl[5],HAUTEUR/2)
          fenetre.blit(etoil6, position_etoil6)
          position_etoil7 = etoil7.get_rect()
          position_etoil7.center = (tabl[6],0)
          fenetre.blit(etoil7, position_etoil7)
          position_etoil8 = etoil8.get_rect()
          position_etoil8.center = (tabl[7],HAUTEUR/2)
          fenetre.blit(etoil8, position_etoil8)
          position_etoil9 = etoil9.get_rect()
          position_etoil9.center = (tabl[8],0)
          fenetre.blit(etoil9, position_etoil9)
          position_etoil10 = etoil10.get_rect()
          position_etoil10.center = (tabl[9],HAUTEUR/2)
          fenetre.blit(etoil10, position_etoil10)
          position_etoil11 = etoil11.get_rect()
          position_etoil11.center = (tabl[10],0)
          fenetre.blit(etoil11, position_etoil11)
          position_etoil12 = etoil12.get_rect()
          position_etoil12.center = (tabl[11],HAUTEUR/2)
          fenetre.blit(etoil12, position_etoil12)
          position_etoil13 = etoil13.get_rect()
          position_etoil13.center = (tabl[12],0)
          fenetre.blit(etoil13, position_etoil13)
          position_etoil14 = etoil14.get_rect()
          position_etoil14.center = (tabl[13],HAUTEUR/2)
          fenetre.blit(etoil14, position_etoil14)
          position_etoil15 = etoil15.get_rect()
          position_etoil15.center = (tabl[14],0)
          fenetre.blit(etoil15, position_etoil15)
          position_etoil16 = etoil16.get_rect()
          position_etoil16.center = (tabl[15],HAUTEUR/2)
          fenetre.blit(etoil16, position_etoil16)
          position_etoil17 = etoil17.get_rect()
          position_etoil17.center = (tabl[16],0)
          fenetre.blit(etoil17, position_etoil17)
          position_etoil18 = etoil18.get_rect()
          position_etoil18.center = (tabl[17],HAUTEUR/2)
          fenetre.blit(etoil18, position_etoil18)
          position_etoil19 = etoil19.get_rect()
          position_etoil19.center = (tabl[18],0)
          fenetre.blit(etoil19, position_etoil19)
          position_etoil20 = etoil20.get_rect()
          position_etoil20.center = (tabl[19],HAUTEUR/2)
          fenetre.blit(etoil20, position_etoil20)
          
          #Charger la fonction pause
          def pause():
              global continuer
              loop = 1
              screen.blit(scoretext, (950, 450))
              fenetre.blit(fond2, (0,0))
              pygame.display.flip()
              pygame.mixer.music.set_volume(0.25)
              while loop:
                      for e in pygame.event.get():
                          if e.type == pygame.KEYDOWN and e.key == pygame.K_SPACE:
                              loop = 0 #Arrêt de la pause (valeur booléenne
                              pygame.mixer.music.set_volume(1)
                          if e.type == pygame.KEYDOWN and e.key == pygame.K_TAB:
                              score = 0
                              vie = VIEMAX
                              for i in range(0,100):
                                  time.sleep(0.01)
                              pygame.mixer.music.set_volume(1)
                              loop = 0
                              continuer = 0
          
          #Rafraischissement de l'image pour afficher le jeu a la sortie du menu
          pygame.display.flip()
          pygame.key.set_repeat(1,1)
          
          
          #---------------------------------------------------------------------------------------------------------------------------------
          #Boucle infinie-------------------------------------------------------------------------------------------------------------------
          #---------------------------------------------------------------------------------------------------------------------------------
          
          continuer = 1
          while SORTIR:
              while continuer:
                  time.sleep(0.01) #Ralentissement du jeu qui tourne trop vite sur mon pc
          
                  missilex = position_vaisseau[0] + 65
                  missiley = position_vaisseau[1] + 80
          
                  if score >= a*10000:
                      global vie
                      global a
                      a = a+1
                      print(a)
                      vie += 1
                      print(vie)
          
          
              #Affichage score et vie
                  scoretext=font.render("Score:"+str(score), 1,(255,255,255))
                  vietext=font.render("Vie:"+str(vie), 1,(255,255,255))
                  serietext=font.render("Serie: x"+str(serie), 1,(255,255,255))
          
              #Attente d'utilisation d'une touche
                  for event in pygame.event.get():
                      if event.type == QUIT:
                          continuer = 0
                          for i in range(0,100):
                              time.sleep(0.01)
                      if event.type == KEYDOWN:
                          if event.key == K_RIGHT:
                              if position_vaisseau[0] < LARGEUR-60:
                                  position_vaisseau = position_vaisseau.move(30,0)
                          if event.key == K_LEFT:
                              if position_vaisseau[0] > 0:
                                  position_vaisseau = position_vaisseau.move(-30,0)
                          if event.key == pygame.K_RETURN:
                              pause()
                          if event.key == pygame.K_DOWN:
                              missiles = 1
                              position_missile = missile.get_rect()
                              position_missile.center = (missilex, missiley)
                          if event.key == pygame.K_ESCAPE:
                              for i in range(0,100):
                                  time.sleep(0.01)
                              continuer = 0
          
              #Changement des positions des sprites
                  position_vaisseauX.y += vaisseauXSpeedY
                  position_etoil1 = position_etoil1.move(0,(30+serie)) #"serie" permet d'accéler la vitesse des étoiles
                  position_etoil2 = position_etoil2.move(0,(15+serie))
                  position_etoil3 = position_etoil3.move(0,(31+serie))
                  position_etoil4 = position_etoil4.move(0,(25+serie))
                  position_etoil5 = position_etoil5.move(0,(19+serie))
                  position_etoil6 = position_etoil6.move(0,(35+serie))
                  position_etoil7 = position_etoil7.move(0,(29+serie))
                  position_etoil8 = position_etoil8.move(0,(16+serie))
                  position_etoil9 = position_etoil9.move(0,(24+serie))
                  position_etoil10 = position_etoil10.move(0,(21+serie))
                  position_etoil11 = position_etoil11.move(0,(30+serie))
                  position_etoil12 = position_etoil12.move(0,(15+serie))
                  position_etoil13 = position_etoil13.move(0,(31+serie))
                  position_etoil14 = position_etoil14.move(0,(25+serie))
                  position_etoil15 = position_etoil15.move(0,(19+serie))
                  position_etoil16 = position_etoil16.move(0,(35+serie))
                  position_etoil17 = position_etoil17.move(0,(29+serie))
                  position_etoil18 = position_etoil18.move(0,(16+serie))
                  position_etoil19 = position_etoil19.move(0,(24+serie))
                  position_etoil20 = position_etoil20.move(0,(21+serie))
                  if missiles == 1:
                      position_missile = position_missile.move(0,-30)
          
              #Placement des sprites aux nouvelles coordonees
                  fenetre.blit(fond, (0,0))
                  fenetre.blit(etoil1, position_etoil1)
                  fenetre.blit(etoil2, position_etoil2)
                  fenetre.blit(etoil3, position_etoil3)
                  fenetre.blit(etoil4, position_etoil4)
                  fenetre.blit(etoil5, position_etoil5)
                  fenetre.blit(etoil6, position_etoil6)
                  fenetre.blit(etoil7, position_etoil7)
                  fenetre.blit(etoil8, position_etoil8)
                  fenetre.blit(etoil9, position_etoil9)
                  fenetre.blit(etoil10, position_etoil10)
                  fenetre.blit(etoil11, position_etoil11)
                  fenetre.blit(etoil12, position_etoil12)
                  fenetre.blit(etoil13, position_etoil13)
                  fenetre.blit(etoil14, position_etoil14)
                  fenetre.blit(etoil15, position_etoil15)
                  fenetre.blit(etoil16, position_etoil16)
                  fenetre.blit(etoil17, position_etoil17)
                  fenetre.blit(etoil18, position_etoil18)
                  fenetre.blit(etoil19, position_etoil19)
                  fenetre.blit(etoil20, position_etoil20)
                  fenetre.blit(vaisseau, position_vaisseau)
                  screen.blit(scoretext, (50, 50))
                  screen.blit(vietext, (1800, 50))
                  screen.blit(serietext, (950, 50))
                  fenetre.blit(vaisseauX, position_vaisseauX)
                  if missiles == 1:
                      fenetre.blit(missile, position_missile)
          
              #Lorsque les etoiles sortent de l'ecran par le bas elle sont replacées en haut
                  if position_etoil1[1] > HAUTEUR :
                          position_etoil1.center = (tabl[0],0)
                  if position_etoil2[1] > HAUTEUR :
                          position_etoil2.center = (tabl[1],0)
                  if position_etoil3[1] > HAUTEUR :
                          position_etoil3.center = (tabl[2],0)
                  if position_etoil4[1] > HAUTEUR :
                          position_etoil4.center = (tabl[3],0)
                  if position_etoil5[1] > HAUTEUR :
                          position_etoil5.center = (tabl[4],0)
                  if position_etoil6[1] > HAUTEUR :
                          position_etoil6.center = (tabl[5],0)
                  if position_etoil7[1] > HAUTEUR :
                          position_etoil7.center = (tabl[6],0)
                  if position_etoil8[1] > HAUTEUR :
                          position_etoil8.center = (tabl[7],0)
                  if position_etoil9[1] > HAUTEUR :
                          position_etoil9.center = (tabl[8],0)
                  if position_etoil10[1] > HAUTEUR :
                          position_etoil10.center = (tabl[9],0)
                  if position_etoil11[1] > HAUTEUR :
                          position_etoil11.center = (tabl[10],0)
                  if position_etoil12[1] > HAUTEUR :
                          position_etoil12.center = (tabl[11],0)
                  if position_etoil13[1] > HAUTEUR :
                          position_etoil13.center = (tabl[12],0)
                  if position_etoil14[1] > HAUTEUR :
                          position_etoil14.center = (tabl[13],0)
                  if position_etoil15[1] > HAUTEUR :
                          position_etoil15.center = (tabl[14],0)
                  if position_etoil16[1] > HAUTEUR :
                          position_etoil16.center = (tabl[15],0)
                  if position_etoil17[1] > HAUTEUR :
                          position_etoil17.center = (tabl[16],0)
                  if position_etoil18[1] > HAUTEUR :
                          position_etoil18.center = (tabl[17],0)
                  if position_etoil19[1] > HAUTEUR :
                          position_etoil19.center = (tabl[18],0)
                  if position_etoil20[1] > HAUTEUR :
                          position_etoil20.center = (tabl[19],0)
                  if position_vaisseauX[1] > HAUTEUR + 50:
                          serie = 0
                          vie-= 1
                          rand = random.randint(0,1920)
                          position_vaisseauX.center = (rand, -157)
                          vaisseauXSpeedY = 5
          
                  if missiles == 1 :
                  #Lorsque les missiles touchent le vaisseau ennemi ils le detruisent
                      if position_missile[0]+3 > position_vaisseauX[0]+99 and position_missile[0]-3 < position_vaisseauX[0]+126 and position_missile[1] > position_vaisseauX[1] + 35 and position_missile[1] < position_vaisseauX[1]+153 :
                          explosion()
                          score = (serie * 100) + score
                      if position_missile[0]+3 > position_vaisseauX[0]+127 and position_missile[0]-3 < position_vaisseauX[0]+182 and position_missile[1] > position_vaisseauX[1] + 23 and position_missile[1] < position_vaisseauX[1]+115 :
                          explosion()
                          score = (serie*100) + score
                      if position_missile[0]+3 > position_vaisseauX[0]+42 and position_missile[0]-3 < position_vaisseauX[0]+98 and position_missile[1] > position_vaisseauX[1] + 23 and position_missile[1] < position_vaisseauX[1]+117 :
                          explosion()
                          score = (serie * 100) + score
          
                  if (position_vaisseau[0]+60 > position_vaisseauX[0]+99 and position_vaisseau[0]+60 < position_vaisseauX[0]+126 )  and (position_vaisseau[1]+4 < position_vaisseauX[1] + 150 or position_vaisseau[1]+126 < position_vaisseauX[1]+153) :
                      vie-=1
                      explosionbis()
                  if position_vaisseau[0]+60 > position_vaisseauX[0]+127 and position_vaisseau[0]+60 < position_vaisseauX[0]+182 and (position_vaisseau[1]+4 < position_vaisseauX[1] + 23 or position_vaisseau[1]+126 < position_vaisseauX[1]+115) :
                      vie-=1
                      explosionbis()
                  if position_vaisseau[0]+60 > position_vaisseauX[0]+42 and position_vaisseau[0]+60 < position_vaisseauX[0]+99 and (position_vaisseau[1]+4 < position_vaisseauX[1] + 23 or position_vaisseau[1]+126 < position_vaisseauX[1]+117) :
                      vie-=1
                      explosionbis()
          
                  if vie == 0 :
                      vie = VIEMAX
                      score = 0
                      serie = 0
                      Gameover()
          
          
              #Rafraichissement de l'ecran
                  pygame.display.flip()
          
              continuer = 1
              menu()
          
          Si quelqu'un a des explications notamment pour l'explosion.
          • Partager sur Facebook
          • Partager sur Twitter

          Aide compréhension

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown