Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 8
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
Ejemplo n.º 9
0
# 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
Ejemplo n.º 10
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):
Ejemplo n.º 11
0
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