def start_SailBot(): """ Starts all the captain, helmsman, and sensor services. Side effects: - Prints to stdout """ global captain, helmsman, sensor_thread # Create captain instance print("setting up captain") captain = Captain() captain.setup() # Create helmsman listening to captain print("setting up helmsman") helmsman = Helmsman(captain) helmsman.setup() # Start Airmar and RC readin' loop print("setting up sensor communicator") sensor_thread = SensorThread() sensor_thread.start() print("starting finished") if (debug_mode): track_logger.setup(captain) light_setter.setup() ship_data.start_time = time.time()
def action_steal(victim, player): if victim.coins == 1: value = Captain.steal_1() victim.coins -= value player.coins += value elif victim.coins == 0: print(f'{victim.name} has no coins') else: value = Captain.steal_2() victim.coins -= value player.coins += value
def start_SailBot(): global captain, helmsman, sensor_thread # Create captain instance captain = Captain() captain.setup() # Create helmsman listening to captain helmsman = Helmsman(captain) helmsman.setup() # Start Airmar and RC readin' loop sensor_thread = SensorThread() sensor_thread.start()
def __init__(self, jsquad): # Create new ID if new squad if jsquad["uid"] == "": self.uid = uuid.uuid4().hex else: self.uid = jsquad["uid"] self.name = jsquad["name"] self.owner = jsquad["owner"] self.private = jsquad["private"] self.credits = jsquad["credits"] self.stash = [Item(x) for x in jsquad["stash"]] self.roster = [Teammember(x) for x in jsquad["roster"]] self.captain = Captain(jsquad["captain"]) self.hierophant = Hierophant(jsquad["hierophant"])
def cards(): duke = Duke(1) contessa = Contessa(2) captain = Captain(3) ambassador = Ambassador(4) assassin = Assassin(5) diferent_card = [duke, contessa, captain, ambassador, assassin] return diferent_card
def GenerateCards(self): ambas1 = Ambassador(1) ambas2 = Ambassador(1) ambas3 = Ambassador(1) assasin1 = Assasin(2) assasin2 = Assasin(2) assasin3 = Assasin(2) captain1 = Captain(3) captain2 = Captain(3) captain3 = Captain(3) contessa1 = Contessa(4) contessa2 = Contessa(4) contessa3 = Contessa(4) duke1 = Duke(5) duke2 = Duke(5) duke3 = Duke(5) self.cardDeck = [ ambas1, ambas2, ambas3, assasin1, assasin2, assasin3, captain1, captain2, captain3, contessa1, contessa2, contessa3, duke1, duke2, duke3 ] random.shuffle(self.cardDeck) return self.cardDeck
def main(): printer.startup() name_cards=['duke ♕','contessa ♔','captain ⌘','ambassador ✎','assassin ⚔'] cards=Cards() #Deck creation stop_2=0 duke = Duke(1) contessa = Contessa(2) captain = Captain(3) ambassador = Ambassador(4) assassin = Assassin(5) cards.create_cards() while stop_2 !=1: #Player creation if stop_2 == 2: print ("You have entered an invalid number, please try again") print("Select number of players, 3 or 4?\n") value= printer.inputverifier(input()) if value<3 or value > 4: stop_2=2 elif value ==3: names=[] all_cards=[] for x in range(3): cards.delete_card() card_play=[[1,cards.s_card]] cards.delete_card() card_play.append([1,cards.s_card]) all_cards.append(card_play) print("Enter player name "+str(x+1)) name=input() names.append(name) player_1=Player(names[0],2,all_cards[0]) player_2=Player(names[1],2,all_cards[1]) player_3=Player(names[2],2,all_cards[2]) player_4=0 players=[player_1,player_2,player_3] stop_2=1 else: stop_2=1 names=[] all_cards=[] for x in range(4): cards.delete_card() card_play=[[1,cards.s_card]] cards.delete_card() card_play.append([1,cards.s_card]) all_cards.append(card_play) print("Enter player name "+str(x+1)) name=input() names.append(name) player_1=Player(names[0],2,all_cards[0]) player_2=Player(names[1],2,all_cards[1]) player_3=Player(names[2],2,all_cards[2]) player_4=Player(names[3],2,all_cards[3]) players=[player_1,player_2,player_3,player_4] stop_1=0 print("\n") print("\n") l_names=len(names) turn=0 while stop_1 != 1: stp=0 while stp != 1: ve=0 player = players[turn] printer.print_all(turn,players,name_cards) elec = printer.election(names,turn,players) win=10 val=10 win_2=10 if elec == 0: # Election can't be challenged or countered player.change_coins(1) if elec == 1: # Election can't be challenged or countered player.change_coins(-7) print('Which player do you want to hit?') for x in range(len(names)): if turn != x: print(f"{x}) {names[x]}") valu= printer.inputverifier(input()) play=players[valu] play.raise_card(name_cards) ##Creates cards if elec > 2: win ,chall,participation =printer.priority_challeng(names,turn) #Picks priority else: if elec != 2: print("\n This action cannot be challenged or countered") break else: participation=[10] ''' if elec == 3 and win == 10: print ("Tax action not countered, proceeds to be executed") player.change_coins(3) break ''' if elec == 2 or elec == 5 or elec == 4: va=1 if win == 10: print( "\n as no one challenged, we proceed with the counter attacks") val=printer.counter(names,turn,participation,players,name_cards) else: if chall<l_names: print("We proceed with the counter attacks") val = printer.counter(names,turn,participation,players,name_cards) if val != 10: win_2 = printer.priority_challeng(names,val) veri=0 if type(win_2)==int: if win_2 != 10: veri=1 else: if win_2[0] != 10: veri =1 if veri == 1: print( "As two challenges have been generated," " it will be chosen when grilling 1" ) cha = [[win,turn],[win_2[0],val]] ve = random.randint(0,1) #first disorder gg = cha[ve] print(f"The winner to face {names[gg[1][0]-1]} is {names[gg[0][1]-1]}") stp=1 break else: va=0 stp=1 if elec >= 2: veri_chang = True veri_counter = True if val == 10: veri_counter = False if ve == 0 and elec >2: #Challenges election 1 if win != 10: print("---"*30) if elec == 3: verification_card = 1 elif elec == 4: verification_card = 3 elif elec == 5: verification_card = 5 elif elec == 6: verification_card = 4 play_cards=player.cards if play_cards[0][1]!=verification_card and play_cards[1][1]!=verification_card: #Doesn't have the card print(f'Player {player.name} did not have the card \n') player.raise_card(name_cards) veri_chang=False if val != 10 and va != 0: print( f"against attack it will not be carried out player {player.name} did not have the card" ) else: top=0 if play_cards[0][1] == verification_card and play_cards[0][0] == 1: top=1 if play_cards[1][1] == verification_card and play_cards[1][0] == 1: top=1 if top == 1: # Here it changes player cards print( f'Player {player.name} did have the card {name_cards[verification_card-1]}\n') print('Starting card exchange, this' ' will be reflected in the next round') player.chang_card(cards,value) if val != 0: print('The counter attacks will be carried out') # Check this print later play = players[win] print(f'Player {play.name} lost the challenge \n') play.raise_card(name_cards) else: print(f'Player {player.name} did not have the card \n') player.raise_card(name_cards) veri_chang = False if val != 10 and va != 0: print(f"against attack it will not be carried out player {player.name} did not have the card") if ve == 1: #Checks challenges to counter attacks if elec == 2: veri_card_1 = 1 veri_card_2 = 0 elif elec == 5: veri_card_1 = 2 veri_card_2 = 0 elif elec == 4: veri_card_1 = 4 veri_card_2 = 3 play=players[va] play_cards=play.cards top_2 = 0 if play_cards[0][1] == veri_card_1 or play_cards[0][0] == veri_card_2: if play_cards[0][0] == 1: top_2 = 1 if play_cards[1][1] == veri_card_1 or play_cards[1][1] == veri_card_2: if play_cards[1][0] == 1: top_2 = 1 if top_2 == 1: print(f'Player {player.name} did have the card \n') #Changes player cards print('Starting card exchange, this ' 'will be reflected in the next round') player.chang_card(cards,value) play_2 = players[win_2] c_1=veri_card_1 c_2=veri_card_2 print(f'Player {play_2.name} lost the challenge \n') play_2.raise_card(name_cards) if top_2 == 0: print(f'Player {player.name} did not have the card \n') play.raise_card(name_cards) veri_counter = False print('against attack will not be carried out') if veri_counter == True: if elec == 2: c_1 = 1 c_2 = 0 elif elec == 5: c_1 = 2 c_2 = 0 elif elec == 4: c_1 = 4 c_2 = 3 if c_1 == 1: duke.block_help if c_1 == 5: contessa.block_killer if c_1 == 4: Ambassador.block_extotion if c_2 == 3: captain.block_extotion if veri_chang == True: if elec == 3: duke.plus_tax(player) if elec == 4: print(f'Player {player.name} which player do you want to extort?') for x in range(len(names)): if turn != x: print(f"{x}) {names[x]}") valu= printer.inputverifier(input()) play=players[valu] captain.extortion(ambassador,player,play) if elec == 2: if duke.block == True: player.change_coins(2) else: duke.block = True if elec == 5: print('Which player do you want to assassin?') for x in range(len(names)): if turn != x: print(f"{x}) {names[x]}") valu= printer.inputverifier(input()) play=players[valu] assassin.killer(player,contessa,play,name_cards) if elec == 6: ambassador.excahnge_card(duke,cards,player,name_cards) for pl in players: pl.End_game(False) loser=[] for t in range(len(players)): pl=players[t] if pl.life == False: print(f"{pl.name} loses the game") loser.append(t) if len(loser)>0: for x in loser: players.pop(x) names.pop(x) if len(players) == 1: win_play=players[0] print(f"{win_play.name} wins the game," " has absolute control over the city") stop_1=1 break turn += 1 if turn>len(names)-1: turn=0
def gameplay(): deck = [ 'Duke', 'Duke', 'Duke', 'Assassin', 'Assassin', 'Assassin', 'Ambassador', 'Ambassador', 'Ambassador', 'Captain', 'Captain', 'Captain', 'Contessa', 'Contessa', 'Contessa' ] random.shuffle(deck) influences = [ Duke('Duke'), Assassin('Assasin'), Ambassador('Ambassador'), Captain('Captain'), Contessa('Contessa') ] a = True while a == True: num_player = int(input("How many players?: ")) if num_player == 3 or num_player == 4: a = False else: print("You can play with 3 or 4 players") print() total_players = [] nara = ['None', 'None'] if num_player == 3: Player1 = create_players(deck, 1) Player2 = create_players(deck, 2) Player3 = create_players(deck, 3) Player4 = create_players(nara, 4) total_players.append(Player1) total_players.append(Player2) total_players.append(Player3) else: Player1 = create_players(deck, 1) Player2 = create_players(deck, 2) Player3 = create_players(deck, 3) Player4 = create_players(deck, 4) total_players.append(Player1) total_players.append(Player2) total_players.append(Player3) total_players.append(Player4) round_ = 1 while True: for k in range(num_player): plyer = total_players[k] print() print(f'----- Player{k+1} it´s your turn -----') if plyer.card1 == None and plyer.card2 == None: print('You have lost') else: if num_player == 3: if plyer.name == Player1.name: boardfor3(Player1, Player2, Player3) elif plyer.name == Player2.name: boardfor3(Player2, Player3, Player1) elif plyer.name == Player3.name: boardfor3(Player3, Player1, Player2) else: if plyer.name == Player1.name: boardfor4(Player1, Player2, Player3, Player4) elif plyer.name == Player2.name: boardfor4(Player2, Player3, Player4, Player1) elif plyer.name == Player3.name: boardfor4(Player3, Player4, Player1, Player2) elif plyer.name == Player4.name: boardfor4(Player4, Player1, Player2, Player3) valid = 'Today' print(f'Your cards are: {plyer.card1} {plyer.card2}') # ACTION if plyer.coins < 10: menu1 = menu_selection() if menu1 == 4: menu1 = influences_actions() if menu1 != 1 and menu1 != 3: other_players = total_players.copy() other_players.pop(k) p_action = [] do = [] if menu1 == 6: victim_to_kill = str( input( 'Choose a player to assassinate (Ex: Player1): ' )) if victim_to_kill == plyer.name: print("You can´t kill yourself") victim_to_kill = str( input( 'Choose a player to assassinate (Ex: Player1): ' )) if victim_to_kill == plyer.name: print( "We have already told you, you can NOT kill yourself." ) # COUNTERACT / CHALLENGE / NOTHING for y in range(len(other_players)): if other_players[y].card1 == None and other_players[ y].card2 == None: Game.lose(Player1, Player2, Player3, Player4) else: print(f'---{other_players[y].name}---') print( f'Your cards are: {other_players[y].card1} {other_players[y].card2}' ) option = menu_options() if option == 2: p_action.append(other_players[y]) do.append('Counteract') elif option == 3: p_action.append(other_players[y]) do.append('Challenge') encounter = 0 ch = 0 if len(do) >= 1: for j in range(len(do)): if do[j] == 'Counteract': encounter += 1 elif do[j] == 'Challenge': ch += 1 if menu1 == 2: print('You can`t challenge this action') else: if ch == 1: pos = do.index('Challenge') pp = p_action[pos] print(f'---{pp.name}---') print('Challenge') print( f'{pp.name} is challenging {plyer.name}' ) valid, deck = Challenge.challenge_actions( pp, plyer, menu1, deck) elif ch > 1: ran = int(random.uniform(1, ch)) print(ran) for j in range(ran): do.pop(0) p_action.pop(0) pp = p_action[0] print(f'---{pp.name}---') print('Challenge') print( f'{pp.name} is challenging {plyer.name}' ) valid, deck = Challenge.challenge_actions( pp, plyer, menu1, deck) if encounter == 1 and valid != "Not_Today": pos = do.index('Counteract') pp = p_action[pos] print() print(f'---{pp.name}---') print('Counteract') print( f'{pp.name} is counteracting {plyer.name}') count_ = menu_counteract() if count_ == 1: valid, deck = Duke.counteract_FA( pp, plyer, deck) elif count_ == 2: valid, deck = Ambassador.counteract_stealing( pp, plyer, deck) elif count_ == 3: valid, deck = Captain.counteract_stealing( pp, plyer, deck) elif count_ == 4: valid, deck = Contessa.counteract_assassin( pp, plyer, deck) elif encounter > 1: ran = int(random.uniform(1, encounter)) print(ran) for j in range(ran): do.pop(0) p_action.pop(0) pp = p_action[0] print(f'---{pp.name}---') print('Counteract') print( f'{pp.name} is counteracting {plyer.name}') count_ = menu_counteract() if count_ == 1: valid, deck = Duke.counteract_FA( pp, plyer, deck) elif count_ == 2: valid, deck = Ambassador.counteract_stealing( pp, plyer, deck) elif count_ == 3: valid, deck = Captain.counteract_stealing( pp, plyer, deck) elif count_ == 4: valid, deck = Contessa.counteract_assassin( pp, plyer, deck) else: valid = 'Today' #DO ACTION 1 if menu1 == 2 and valid != 'Not_Today': Game.action_FA(plyer) elif menu1 == 5 and valid != 'Not_Today': Game.action_tax(plyer) elif menu1 == 6 and valid != 'Not_Today': if plyer.coins >= 3: if victim_to_kill == Player1.name and victim_to_kill != plyer.name: Game.action_assassinate(Player1, plyer) elif victim_to_kill == Player2.name and victim_to_kill != plyer.name: Game.action_assassinate(Player2, plyer) elif victim_to_kill == Player3.name and victim_to_kill != plyer.name: Game.action_assassinate(Player3, plyer) elif victim_to_kill == Player4.name and victim_to_kill != plyer.name: Game.action_assassinate(Player4, plyer) else: print( f'You can´t assassinate because you have ¢{plyer.coins} coins' ) elif menu1 == 7 and valid != 'Not_Today': deck = Game.action_exchange(plyer, deck) elif menu1 == 8 and valid != 'Not_Today': mugged = str( input( 'Choose a player to steal coins from (Ex: Player1): ' )) if mugged == plyer.name: print("You can´t steal coins from yourself.") mugged = str( input( 'Choose a player to steal coins from (Ex: Player1): ' )) if mugged == plyer.name: print( "We have already told you, you can NOT steal coins from yourself." ) if mugged == Player1.name and mugged != plyer.name: Game.action_steal(Player1, plyer) elif mugged == Player2.name and mugged != plyer.name: Game.action_steal(Player2, plyer) elif mugged == Player3.name and mugged != plyer.name: Game.action_steal(Player3, plyer) elif mugged == Player4.name and mugged != plyer.name: Game.action_steal(Player4, plyer) #DO ACTION 2 else: if menu1 == 1: Game.action_income(plyer) elif menu1 == 3: if plyer.coins >= 7: plyer.coins -= 7 victim = str( input( 'Choose a player to coup (Ex: Player1): ' )) if victim == plyer.name: print("You can´t Coup yourself.") victim = str( input( 'Choose a player to coup (Ex: Player1): ' )) if victim == plyer.name: print( "We have already told you, you can NOT Coup yourself." ) if victim == Player1.name and victim != plyer.name: Game.action_Coup(Player1) elif victim == Player2.name and victim != plyer.name: Game.action_Coup(Player2) elif victim == Player3.name and victim != plyer.name: Game.action_Coup(Player3) elif victim == Player4.name and victim != plyer.name: Game.action_Coup(Player4) else: print( f'You can´t coup because you have ¢{plyer.coins} coins' ) else: print('You have to coup') plyer.coins -= 7 victim = str( input('Choose a player to coup (Ex: Player1): ')) if victim == plyer.name: print("You can´t Coup yourself.") victim = str( input('Choose a player to coup (Ex: Player1): ')) if victim == plyer.name: print( "We have already told you, you can NOT Coup yourself." ) if victim == Player1.name and victim != plyer.name: Game.action_Coup(Player1) elif victim == Player2.name and victim != plyer.name: Game.action_Coup(Player2) elif victim == Player3.name and victim != plyer.name: Game.action_Coup(Player3) elif victim == Player4.name and victim != plyer.name: Game.action_Coup(Player4) Game.lose(Player1, Player2, Player3, Player4) if num_player == 3: if plyer.name == Player1.name: boardfor3(Player1, Player2, Player3) elif plyer.name == Player2.name: boardfor3(Player2, Player3, Player1) elif plyer.name == Player3.name: boardfor3(Player3, Player1, Player2) else: if plyer.name == Player1.name: boardfor4(Player1, Player2, Player3, Player4) elif plyer.name == Player2.name: boardfor4(Player2, Player3, Player4, Player1) elif plyer.name == Player3.name: boardfor4(Player3, Player4, Player1, Player2) elif plyer.name == Player4.name: boardfor4(Player4, Player1, Player2, Player3) random.shuffle(deck) Game.lose(Player1, Player2, Player3, Player4) losers = 0 for k in range(num_player): pl = total_players[k] if pl.card1 == None and pl.card2 == None: losers += 1 if losers + 1 == num_player: for k in range(num_player): pl = total_players[k] if pl.card1 != None or pl.card2 != None: print( f"{pl.name} you have won the game. You have exiliated everyone!" ) print("Congratulations! ☺") print() break if losers + 1 == num_player: break round_ += 1
# Python3 JSON Examples import json from captain import Captain from starships import Starship, KlingonStarship starship_list = [ Starship("Enterprise", Captain(name="Jean-Luc", surname="Picard")), Starship("Voyager", Captain(name="Kathryn", surname="Janeway")), Starship("Defiant", Captain(name="Benjamin", surname="Sisco")), Starship("Unknown", Captain(name="Nobody")) ] json_data = json.dumps(starship_list, default=lambda o: o.__dict__, indent=4) with open("starships.json", "w") as json_file: json.dump(json_data, json_file) with open("starships.json") as json_file: json_data_reloaded = json.load(json_file) print(json_data_reloaded) # [ # { # "name": "Enterprise", # "captain": { # "name": "Jean-Luc", # "surname": "Picard" # }, # "stardate": 0
def engage(self, warp=9): print("Warp " + str(warp) + ", engage!") def raise_shields(self): print("Raising shields.") # Note: In Python2, class has to be defined with # object in parentheses, e.g.: # class Starship(object) if __name__ == "__main__": # Note: Code inside the block will only be executed # if the module is run directly, not if it is imported enterprise = Starship("Enterprise", Captain("Jean-Luc", "Picard")) print( "Created " + enterprise.name + " and assigned it to " + enterprise.captain.get_name() + "." ) # Created Enterprise and assigned it to Jean-Luc Picard. if enterprise.stardate == 0: print("Strange stardate found.") # Strange stardate found. enterprise.engage() # Warp 9, engage! class KlingonStarship(Starship):
class Squad: def __init__(self, jsquad): # Create new ID if new squad if jsquad["uid"] == "": self.uid = uuid.uuid4().hex else: self.uid = jsquad["uid"] self.name = jsquad["name"] self.owner = jsquad["owner"] self.private = jsquad["private"] self.credits = jsquad["credits"] self.stash = [Item(x) for x in jsquad["stash"]] self.roster = [Teammember(x) for x in jsquad["roster"]] self.captain = Captain(jsquad["captain"]) self.hierophant = Hierophant(jsquad["hierophant"]) def change_name(self, new_name): self.name = new_name def change_captain(self, new_captain): self.captain = new_captain def change_hierophant(self, new_hierophant): self.hierophant = new_hierophant def add_teammember(self, new_teammember_id): new_member = ps.get_squad_member(new_teammember_id) if new_member["cost"] <= self.credits: self.credits -= new_member["cost"] self.roster.append(Teammember(new_member, new=True)) return True else: return False def del_teammember(self, teammember_uid): self.roster = [ member for member in self.roster if member.uid == teammember_uid ] def receive_damage(self, to_uid, amount): if self.hierophant.uid == to_uid: # Hieropahnt self.hierophant.health(-amount) elif self.captain.uid == to_uid: # Captain self.captain.health(-amount) else: # Teammember for mbr in self.roster: if mbr.uid == to_uid: mbr.health(-amount) def get_stat_fight(self, uid): damage = 0 if self.hierophant.uid == uid: # Hieropahnt damage = self.hierophant.get_stat_fight() elif self.captain.uid == uid: # Captain damage = self.captain.get_stat_fight() else: # Teammember damage = [x.get_stat_fight() for x in self.roster if x.uid == uid] damage = damage[0] return damage def to_json(self): jsqd = {} jsqd["uid"] = self.uid jsqd["owner"] = self.owner jsqd["private"] = self.private jsqd["name"] = self.name jsqd["credits"] = self.credits jsqd["roster"] = [x.to_json() for x in self.roster] jsqd["captain"] = self.captain.to_json() jsqd["hierophant"] = self.hierophant.to_json() jsqd["stash"] = [x.to_json() for x in self.stash] return jsqd def to_string(self): ssquad = "-------------- SQUAD ----------------\n" ssquad += "Name: " + str(self.name) + "\n" ssquad += "Owner: " + str(self.owner) + "\n" ssquad += "UID: " + str(self.uid) + "\n" ssquad += "Private: " + str(self.private) + "\n" ssquad += "Credits: " + str(self.credits) + "\n" ssquad += "------------ CAPTAIN ---------------\n" ssquad += self.captain.to_string() + "\n" ssquad += "----------- HIEROPHANT -------------\n" ssquad += self.hierophant.to_string() + "\n" ssquad += "------------- ROSTER ---------------\n" for member in self.roster: ssquad += member.to_string() + "\n" ssquad += "------------- STASH ----------------\n" for item in self.stash: ssquad += item.to_string() + "\n" return ssquad