def positionValide(choix, joueur): if (choix[0] == "A"): return estPosition(choix) and not ( estVidePosition(champBataille(joueur), "F" + choix[1]) ) #La position est valide à l'arriere si le front est occupé au meme indice else: return estPosition(choix)
def deploiementCarte(joueur,nbCarteAPlacerReserve,nbCarteAPlacerRoyaume) : #Permet de placer nbCarteAPlacerReserve cartes provenant de la reserve sur le champ de bataille et nbCarteAPlacerRoyaume cartes provenant du royaume sur le champ de bataille. for i in range(nbCarteAPlacerReserve) : #A deux reprises on demande au joueur de placer une carte sur le champ positionCarteSecours = input(nom(joueur) + ", où voulez-vous placer la carte de votre réserve ?") while(not(estPosition(positionCarteSecours)) or not(estVidePosition(champBataille(joueur),positionCarteSecours))) : #Arret : Qd la position est bonne & qd la position est vide #pousuite : qd la position est fausse ou qd la position est non vide positionCarteSecours = input(nom(joueur) + "veuillez indiquer une position valide ! Où voulez-vous placer la carte de votre réserve ?") #On place sur le champs de bataille if(positionCarteSecours[0] == "F"): Carte = premiereCarteReserve(reserve(joueur)) envoyerFront(front(champBataille(joueur)),Carte,positionCarteSecours) else: #si choix[0] == "A" while(not(estPosition(positionCarteSecours)) or not(estVidePosition(champBataille(joueur),positionCarteSecours)) or not(estVidePosition(champBataille(joueur),"A"+positionCarteSecours[1]))) : #Arret : Qd la position est bonne & qd la position est vide & qd il y a quelqu'un devant #pousuite : qd la position est fausse ou qd la position est non vide ou qd il y a personne devant positionCarteSecours = input(nom(joueur) + "veuillez indiquer une position valide ! Où voulez-vous placer la carte de votre réserve ?") Carte = premiereCarteReserve(reserve(joueur)) envoyerArriere(arriere(champBataille(joueur)),Carte,positionCarteSecours) for i in range(nbCarteAPlacerRoyaume) : #A deux reprises on demande au joueur de placer une carte sur le champ print(descriptionRoyaume(royaume(joueur))) roleChoisi = input(nom(joueur) + " quel est le role de la carte que vous voulez extraire du royaume ?") while(roleChoisi != "Roi" and roleChoisi != "Soldat" and roleChoisi != "Archer" and roleChoisi != "Garde") : #Arret quand role = "Roi" ou .... ou ... ou ... #Poursuite tant que role != "Roi" et roleChoisi = input(nom(joueur) + " quel est le role de la carte que vous voulez extraire du royaume ?") positionCarteSecours = input(nom(joueur) + ", où voulez-vous placer la carte de votre royaume ?") while(not(estPosition(positionCarteSecours)) or not(estVidePosition(champBataille(joueur),positionCarteSecours))) : #Arret : Qd la position est bonne & qd la position est vide #pousuite : qd la position est fausse ou qd la position est non vide positionCarteSecours = input(nom(joueur) + "veuillez indiquer une position valide ! Où voulez-vous placer la carte de votre royaume ?") #On place sur le champs de bataille if(positionCarteSecours[0] == "F"): Carte = extraireRoyaume(royaume(joueur),roleChoisi) envoyerFront(front(champBataille(joueur)),Carte,positionCarteSecours) else: #si choix[0] == "A" while(not(estPosition(positionCarteSecours)) or not(estVidePosition(champBataille(joueur),positionCarteSecours)) or not(estVidePosition(champBataille(joueur),"A"+positionCarteSecours[1]))) : #Arret : Qd la position est bonne & qd la position est vide & qd il y a quelqu'un devant #pousuite : qd la position est fausse ou qd la position est non vide ou qd il y a personne devant positionCarteSecours = input(nom(joueur) + "veuillez indiquer une position valide ! Où voulez-vous placer la carte de votre réserve ?") Carte = extraireRoyaume(royaume(joueur),roleChoisi) envoyerArriere(arriere(champBataille(joueur)),Carte,positionCarteSecours)
def premierAjoutFront(joueur): print(descriptionMain(main(joueur))) choix = int(input(nom(joueur) + " quelle carte voulez vous mettre au front ?")) while(choix<1 or choix>4): #Arret quand choix est >= 1 et <= 4 #Poursuite quand choix est < 1 ou > 4 choix = int(input(nom(joueur) + " quelle carte voulez vous mettre au front ?")) pos = input(nom(joueur) + " votre carte va être envoyé au Front. Où voulez-vous mettre votre carte ? (F puis 1|2|3)") while(not(estPosition(pos)) or pos[0]!='F') : #Arret quand pos est position et que pos[0] == 'F' #Poursuite tant que pos n'est pas positon ou que pos[0] != 'F' pos = input(nom(joueur) + " votre carte va être envoyé au Front. Où voulez-vous mettre votre carte ? (F puis 1|2|3)") envoyerFront(front(champBataille(joueur)),extraireCarteMain(main(joueur),choix),pos)
def reinitDegat(joueur): #Pre-condition : le joueur est de Type Joueur #Post-condition : les unités posées sur le champ de bataille (front et arriere), les unités en réserve et #les unités dans le royaume ont leur point de degat subis remis à 0 #Resultat : Ne renvoie rien mais modifie les unites du cdb de la reserve et du royaume royaume = royaume(joueur) for role in royaume.keys(): #parcourera tout les rôles du royaume, arrêt : quand il a tout parcouru for carte in role: #parcourera toute la liste de carte du role setPointDegat(carte, 0) reserve = reserve(joueur) for carte in reserve: setPointDegat(carte, 0) champDeBataille = champBataille(joueur) for ligne in champDeBataille: for position in ligne.keys(): setPointDegat(carte, 0) return 0
#=== ==== La partie commence ==== === finDePartieEff = False finDePartieRoi = False finDePartiePioche = False while (not (finDePartieEff) and not (finDePartieRoi) and not (finDePartiePioche)): #=== ==== Déroulement d'un tour ==== === #JA = Joueur actif JA = joueurCourant(Partie) JoueurAdverse = joueurAdverse(Partie) #==== Phase Préparation : ===== # JA : Redresse ses cartes du champ de bataille en vertical (prêt à attaquer) redresseCartes(champBataille(JA)) # JA : Mobilise une nouvelle unité = Pioche une carte ajouterCarteMain(main(JA), piocher(pioche(JA))) # #==== Phase Action ==== # JA doit soit : action = int( input( nom(JA) + " que voulez vous faire dans ce tour ? \n0 : Rien \n1 : Mettre une carte en réserve \n2 : Déployer une unité \n3 : Attaquer une cible\nAction : " )) while not (verifAction(action)): print(nom(JA) + " vous n'avez pas entré une action correcte ! ") action = int(
#J1 : Une carte est envoyée en reserve premierAjoutReserve(JA) #J2 : Une carte est envoyée en reserve premierAjoutReserve(JoueurAdverse) #=== ==== La partie commence ==== === while(not(finDePartieEff) and not(finDePartieRoi) and not(finDePartiePioche)) : #=== ==== Déroulement d'un tour ==== === #JA = Joueur actif JA = joueurCourant(Partie) JoueurAdverse = joueurAdverse(Partie) #==== Phase Préparation : ===== # JA : Redresse ses cartes du champ de bataille en vertical (prêt à attaquer) redresseCartes(champBataille(JA)) # JA : Mobilise une nouvelle unité = Pioche une carte ajouterCarteMain(main(JA),piocher(pioche(JA))) # #==== Phase Action ==== # JA doit soit : action = int(input(nom(JA) + " que voulez vous faire dans ce tour ? \n0 : Rien \n1 : Mettre une carte en réserve \n2 : Déployer une unité \n3: Attaquer une cible\nAction : ")) while not(verifAction(action)) : print(nom(JA) + " vous n'avez pas entré une action correcte ! ") action = int(input("Que voulez vous faire dans ce tour ? \n0 : Rien \n1 : Mettre une carte en réserve \n2 : Déployer une unité \n3: Attaquer une cible\nAction : ")) #Une fois sorti de la boucle, action est un entier compris entre 0 et 3. if action == 0 : #Aucune action
ajouterCarteMain(main(JoueurTest2), piocher(pioche(JoueurTest2))) ajouterCarteMain(main(JoueurTest2), piocher(pioche(JoueurTest2))) #On ajoute des cartes au champ de bataille testEstVideChamp(champ(JoueurTest1)) testNbCarteChampBataille(champ(JoueurTest1)) # ===== ==== Test d'ajout une carte au front au Joueur1 # == On test d'abbord d'etraire une carte de la main indice = 1 # = On extrait la carte carte = extraireCarteMain(main(JoueurTest1), indice) # == On essai d'ajouter une carte au front positionFront1 = "F1" testEnvoyerFront(front(champBataille(JoueurTest1)), carte, positionFront1) # La carte doit désormais etre présente sur le champ. # On ajoute une carte sur le front adverse : # ===== ==== Test d'ajout une carte au front au Joueur2 indice = 1 carte = extraireCarteMain(main(JoueurTest2), indice) # == On essai d'ajouter la carte extraite au front positionFront2 = "F3" testEnvoyerFront(front(champBataille(JoueurTest2)), carte, positionFront2) testObtenirCarte(front(ChampBataille(JoueurTest1)), champBataille(JoueurTest1), positionFront2) # ===== ==== Test d'ajout une carte à l'arriere au Joueur1