def ressusciteSnake(snake,joueur,jeu): """ ressuscite snake apres collision """ assert type(snake) is list assert type(joueur) is list for j in reversed(range(10)): mMap.setCaseC(mJeu.getMap(jeu),snake[j][0],snake[j][1],"vide") snake.remove(snake[j]) mJoueur.setSnakeJ(joueur,snake) return snake
def bonbon(xb,yb,x,y,snake,joueur,lcarte,hcarte,carte,numJ,depSnake): if x==xb and y==yb: mSnake.appSnake(snake) mGraphique.playSound() # Joue la musique quand on est sur le bonbon mJoueur.setSnakeJ(joueur,snake) xb = random.randint(1,lcarte-1) # position au hasard de x yb = random.randint(1,hcarte-1)# position au hasard de y getEtatCase(carte,xb,yb) print('score de ', mJoueur.getNom(joueur), ' : ', len(snake))#affiche le score while carte[xb][yb] !=1: # Verification que l'on est sur la carte xb = random.randint(1,lcarte-1) yb = random.randint(1,hcarte-1) bonbon = setCaseC(carte,xb,yb,"bonbon") return snake,joueur,xb,yb
def sortiCarte(snake,depSnake,joueur,carte,x,y): # "Capteurs" de sorti etatSortie = getEtatCase(carte,x,y) if etatSortie == "rien" : if depSnake[1]=="VD":# Sort par la droite for i in range(len(carte[1])) : #Recherche d'une case "vide" sur l'axe x dans le sens du snake xr=carte[i][y] etatxr = mCase.getCase(xr) if etatxr=="vide" : mSnake.setSnake(snake,i,y,len(snake)-1) # Replace le snake sur la carte mJoueur.setSnakeJ(joueur,snake) x,y=mSnake.getxSnake(snake,len(snake)-1),mSnake.getySnake(snake,len(snake)-1) break # on arrete la boucle if depSnake[1]=="VH":# Sort par le haut for i in range(len(carte)-1) : yr=carte[x][i] etatyr = mCase.getCase(yr) if etatyr=="vide" : mSnake.setSnake(snake,x,i,len(snake)-1) mJoueur.setSnakeJ(joueur,snake) x,y=mSnake.getxSnake(snake,len(snake)-1),mSnake.getySnake(snake,len(snake)-1) break if depSnake[1]=="VG":# Sort par la Gauche for i in reversed(range(len(carte)-1)) : xr=carte[i][y] etatxr = mCase.getCase(xr) if etatxr=="vide": mSnake.setSnake(snake,i,y,len(snake)-1) mJoueur.setSnakeJ(joueur,snake) x,y=mSnake.getxSnake(snake,len(snake)-1),mSnake.getySnake(snake,len(snake)-1) break if depSnake[1]=="VB":# Sort par le bas for i in reversed(range(len(carte[0])-1)) : yr=carte[x][i] etatyr = mCase.getCase(yr) if etatyr=="vide": mSnake.setSnake(snake,x,i,len(snake)-1) mJoueur.setSnakeJ(joueur,snake) x,y=mSnake.getxSnake(snake,len(snake)-1),mSnake.getySnake(snake,len(snake)-1) break return snake,joueur
def deplacerSnake1(depSnake1,snake1,joueur): """ deplacement du snake1 """ assert type (depSnake1) is list assert type (snake1) is list assert type(joueur) is list joueur1=joueur if (depSnake1[0]=="VD" and depSnake1[1]=="VH") or (depSnake1[0]=="VG" and depSnake1[1]=="VH") or (depSnake1[0]=="VH" and depSnake1[1]=="VH"): #Monter for j in range(len(snake1)): if j==len(snake1)-1: x1=getxSnake(snake1,j) y1=getySnake(snake1,j) setSnake(snake1,x1,y1+1,j) x1,y1=getxSnake(snake1,j),getySnake(snake1,j) else: snake1[j]=snake1[j+1] x1=getxSnake(snake1,j) y1=getySnake(snake1,j) mJoueur.setSnakeJ(joueur1,snake1) if (depSnake1[0]=="VD" and depSnake1[1]=="VB") or (depSnake1[0]=="VG" and depSnake1[1]=="VB") or (depSnake1[0]=="VB" and depSnake1[1]=="VB"): #Descendre for j in range(len(snake1)): if j==len(snake1)-1: x1=getxSnake(snake1,j) y1=getySnake(snake1,j) setSnake(snake1,x1,y1-1,j) x1,y1=getxSnake(snake1,j),getySnake(snake1,j) else: snake1[j]=snake1[j+1] x1=getxSnake(snake1,j) y1=getySnake(snake1,j) mJoueur.setSnakeJ(joueur1,snake1) if (depSnake1[0]=="VH" and depSnake1[1]=="VG") or (depSnake1[0]=="VB" and depSnake1[1]== "VG") or (depSnake1[0]=="VG" and depSnake1[1]=="VG"): #Gauche for j in range(len(snake1)): if j==len(snake1)-1: x1=getxSnake(snake1,j) y1=getySnake(snake1,j) setSnake(snake1,x1-1,y1,j) x1,y1=getxSnake(snake1,j),getySnake(snake1,j) else: snake1[j]=snake1[j+1] x1=getxSnake(snake1,j) y1=getySnake(snake1,j) mJoueur.setSnakeJ(joueur1,snake1) if (depSnake1[0]==("VH") and depSnake1[1]== "VD") or (depSnake1[0]== "VB" and depSnake1[1]== "VD") or (depSnake1[0]== "" and depSnake1[1]== "VD" or (depSnake1[0]=="VD" and depSnake1[1]=="VD")): # Droite for j in range(len(snake1)): if j==len(snake1)-1: x1=getxSnake(snake1,j) y1=getySnake(snake1,j) setSnake(snake1,x1+1,y1,j) x1,y1=getxSnake(snake1,j),getySnake(snake1,j) else: snake1[j]=snake1[j+1] x1=getxSnake(snake1,j) y1=getySnake(snake1,j) mJoueur.setSnakeJ(joueur1,snake1) return depSnake1
def deplacerSnake2(depSnake2,snake2,joueur2): """ deplacement du snake2 """ assert type (depSnake2) is list assert type (snake2) is list assert type (joueur2) is list if (depSnake2[0]=="VD" and depSnake2[1]=="VH") or (depSnake2[0]=="VG" and depSnake2[1]=="VH") or (depSnake2[0]=="VH" and depSnake2[1]=="VH"): #Monter for j in range(len(snake2)): if j==len(snake2)-1: x2=getxSnake(snake2,j) y2=getySnake(snake2,j) setSnake(snake2,x2,y2+1,j) x,y=getxSnake(snake2,j),getySnake(snake2,j) else: snake2[j]=snake2[j+1] x=getxSnake(snake2,j) y=getySnake(snake2,j) mJoueur.setSnakeJ(joueur2,snake2) if (depSnake2[0]=="VD" and depSnake2[1]=="VB") or (depSnake2[0]=="VG" and depSnake2[1]=="VB") or (depSnake2[0]=="VB" and depSnake2[1]=="VB"): #Descendre for j in range(len(snake2)): if j==len(snake2)-1: x2=getxSnake(snake2,j) y2=getySnake(snake2,j) setSnake(snake2,x2,y2-1,j) x2,y2=getxSnake(snake2,j),getySnake(snake2,j) else: snake2[j]=snake2[j+1] x2=getxSnake(snake2,j) y2=getySnake(snake2,j) mJoueur.setSnakeJ(joueur2,snake2) if (depSnake2[0]=="VH" and depSnake2[1]=="VG") or (depSnake2[0]=="VB" and depSnake2[1]== "VG") or (depSnake2[0]=="VG" and depSnake2[1]=="VG"): #Gauche for j in range(len(snake2)): if j==len(snake2)-1: x=getxSnake(snake2,j) y=getySnake(snake2,j) setSnake(snake2,x2-1,y2,j) x2,y2=getxSnake(snake2,j),getySnake(snake2,j) else: snake2[j]=snake2[j+1] x2=getxSnake(snake2,j) y2=getySnake(snake2,j) mJoueur.setSnakeJ(joueur2,snake2) if (depSnake2[0]==("VH") and depSnake2[1]== "VD") or (depSnake2[0]== "VB" and depSnake2[1]== "VD") or (depSnake2[0]== "" and depSnake2[1]== "VD" or (depSnake2[0]=="VD" and depSnake2[1]=="VD")): # Droite for j in range(len(snake2)): if j==len(snake2)-1: x2=getxSnake(snake2,j) y2=getySnake(snake2,j) setSnake(snake2,x2+1,y2,j) x2,y2=getxSnake(snake2,j),getySnake(snake2,j) else: snake2[j]=snake2[j+1] x2=getxSnake(snake2,j) y2=getySnake(snake2,j) mJoueur.setSnakeJ(joueur2,snake2) return depSnake2
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()