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 imprimerSnake(carte, snake, numjoueur): """ Affichage du snake dans la map non graphique """ assert type(snake) is list assert type(carte) is list assert type(numjoueur) is int for case in snake: etat = "vide" if numjoueur == 1: etat = "snake1" elif numjoueur == 2: etat = "snake2" for i in range (len(snake)): x=snake[i][0] y=snake[i][1] mMap.setCaseC(carte, x,y, etat)
def jouer(depSnake,jeu,screen,numJ,carte): #Mise en mouvement du Snake1 snake=mJoueur.getSnake(mJeu.getJoueur(jeu,numJ)) joueur=mJeu.getJoueur(jeu,numJ) xd,yd=mSnake.getxSnake(snake,0),mSnake.getySnake(snake,0) mMap.setCaseC(mJeu.getMap(jeu),xd,yd,"vide")#Suprime état précedent du snake if numJ==1: depSnake=mSnake.deplacerSnake1(depSnake,snake,joueur) if numJ==2: depSnake=mSnake.deplacerSnake2(depSnake,snake,joueur) x=mSnake.getxSnake(snake,len(snake)-1) y=mSnake.getySnake(snake,len(snake)-1) #Delimitation du terrain snake,joueur1=mMap.sortiCarte(mJoueur.getSnake(mJeu.getJoueur(jeu,numJ)),depSnake,mJeu.getJoueur(jeu,numJ),carte,x,y) # Affichage et actualisation de la map mSnake.imprimerSnake(mJeu.getMap(jeu),mJoueur.getSnake(mJeu.getJoueur(jeu,numJ)),numJ) mGraphique.afficherMap(jeu, screen) # Affiche la map graphique # Décomenter pour afficher la carte non graphique et les joueurs #mMap.affichageMap(mJeu.getMap(jeu),jeu) x=mSnake.getxSnake(snake,len(snake)-1) y=mSnake.getySnake(snake,len(snake)-1) return depSnake,x,y,snake,joueur
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