class Game(): def __init__(self, playerCount): self.playerCount = playerCount def DoCardAction(self, currPlaya, actTodo): if (actTodo == 1): self.Playerlist[currPlaya - 1].coinsChange(3) print( "You got 3 coins from taxes!\nYour current ammount of coins is %d" % (self.Playerlist[currPlaya - 1].coins)) self.savelog("Player %d got 3 coins from TAX" % (currPlaya)) return 1 if (actTodo == 2): print("What player do you want to attack?") AttackedPlaya = int(input()) whatCards = [ self.Playerlist[AttackedPlaya - 1].specCardStatus(1), self.Playerlist[AttackedPlaya - 1].specCardStatus(2) ] print(whatCards) if whatCards[0] == "hidden" and whatCards[1] == "hidden": cardLost = random.randint(1, 2) self.Playerlist[AttackedPlaya - 1].cardStatusSet(cardLost) print("Player %d lost his influence card number %d" % (AttackedPlaya, cardLost)) self.savelog("Player %d Assasinate Player %d" % (currPlaya, AttackedPlaya)) self.Playerlist[AttackedPlaya - 1].gameStatus() print(whatCards) if self.Playerlist[AttackedPlaya - 1].isInGame == 0: self.savelog("Player %d died" % (AttackedPlaya)) elif whatCards[0] == "hidden" and whatCards[1] == "shown": self.Playerlist[AttackedPlaya - 1].cardStatusSet(1) print("Player %d lost his influence card number 1" % (AttackedPlaya)) self.savelog("Player %d Assasinate Player %d" % (currPlaya, AttackedPlaya)) self.Playerlist[AttackedPlaya - 1].gameStatus() if self.Playerlist[AttackedPlaya - 1].isInGame == 0: self.savelog("Player %d died" % (AttackedPlaya)) elif whatCards[0] == "shown" and whatCards[1] == "hidden": self.Playerlist[AttackedPlaya - 1].cardStatusSet(2) print("Player %d lost his influence card number 2" % (AttackedPlaya)) self.savelog("Player %d Assasinate Player %d" % (currPlaya, AttackedPlaya)) self.Playerlist[AttackedPlaya - 1].gameStatus() if self.Playerlist[AttackedPlaya - 1].isInGame == 0: self.savelog("Player %d died" % (AttackedPlaya)) return 2 if (actTodo == 3): print("Pick which cards you want (a,b)") print("Your 2 cards") print(self.Playerlist[currPlaya - 1].printCardType(1), " (1)") print(self.Playerlist[currPlaya - 1].printCardType(2), " (2)") print("Top 2 cards in the deck") print(self.Ddeck.returnCardNo(0), " (3)") print(self.Ddeck.returnCardNo(1), " (4)") cardsWanted = input().split(",") if int(cardsWanted[0]) == 1 and int(cardsWanted[1]) == 2: print("You swap no cards cards") #self.Playerlist[currPlaya-1].SeeCards() elif int(cardsWanted[0]) == 1 and int( cardsWanted[1]) == 3 and self.Playerlist[ currPlaya - 1].specCardStatus(2) == "hidden": self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card2, 1), 2) #self.Playerlist[currPlaya-1].SeeCards() elif int(cardsWanted[0]) == 1 and int( cardsWanted[1]) == 4 and self.Playerlist[ currPlaya - 1].specCardStatus(2) == "hidden": self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card2, 2), 2) #self.Playerlist[currPlaya-1].SeeCards() elif int(cardsWanted[0]) == 2 and int( cardsWanted[1]) == 3 and self.Playerlist[ currPlaya - 1].specCardStatus(1) == "hidden": self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card1, 1), 1) #self.Playerlist[currPlaya-1].SeeCards() elif int(cardsWanted[0]) == 2 and int( cardsWanted[1]) == 4 and self.Playerlist[ currPlaya - 1].specCardStatus(1) == "hidden": self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card1, 2), 1) #self.Playerlist[currPlaya-1].SeeCards() elif int(cardsWanted[0]) == 3 and int(cardsWanted[1]) == 4: if self.Playerlist[currPlaya - 1].specCardStatus( 1) == "hidden" or self.Playerlist[ currPlaya - 1].specCardStatus(2) == "hidden": print("You swap both cards") self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card1, 1), 1) self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card2, 1), 2) self.Playerlist[currPlaya - 1].SeeCards() else: print( "Please insert card numbers in order, or dont try to replace a shown card" ) else: print( "Please insert card numbers in order, or dont try to replace a shown card" ) self.savelog("Player %d swapped his cards" % (currPlaya)) return 3 if (actTodo == 4): print("What player do you want to steal from?") AttackedPlaya = int(input()) howManyCoins = self.Playerlist[AttackedPlaya - 1].coins if howManyCoins >= 2: self.Playerlist[currPlaya - 1].coinsChange(2) print( "You stole 2 coins from player %d\nYour current ammount of coins is %d" % (AttackedPlaya, self.Playerlist[currPlaya - 1].coins)) self.Playerlist[AttackedPlaya - 1].coinsChange(-2) print( "Player %d has %d coins left!" % (AttackedPlaya, self.Playerlist[AttackedPlaya - 1].coins)) self.savelog("Player %d stole 2 coins from Player %d" % (currPlaya, AttackedPlaya)) elif howManyCoins == 1: print("Player %d has only 1 coin" % (AttackedPlaya)) self.Playerlist[currPlaya - 1].coinsChange(1) print( "You stole 1 coin from him\nYour current ammount of coins is %d" % (self.Playerlist[currPlaya - 1].coins)) self.savelog("Player %d stole 1 coin from Player %d" % (currPlaya, AttackedPlaya)) self.Playerlist[AttackedPlaya - 1].coinsChange(-1) print("Player %d has no coins left!") elif howManyCoins == 0: print("Player %d did´t have any coins left!" % (AttackedPlaya)) print( "So you wasted your turn and did not gain anything\nYour current ammount of coins is %d" % (self.Playerlist[currPlaya - 1].coins)) self.savelog("Player %d stole 0 coins from Player %d" % (currPlaya, AttackedPlaya)) return 4 def counterAction(self, currPlaya): counterPlayers = [] print( "Does any player want to respond to this action?\nIf more than one, use separate player numbers by using commas\nor leave empty if no one wants to do anything" ) counterPlayers = input().split(",") print(counterPlayers) if counterPlayers[0] == "": return 1 elif self.playerCount > len(counterPlayers) >= 2: print( "picking random player from the players that decided to attack" ) random.shuffle(counterPlayers) playerattack = int(counterPlayers[0]) if playerattack == currPlaya: playerattack = int(counterPlayers[1]) elif self.Playerlist[playerattack - 1].isInGame == 0: return 1 print("Player %d was chosen to do an action" % (playerattack)) print( "Player %d, what do you wish to do?\nCOUNTERATTACK = (0)\nCHALLENGE =(1)" % (playerattack)) whattodo = int(input()) if whattodo == 0: print("Player %d counterattacks Player %d!!" % (playerattack, currPlaya)) self.savelog("Player %d Counterattack Player %d action" % (playerattack, currPlaya)) print( "Does any player want to Challenge this action?\nIf more than one, use separate player numbers by using commas\nor leave empty if no one wants to do anything" ) counterPlayers = input().split(",") print(counterPlayers) if counterPlayers[0] == "": return 0 elif self.playerCount > len(counterPlayers) >= 2: print( "picking random player from the players that decided to attack" ) random.shuffle(counterPlayers) playerchallenge = int(counterPlayers[0]) if playerchallenge == currPlaya: playerchallenge = int(counterPlayers[1]) elif self.Playerlist[playerchallenge - 1].isInGame == 0: return 0 print("Player %d challenges Player %d!!" % (playerchallenge, playerattack)) self.savelog( "Player %d challenge Player %d Counterattack" % (playerchallenge, playerattack)) self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) return self.canDoAction elif len(counterPlayers ) == 1 and len(counterPlayers) <= self.playerCount: playerchallenge = int(counterPlayers[0]) if playerchallenge == currPlaya: return 0 elif self.Playerlist[playerchallenge - 1].isInGame == 0: return 0 else: print("Player %d challenges Player %d!!" % (playerchallenge, playerattack)) self.savelog( "Player %d challenge Player %d Counterattack" % (playerchallenge, playerattack)) self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) return self.canDoAction elif whattodo == 1: print("Player %d challenges Player %d!!" % (playerattack, currPlaya)) self.savelog("Player %d challenge Player %d Action" % (playerattack, currPlaya)) self.canDoAction = self.challengePlayer( currPlaya, playerattack, 1) return self.canDoAction elif len(counterPlayers ) == 1 and len(counterPlayers) <= self.playerCount: playerattack = int(counterPlayers[0]) if playerattack == currPlaya: return 0 elif self.Playerlist[playerattack - 1].isInGame == 0: return 1 else: print("Player %d chose to do an action" % (playerattack)) print( "Player %d, what do you wish to do?\nCOUNTERATTACK = (0)\nCHALLENGE =(1)" % (playerattack)) whattodo = int(input()) if whattodo == 0: print("Player %d counterattacks Player %d!!" % (playerattack, currPlaya)) self.savelog("Player %d Counterattack Player %d Action" % (playerattack, currPlaya)) print( "Does any player want to Challenge this action?\nIf more than one, use separate player numbers by using commas\nor leave empty if no one wants to do anything" ) counterPlayers = input().split(",") random.shuffle(counterPlayers) playerchallenge = int(counterPlayers[0]) print(counterPlayers) if counterPlayers[0] == "": return 0 elif self.Playerlist[int(counterPlayers[0]) - 1].isInGame == 0: return 0 elif self.playerCount > len(counterPlayers) >= 2: print( "picking random player from the players that decided to attack" ) if playerchallenge == currPlaya: playerchallenge = int(counterPlayers[1]) print("Player %d challenges Player %d!!" % (playerchallenge, playerattack)) self.savelog( "Player %d challenge Player %d Counterattack" % (playerchallenge, playerattack)) self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) return self.canDoAction elif len(counterPlayers) == 1: print("Player %d challenges Player %d!!" % (playerchallenge, playerattack)) self.savelog( "Player %d challenge Player %d Counterattack" % (playerchallenge, playerattack)) self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) return self.canDoAction elif whattodo == 1: print("Player %d challenges Player %d!!" % (playerattack, currPlaya)) self.savelog("Player %d challenge Player %d Action" % (playerattack, currPlaya)) self.canDoAction = self.challengePlayer( currPlaya, playerattack, 1) return self.canDoAction else: print("") def challengePlayer(self, currPlaya, playerattack, mode): #print(currPlaya) actionToChall = self.currActionPlaying #print(self.Playerlist[currPlaya-1].canDoRial()) whatItDo = self.Playerlist[currPlaya - 1].canDoRial() whatCanLooseCu = [ self.Playerlist[currPlaya - 1].specCardStatus(1), self.Playerlist[currPlaya - 1].specCardStatus(2) ] whatCanLooseAt = [ self.Playerlist[playerattack - 1].specCardStatus(1), self.Playerlist[playerattack - 1].specCardStatus(2) ] if whatCanLooseAt[0] != "hidden": cardLost = 2 elif whatCanLooseAt[1] != "hidden": cardLost = 1 else: cardLost = random.randint(1, 2) if whatCanLooseCu[0] != "hidden": cardLostC = 2 elif whatCanLooseCu[1] != "hidden": cardLostC = 1 else: cardLostC = random.randint(1, 2) #print(whatItDo) if mode == 1: if (whatItDo[0] == actionToChall and self.Playerlist[currPlaya - 1].specCardStatus(1) == "hidden"): print("The challenged player %d was not bluffing!!" % (currPlaya)) self.savelog( "Player %d was not bluffing, Player %d lost the Challenge" % (currPlaya, playerattack)) self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card1, 1), 1) print("So player %d lost his influence card number %d" % (playerattack, cardLost)) self.Playerlist[playerattack - 1].cardStatusSet(cardLost) self.Playerlist[playerattack - 1].gameStatus() if self.Playerlist[playerattack - 1].isInGame == 0: self.savelog("Player %d died" % (playerattack)) return 1 elif (whatItDo[1] == actionToChall and self.Playerlist[currPlaya - 1].specCardStatus(2) == "hidden"): print("The challenged player %d was not bluffing!!" % (currPlaya)) self.savelog( "Player %d was not bluffing, Player %d lost the Challenge" % (currPlaya, playerattack)) self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card2, 1), 2) print("So player %d lost his influence card number %d" % (playerattack, cardLost)) self.Playerlist[playerattack - 1].cardStatusSet(cardLost) self.Playerlist[playerattack - 1].gameStatus() if self.Playerlist[playerattack - 1].isInGame == 0: self.savelog("Player %d died" % (playerattack)) return 1 else: print("The challenged player %d was bluffing!!" % (currPlaya)) self.savelog( "Player %d was bluffing, Player %d lost the Challenge" % (currPlaya, currPlaya)) self.Playerlist[currPlaya - 1].cardStatusSet(cardLostC) print("So he loses his influence card number %d" % (cardLost)) self.Playerlist[currPlaya - 1].gameStatus() if self.Playerlist[currPlaya - 1].isInGame == 0: self.savelog("Player %d died" % (currPlaya)) return 0 elif mode == 2: print(self.Playerlist[currPlaya - 1].printCardType(1)) print(self.Playerlist[currPlaya - 1].printCardType(2)) if actionToChall == 2: actionToChall = 4 elif actionToChall == 3: actionToChall = 13 elif actionToChall == 6: actionToChall = 5 else: return 1 actiontoChallS = str(actionToChall) print(actiontoChallS) print(str(whatItDo[0])) print(str(whatItDo[1])) if actiontoChallS.find(str(whatItDo[0])) != -1 and self.Playerlist[ currPlaya - 1].specCardStatus(1) == "hidden": print("The challenged player %d was not bluffing!!" % (currPlaya)) self.savelog( "Player %d was not bluffing, Player %d lost the Challenge" % (currPlaya, playerattack)) self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card1, 1), 1) print("So player %d lost his influence card number %d" % (playerattack, cardLost)) print(self.Playerlist[currPlaya - 1].printCardType(1)) print(self.Playerlist[currPlaya - 1].printCardType(2)) self.Playerlist[playerattack - 1].cardStatusSet(cardLost) self.Playerlist[playerattack - 1].gameStatus() if self.Playerlist[playerattack - 1].isInGame == 0: self.savelog("Player %d died" % (playerattack)) return 0 elif actiontoChallS.find(str( whatItDo[1])) != -1 and self.Playerlist[ currPlaya - 1].specCardStatus(1) == "hidden": print("The challenged player %d was not bluffing!!" % (currPlaya)) self.savelog( "Player %d was not bluffing, Player %d lost the Challenge" % (currPlaya, playerattack)) self.Playerlist[currPlaya - 1].setCard( self.Ddeck.replaceCard( self.Playerlist[currPlaya - 1].card2, 1), 2) print("So player %d lost his influence card number %d" % (playerattack, cardLost)) print(self.Playerlist[currPlaya - 1].printCardType(1)) print(self.Playerlist[currPlaya - 1].printCardType(2)) self.Playerlist[playerattack - 1].cardStatusSet(cardLost) self.Playerlist[playerattack - 1].gameStatus() if self.Playerlist[playerattack - 1].isInGame == 0: self.savelog("Player %d died" % (playerattack)) return 0 else: print("The challenged player %d was bluffing!!" % (currPlaya)) self.savelog( "Player %d was bluffing, Player %d lost the Challenge" % (currPlaya, currPlaya)) self.Playerlist[currPlaya - 1].cardStatusSet(cardLostC) print("So he looses his influence card number %d" % (cardLostC)) self.Playerlist[currPlaya - 1].gameStatus() if self.Playerlist[currPlaya - 1].isInGame == 0: self.savelog("Player %d died" % (currPlaya)) print(self.Playerlist[currPlaya - 1].printCardType(1)) print(self.Playerlist[currPlaya - 1].printCardType(2)) return 1 def PlayerTurn(self, currPlaya): playy = currPlaya + 1 self.canDoAction = 1 print("Player number %d it's your turn" % (playy)) print("================================") ccoins = 0 while ccoins < self.playerCount: print("Player %d´s coins: %d" % (ccoins + 1, self.Playerlist[ccoins].coins)) print("Player %d´s card 1 status: %s" % (ccoins + 1, self.Playerlist[ccoins].specCardStatus(1))) print("Player %d´s card 2 status: %s" % (ccoins + 1, self.Playerlist[ccoins].specCardStatus(2))) ccoins += 1 print("================================") print("Your cards: %s , %s" % (self.Playerlist[currPlaya].printCardType(1), self.Playerlist[currPlaya].printCardType(2))) print("Your cards status: %s , %s" % (self.Playerlist[currPlaya].specCardStatus(1), self.Playerlist[currPlaya].specCardStatus(2))) if self.Playerlist[currPlaya].coins >= 10: print("You automatically do a coup!") print("What player do you want to do a coup on?") loop = 0 while loop == 0: playerToCoup = int(input()) if (playerToCoup == playy or playerToCoup < 0 or playerToCoup > len(self.Playerlist)): loop = 0 print("You can't select that, Select again") elif (playerToCoup > 0 and playerToCoup < len(self.Playerlist)): loop = 1 else: print("bruh") cardLost = random.randint(1, 2) print("So player %d lost his influence card number %d" % (playerToCoup, cardLost)) self.savelog("Player %d COUP Player %d" % (playy, playerToCoup)) self.Playerlist[playerToCoup - 1].cardStatusSet(cardLost) self.Playerlist[playerToCoup - 1].gameStatus() if self.Playerlist[playerToCoup - 1].isInGame == 0: self.savelog("Player %d died" % (playerToCoup)) self.Playerlist[currPlaya].coinsChange(-7) print("Your current ammount of coins is %d" % (self.Playerlist[currPlaya].coins)) return 6 print( "Player %d do you want to perform a Normal accion(Coin draw) or a card accion" % (playy)) print("CARD ACTION = (0)\nNORMAL ACTION = (1)") select = int(input()) if (select == 0): print("\nPlease select wich Card Action you want to perform") print( "TAX = (1)\nASSASSINATE = (2)\nEXCHANGE = (3)\nSTEAL = (4)\n") select = int(input()) if (select == 1): self.currActionPlaying = 5 self.savelog("Player %d used TAX action" % (playy)) print( "Does any player want to Challenge this action?\nIf more than one, use separate player numbers by using commas\nor leave empty if no one wants to do anything" ) counterPlayers = input().split(",") print(counterPlayers) if counterPlayers[0] == "": self.canDoAction == 1 elif self.playerCount > len(counterPlayers) >= 2: print( "picking random player from the players that decided to attack" ) random.shuffle(counterPlayers) playerchallenge = int(counterPlayers[0]) if playerchallenge == playy: playerchallenge = int(counterPlayers[1]) elif self.Playerlist[playerchallenge - 1].isInGame == 0: self.canDoAction = 1 else: print("Player %d challenges Player %d!!" % (playerchallenge, playy)) self.savelog("Player %d Challenge Player %d TAX" % (playerchallenge, playy)) self.canDoAction = self.challengePlayer( playy, playerchallenge, 1) elif len(counterPlayers ) == 1 and len(counterPlayers) <= self.playerCount: playerchallenge = int(counterPlayers[0]) if playerchallenge == playy: self.canDoAction = 1 elif self.Playerlist[playerchallenge - 1].isInGame == 0: self.canDoAction = 1 else: print("Player %d challenges Player %d!!" % (playerchallenge, playy)) self.savelog("Player %d Challenge Player %d Action" % (playerchallenge, playy)) self.canDoAction = self.challengePlayer( playy, playerchallenge, 1) #return self.canDoAction if self.canDoAction == 1: print("Player%d Does the action" % (playy)) self.DoCardAction(playy, 1) else: print("Player%d Does not do the action" % (playy)) return 1 if (select == 2): if self.Playerlist[currPlaya].coins >= 3: self.savelog("Player %d used ASSASSINATE action" % (playy)) self.currActionPlaying = 2 self.canDoAction = self.counterAction(playy) if self.canDoAction == 1: print("Player%d Does the action" % (playy)) self.DoCardAction(playy, 2) self.Playerlist[currPlaya].coinsChange(-3) print("Your current ammount of coins is %d" % (self.Playerlist[currPlaya].coins)) else: print("Player%d Does not do the action" % (playy)) return 2 else: print("You don´t have enough coins to do this action") if (select == 3): self.savelog("Player %d used EXCHANGE action" % (playy)) self.currActionPlaying = 1 print( "Does any player want to Challenge this action?\nIf more than one, use separate player numbers by using commas\nor leave empty if no one wants to do anything" ) counterPlayers = input().split(",") print(counterPlayers) if counterPlayers[0] == "": self.canDoAction == 1 elif self.playerCount > len(counterPlayers) >= 2: print( "picking random player from the players that decided to attack" ) random.shuffle(counterPlayers) playerchallenge = int(counterPlayers[0]) if playerchallenge == playy: playerchallenge = int(counterPlayers[1]) elif self.Playerlist[playerchallenge - 1].isInGame == 0: self.canDoAction = 1 else: print("Player %d challenges Player %d!!" % (playerchallenge, playy)) self.savelog("Player %d Challenge Player %d action" % (playerchallenge, playy)) self.canDoAction = self.challengePlayer( playy, playerchallenge, 1) elif len(counterPlayers ) == 1 and len(counterPlayers) <= self.playerCount: playerchallenge = int(counterPlayers[0]) if playerchallenge == playy: self.canDoAction = 1 elif self.Playerlist[playerchallenge - 1].isInGame == 0: self.canDoAction = 1 else: print("Player %d challenges Player %d!!" % (playerchallenge, playy)) self.savelog("Player %d Challenge Player %d action" % (playerchallenge, playy)) self.canDoAction = self.challengePlayer( playy, playerchallenge, 1) #return self.canDoAction if self.canDoAction == 1: print("Player%d Does the action" % (playy)) self.DoCardAction(playy, 3) else: print("Player%d Does not do the action" % (playy)) return 3 if (select == 4): self.savelog("Player %d used STEAL action" % (playy)) self.currActionPlaying = 3 self.canDoAction = self.counterAction(playy) if self.canDoAction == 1: print("Player%d Does the action" % (playy)) self.DoCardAction(playy, 4) else: print("Player%d Does not do the action" % (playy)) return 4 elif (select == 1): print("Please Select wich Normal Action you want to perform") print("1:INCOME= (1)\n2:FOREING AID= (2)\n3:COUP = (3)") select = int(input()) if select == 1: self.Playerlist[currPlaya].coinsChange(1) print( "You got 1 coins from income!\nYour current ammount of coins is %d" % (self.Playerlist[currPlaya - 1].coins)) self.savelog("Player %d got 1 coin with INCOME" % (playy)) return 5 elif select == 2: self.currActionPlaying = 6 self.savelog("Player %d used FOREING AID action" % (playy)) print( "Does any player want to Counterattack this action?\nIf more than one, use separate player numbers by using commas\nor leave empty if no one wants to do anything" ) counterPlayers = input().split(",") print(counterPlayers) if counterPlayers[0] == "": self.canDoAction == 1 elif self.playerCount > len(counterPlayers) >= 2: print( "picking random player from the players that decided to attack" ) random.shuffle(counterPlayers) playerattack = int(counterPlayers[0]) if playerattack == playy: playerattack = int(counterPlayers[1]) elif self.Playerlist[playerattack - 1].isInGame == 0: self.canDoAction = 1 else: print("Player %d CounterAttack Player %d" % (playerattack, playy)) self.savelog( "Player %d Counterattack Player %d Counterattack" % (playerattack, playy)) print( "Does any player want to Challenge this action?\nIf more than one, use separate player numbers by using commas\nor leave empty if no one wants to do anything" ) counterPlayers = input().split(",") print(counterPlayers) if counterPlayers[0] == "": self.canDoAction == 0 elif self.playerCount > len(counterPlayers) >= 2: print( "picking random player from the players that decided to attack" ) random.shuffle(counterPlayers) playerchallenge = int(counterPlayers[0]) if playerchallenge == playy: playerchallenge = int(counterPlayers[1]) elif self.Playerlist[playerchallenge - 1].isInGame == 0: self.canDoAction = 0 else: print("Player %d challenges Player %d!!" % (playerchallenge, playerattack)) self.savelog( "Player %d Challenge Player %d Counterattack" % (playerchallenge, playerattack)) self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) elif len(counterPlayers) == 1 and len( counterPlayers) <= self.playerCount: playerchallenge = int(counterPlayers[0]) if playerchallenge == playy: self.canDoAction = 0 elif self.Playerlist[playerchallenge - 1].isInGame == 0: self.canDoAction = 0 else: print("Player %d challenges Player %d!!" % (playerchallenge, playerattack)) self.savelog( "Player %d Challenge Player %d Counterattack" % (playerchallenge, playerattack)) self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) #return self.canDoAction elif len(counterPlayers ) == 1 and len(counterPlayers) <= self.playerCount: playerattack = int(counterPlayers[0]) if playerattack == playy: self.canDoAction = 1 elif self.Playerlist[playerattack - 1].isInGame == 0: self.canDoAction = 1 else: print("Player %d CounterAttack Player %d" % (playerattack, playy)) self.savelog( "Player %d Counterattack Player %d action" % (playerattack, playy)) print( "Does any player want to Challenge this action?\nIf more than one, use separate player numbers by using commas\nor leave empty if no one wants to do anything" ) counterPlayers = input().split(",") print(counterPlayers) if counterPlayers[0] == "": self.canDoAction == 0 elif self.playerCount > len(counterPlayers) >= 2: print( "picking random player from the players that decided to attack" ) random.shuffle(counterPlayers) playerchallenge = int(counterPlayers[0]) if playerchallenge == playy: playerchallenge = int(counterPlayers[1]) elif self.Playerlist[playerchallenge - 1].isInGame == 0: self.canDoAction = 0 else: print("Player %d challenges Player %d!!" % (playerchallenge, playerattack)) self.savelog( "Player %d Challenge Player %d Counterattack" % (playerchallenge, playerattack)) self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) elif len(counterPlayers) == 1 and len( counterPlayers) <= self.playerCount: playerchallenge = int(counterPlayers[0]) if playerchallenge == playy: self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) elif self.Playerlist[playerchallenge - 1].isInGame == 0: self.canDoAction = 0 else: print("Player %d challenges Player %d!!" % (playerchallenge, playerattack)) self.savelog( "Player %d Challenge Player %d Counterattack" % (playerchallenge, playerattack)) self.canDoAction = self.challengePlayer( playerattack, playerchallenge, 2) if self.canDoAction == 1: print("Player %d Does the action" % (playy)) self.Playerlist[currPlaya].coinsChange(2) print( "You got 2 coins from from a foreing country!\nYour current ammount of coins is %d" % (self.Playerlist[currPlaya].coins)) self.savelog("Player %d got 2 coins with FOREING AID" % (playy)) else: print("Player%d Does not do the action" % (playy)) return 6 elif select == 3: if self.Playerlist[currPlaya].coins >= 7: print("What player do you want to do a coup on?") self.savelog("Player %d used COUP action" % (playy)) playerToCoup = int(input()) cardLost = random.randint(1, 2) print("So player %d lost his influence card number %d" % (playerToCoup, cardLost)) self.savelog("Player %d COUP Player %d" % (playy, playerToCoup)) self.Playerlist[playerToCoup - 1].cardStatusSet(cardLost) self.Playerlist[playerToCoup - 1].gameStatus() if self.Playerlist[playerToCoup - 1].isInGame == 0: self.savelog("Player %d died" % (playerToCoup)) self.Playerlist[currPlaya].coinsChange(-7) print("Your current ammount of coins is %d" % (self.Playerlist[currPlaya].coins)) return 6 else: print("You don´t have enough coins to do this action") def loglist(self): self.totalLog.append(self.Log) def savelog(self, action): self.Log.append(action) def printlog(self): for i in range(len(self.totalLog)): for j in range(len(self.totalLog[i])): print(self.totalLog[i][j]) def startGame(self): self.playersLeft = [] #start self.Log = [] self.totalLog = [] self.Ddeck = Deck() self.Ddeck.GenerateCards() self.Playerlist = [] card11 = self.Ddeck.takeCard() card22 = self.Ddeck.takeCard() player1 = Player(1, 2, card11, card22) self.playersLeft.append(1) self.Playerlist.append(player1) card11 = self.Ddeck.takeCard() card22 = self.Ddeck.takeCard() player2 = Player(2, 2, card11, card22) self.playersLeft.append(1) #player2.SeeCards() self.Playerlist.append(player2) card11 = self.Ddeck.takeCard() card22 = self.Ddeck.takeCard() player3 = Player(3, 2, card11, card22) self.Playerlist.append(player3) self.playersLeft.append(1) #player3.SeeCards() if self.playerCount == 4: card11 = self.Ddeck.takeCard() card22 = self.Ddeck.takeCard() player4 = Player(4, 2, card11, card22) self.Playerlist.append(player4) self.playersLeft.append(1) ActiveGame = 1 curPlaya = 1 turnNum = 1 logturns = 0 #print(len(self.Playerlist)) while (ActiveGame == 1): if self.playersLeft != 1: if (self.Playerlist[curPlaya - 1].isInGame == 1): print("▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓") print("Turn number %d\n" % (turnNum)) self.PlayerTurn(curPlaya - 1) #self.printlog() isBruh = 0 while isBruh < self.playerCount: if self.Playerlist[isBruh].isInGame == 0: self.playersLeft[isBruh] = 0 isBruh += 1 if self.playerCount == 3: if self.playersLeft[0] + self.playersLeft[ 1] + self.playersLeft[2] == 1: if self.playersLeft[0] == 1: winna = 1 elif self.playersLeft[1] == 1: winna = 2 elif self.playersLeft[2] == 1: winna = 3 print("Player %d has won!" % (winna)) ActiveGame = 0 else: if self.playersLeft[0] + self.playersLeft[ 1] + self.playersLeft[2] + self.playersLeft[ 3] == 1: if self.playersLeft[0] == 1: winna = 1 elif self.playersLeft[1] == 1: winna = 2 elif self.playersLeft[2] == 1: winna = 3 elif self.playersLeft[3] == 1: winna = 4 print("Player %d has won!" % (winna)) ActiveGame = 0 logturns += 1 curPlaya += 1 if curPlaya > self.playerCount: curPlaya = 1 self.savelog("_______turn %d_______" % (turnNum)) self.loglist() self.Log = [] curPlaya = 1 print("\n") print( "Do you want to see the logs of the last rounds?") print("Yes = (0)\nNo = (1)") answer = input() if int(answer) == 0: print("_______LOGS_______") self.printlog() if logturns >= 12: logturns -= 4 self.totalLog.pop(0) turnNum += 1 print("\n") else: curPlaya += 1 logturns += 1 if curPlaya > self.playerCount: self.savelog("_______turn %d_______" % (turnNum)) self.loglist() self.Log = [] curPlaya = 1 print("\n") print("Do you want to see the logs of the last plays?") print("Yes = (0)\nNo = (1)") answer = input() if int(answer) == 0: print("_______LOGS_______") self.printlog() if logturns > 12: logturns -= 4 self.totalLog.pop(0) turnNum += 1 print("\n")