def creerPartie(para): vitesse = mParametre.getVitesseJeu(para) formeCarte = mParametre.getForme(para) carte = [] if formeCarte == "rectangulaire": coordonnes = mParametre.getTailleRect(para) carte = mMap.creerRectangulaire(coordonnes[0], coordonnes[1]) elif formeCarte == "triangulaire": coordonnes = mParametre.getTailleTrian(para) carte = mMap.creerTriangulaire(coordonnes[0][0], coordonnes[0][1],coordonnes[1][0], coordonnes[1][1], coordonnes[2][0], coordonnes[2][1]) elif formeCarte == "croix": carte = mMap.creerCroix(mParametre.getTailleCroix(para)) #positionnement initiale des deux snakes et du bonbon lcarte, hcarte = mMap.getTailleEcran(carte) y1init = int(hcarte/2+1) y2init = int(hcarte/2-1) x1init,x2init=0,0 xb = random.randint(1,lcarte-1) yb = random.randint(1,hcarte-1) mMap.getEtatCase(carte,xb,yb) while carte[xb][yb] !=1: xb = random.randint(1,lcarte-1) yb = random.randint(1,hcarte-1) for i in range(len(carte[0])-1) : #Recherche d'une case "vide" sur l'axe x xi=carte[i][y1init] # Positionne le point sur la map par rapport a (x,y) etatxr = mCase.getCase(xi) # Recupere etat de la case if etatxr=="vide": x1init=i break # On arrete la boucle quand on a trouvé une case vide for j in range(len(carte[0])-1) : xi=carte[j][y2init] etatxr = mCase.getCase(xi) if etatxr=="vide": x2init=j break # On arrete la boucle quand on a trouvé une case vide #creation des deux snakes initiaux de longeur 10 snake1 = mSnake.creerSnakeInit(int(x1init), int(y1init)) joueur1 = mJoueur.creerJoueur(mParametre.getCouleurJoueur(para,1), mParametre.getNomJoueur(para, 1), snake1) snake2 = mSnake.creerSnakeInit(int(x2init), int(y2init)) joueur2 = mJoueur.creerJoueur(mParametre.getCouleurJoueur(para,2), mParametre.getNomJoueur(para, 2), snake2) bonbon = mMap.setCaseC(carte,xb,yb,"bonbon") jeu = mJeu.creer(vitesse, carte, joueur1, joueur2) return jeu,xb,yb,lcarte,hcarte
def main(): choix=int(input("Charger une partie (0) ou Nouvelle partie (1) :\n")) if choix==1: # charger le fichier parametres = mChargerFichier.chargerFichier("defsnake2j.xml") # Construire la partie jeu,xb,yb,lcarte,hcarte = creerPartie(parametres) #Initialisation graphique et affichage carte carte = mJeu.getMap(jeu) hauteur, largeur = mMap.getTailleEcran(carte) screen = mGraphique.initGraphique(hauteur*20, largeur*20,"mMain.py") collision=False # Variable de collision sperdant="" # Snake perdant run = True # Variable principale depSnake1=["","VD"] #Variable de déplacement du Snake1 depSnake2=["","VD"] #Variable de déplacement du Snake1 if choix==0: parametres = mChargerFichier.chargerPara("sauvegarde") print(parametres) # Construire la partie jeu,xb,yb,lcarte,hcarte = creerPartie(parametres) snake1, snake2 = mParametre.getSnakes(parametres) mJoueur.setSnakeJ(mJeu.getJoueur(jeu,1),snake1) mJoueur.setSnakeJ(mJeu.getJoueur(jeu,2),snake2) #Initialisation graphique et affichage carte carte = mJeu.getMap(jeu) hauteur, largeur = mMap.getTailleEcran(carte) screen = mGraphique.initGraphique(hauteur*20, largeur*20,"mMain.py") collision=False sperdant="" run = True # Variable principale depSnake1, deSnake2 = mParametre.getDepSnakes(parametres) depSnake1=["","VD"] #Variable de déplacement du Snake1 depSnake2=["","VD"] #Variable de déplacement du Snake2 #Boucle principale while run: #déplace le snake 1 (fonctionne et passe par les bordures) depSnake1,x1,y1,snake1,joueur1=jouer(depSnake1,jeu,screen,1,carte) snake1,joueur1,xb,yb = mMap.bonbon(xb,yb,x1,y1,snake1,joueur1,lcarte,hcarte,carte,1,depSnake1) #déplace le snake 2 (fonctionne et passe par les bordures) depSnake2,x2,y2,snake2,joueur2=jouer(depSnake2,jeu,screen,2,carte) snake2,joueur2,xb,yb = mMap.bonbon(xb,yb,x2,y2,snake2,joueur2,lcarte,hcarte,carte,2,depSnake2) #verification que les deux snake ne se sont pas percutte collision,sperdant=mMap.collisionSnakes(snake1,x1,y1,x2,y2,snake2,joueur1,joueur2,jeu,1,collision,sperdant) collision,sperdant=mMap.collisionSnakes(snake1,x1,y1,x2,y2,snake2,joueur1,joueur2,jeu,2,collision,sperdant) #Verification que le snake ne s'est pas percutte lui meme collision,sperdant=mMap.collisionSnake(snake1,x1,y1,joueur1,jeu,1,collision,sperdant) collision,sperdant=mMap.collisionSnake(snake2,x2,y2,joueur2,jeu,2,collision,sperdant) #ecrit la fin de partie run = finPartie(run,parametres,joueur1,joueur2,collision,sperdant) #lecture clavier for event in pygame.event.get(): if event.type == KEYDOWN: # Acquisition de l'appuie sur une touche mSnake.clavierSnake1(depSnake1,event) # Touche clavier du snake1 mSnake.clavierSnake2(depSnake2,event) # Touche clavier du snake2 if event.key == K_p: #met en pause le jeu 5 secondes quand appuit sur p. pygame.time.delay(5000) if event.key == K_e: #sauvegarde des parametres mParametre.setSnakes(parametres, mJoueur.getSnake(mJeu.getJoueur(jeu,1)), mJoueur.getSnake(mJeu.getJoueur(jeu,2))) mParametre.setDepSnakes(parametres, depSnake1, depSnake2) mChargerFichier.sauverPara(parametres,"sauvegarde") run=False if event.type == QUIT: run=False vitesse=mParametre.getVitesseJeu(parametres) pygame.time.delay(vitesse) # Definit la vitesse du jeu (en milisec) #ferme la fenetre pygame pygame.time.delay(1000) pygame.quit()