コード例 #1
0
class Merchant(): #added
    def __init__(self):
        self._elixir_price = 1
        self._shield_price = 2
        self._pos = Pos()
        
    def get_pos(self):
        return self._pos
    
    def set_pos(self, row, column):
        self._pos.set_pos(row, column)
        
    def talk(self, text):
        print("Merchant$: " + text, end='')
            
    def action_on_soldier(self, soldier):
        commu_enable = True if soldier.count_coin() > 0 else False
        if not commu_enable: self.talk("You don't have enough coins.\n\n")
        while commu_enable:
            self.talk("Do you want to buy something? (1. Elixir, 2. Shield, 3. Leave.) Input: ")
            x = input()
            if x == '1':
                soldier.buy_elixir(self._elixir_price)
                commu_enable = False
            elif x == '2':
                if not soldier.buy_shield(self._shield_price):
                    self.talk("You don't have enough coins.\n\n")
                commu_enable = False
            elif x == '3':
                self.talk('Bye.\n\n')
                commu_enable = False
            else: print('=> Illegal choice!\n')
                
    def display_symbol(self):
        print('$', end = '')
コード例 #2
0
ファイル: Soldier.py プロジェクト: Soapony/csci3180
class Soldier():
    def __init__(self):
        self._health = 100
        self.__num_elixirs = 2
        self.__pos = Pos()
        self.__keys = []

    def get_health(self):
        return self._health

    def lose_health(self):
        self._health -= 10
        return self._health <= 0

    def recover(self, healing_power):
        total_health = healing_power + self._health
        if (total_health >= 100):
            self._health = 100
        else:
            self._health = total_health

    def get_pos(self):
        return self.__pos

    def set_pos(self, row, col):
        self.__pos.set_pos(row, col)

    def move(self, row, col):
        self.set_pos(row, col)

    def get_keys(self):
        return self.__keys

    def add_key(self, key):
        self.__keys.append(key)

    def get_num_elixirs(self):
        return self.__num_elixirs

    def add_elixir(self):
        self.__num_elixirs += 1

    def use_elixir(self):
        self.recover(random.randint(0, 5) + 15)
        self.__num_elixirs -= 1

    def display_information(self):
        str_key = [str(x) for x in self.__keys]
        print("Health: ", self._health, ".")
        print("Position (row, column): (", self.__pos.get_row(), ", ",
              self.__pos.get_col(), ").")
        print("Keys: [" + ", ".join(str_key) + "].")
        print("Elixirs: ", self.__num_elixirs, ".")

    def display_symbol(self):
        print("S", end="")
コード例 #3
0
class Soldier():
    def __init__(self):
        self._health = 100
        self._num_elixirs = 2
        self._pos = Pos()
        self._keys = []

    def get_health(self):
        return self._health

    def lose_health(self):
        self._health -= 10
        return self._health <= 0

    def recover(self, healing_power):
        total_health = healing_power + self._health
        self._health = 100 if total_health >= 100 else total_health

    def get_pos(self):
        return self._pos

    def set_pos(self, row, column):
        self._pos.set_pos(row, column)

    def move(self, row, column):
        self._pos.set_pos(row, column)

    def get_keys(self):
        return self._keys

    def add_key(self, key):
        self._keys.append(key)

    def get_num_elixirs(self):
        return self._num_elixirs

    def add_elixir(self):
        self._num_elixirs += 1

    def use_elixir(self):
        self.recover(random.randint(15, 21))
        self._num_elixirs -= 1

    def display_information(self):
        print("Health:", self._health)
        print("Position (row, column): (",
              self._pos.get_row(),
              " ",
              self._pos.get_column(),
              ")",
              sep='')
        print("Keys:", self._keys)
        print("Elixirs: %d" % self._num_elixirs)

    def display_symbol(self):
        print("S", end='')
コード例 #4
0
ファイル: Soldier.py プロジェクト: yytlee/CSCI3180
class Soldier():
    def __init__(self):
        self._health = 100
        self._num_elixirs = 2
        self._pos = Pos()
        self._keys = set()

    def get_health(self):
        return self._health

    def lose_health(self):
        self._health -= 10
        return self._health <= 0

    def recover(self, healing_power):
        ## Soldier's health cannot exceed capacity.
        total_health = healing_power + self._health
        self._health = 100 if total_health >= 100 else total_health

    def get_pos(self):
        return self._pos

    def set_pos(self, row, column):
        self._pos.set_pos(row, column)

    def move(self, row, column):
        self.set_pos(row, column)

    def get_keys(self):
        return self._keys

    def add_key(self, key):
        self._keys.add(key)

    def get_num_elixirs(self):
        return self._num_elixirs

    def add_elixir(self):
        self._num_elixirs += 1

    def use_elixir(self):
        self.recover(random.randint(15, 20))
        self._num_elixirs -= 1

    def display_information(self):
        print("Health: %d." % (self._health))
        print("Position (row, column): (%d, %d)." %
              (self._pos.get_row(self), self._pos.get_column(self)))
        print('Keys: [', end='')
        print(*self._keys, sep=', ', end='].\n')
        print("Elixirs: %d." % (self._num_elixirs))

    def display_symbol(self):
        print('S', end='')
コード例 #5
0
class Soldier():
    def __init__(self):
        self.health = 100
        self.num_elixirs = 2
        self.pos = Pos()
        self.keys = []

    def get_health(self):
        return self.health

    def lose_health(self):
        self.health -= 10
        return self.health <= 0

    def recover(self, healing_power):
        total_health = healing_power + self.health
        self.health = 100 if total_health >= 100 else total_health
    
    def get_pos(self):
        return self.pos

    def set_pos(self, row, column):
        self.pos.set_pos(row, column)

    def move(self, row, column):
        self.set_pos(row, column)

    def get_keys(self):
        return self.keys

    def add_key(self, key):
        self.keys.append(key)

    def get_num_elixirs(self):
        return self.num_elixirs

    def add_elixir(self):
        self.num_elixirs += 1

    def use_elixir(self):
        self.recover(random.randint(0, 5) + 15)
        self.num_elixirs -= 1

    def display_information(self):
        print("Health: {}.".format(self.health))
        print("Position (row, column): ({}, {}).".format(self.pos.get_row(), self.pos.get_column()))
        print("Keys: " + str(sorted(set(self.keys))) + ".")
        print("Elixirs: {}.".format(self.num_elixirs))

    def display_symbol(self):
        print("S", end="")
コード例 #6
0
class Merchant():
    def __init__(self, elixir_price, shield_price):

        # TODO: Initialization.
        self._elixir_price = elixir_price
        self._shield_price = shield_price
        self._pos = Pos()

    def action_on_soldier(self, soldier):
        self.talk(
            'Do you want to buy something? (1. Elixir, 2. Shield) Input: ')

        # TODO: Main logic.
        choice = input()

        if choice == '1':
            if soldier.get_num_coin() >= self._elixir_price:
                soldier.use_coin(self._elixir_price)
                soldier.add_elixir()
                print("You have %d coin(s) left.", soldier.get_num_coin())
            else:
                self.talk("Poor guy, you don't have enough coins.")
                print()
        elif choice == '2':
            if soldier.get_num_coin() >= self._shield_price:
                soldier.use_coin(self._shield_price)
                soldier.add_shield()
                print("You have %d coin(s) left.", soldier.get_num_coin())
            else:
                self.talk("Poor guy, you don't have enough coins.")
                print()
        else:
            print('=> Illegal move!\n')

    def talk(self, text):
        print('Merchant$: ' + text, end='')

    # TODO: Other functions.

    def get_pos(self):
        return self._pos

    def set_pos(self, row, column):
        self._pos.set_pos(row, column)

    def display_symbol(self):
        print('$', end='')
コード例 #7
0
class Task4Merchant():
    def __init__(self):
        self.pos = Pos()
        self.shield_price = 2
        self.elixir_price = 1

    def action_on_soldier(self, soldier):
        self.talk(
            "Do you want to buy something? (1. Elixir, 2. Shield, 3. Leave) Input: "
        )

        choice = input()

        if choice == "1":
            if soldier.get_coin() >= self.elixir_price:
                soldier.spend_coin(self.elixir_price)
                soldier.add_elixir()
            else:
                print("You don't have enough coins.\n")
        elif choice == "2":
            if soldier.get_coin() >= self.shield_price:
                soldier.spend_coin(self.shield_price)
                soldier.add_defence()
            else:
                print("You don't have enough coins.\n")
        elif choice == "3":
            return
        else:
            print("=> Illegal choice!\n")

    def talk(self, text):
        print("Merchant$: " + text, end="")

    def display_symbol(self):
        print("$", end="")

    def set_pos(self, row, column):
        self.pos.set_pos(row, column)

    def get_pos(self):
        return self.pos
コード例 #8
0
ファイル: Task4Merchant.py プロジェクト: Soapony/csci3180
class Task4Merchant():
    def __init__(self):
        self.__elixir_price = 1
        self.__shield_price = 2
        self.__pos = Pos()
    
    def action_on_soldier(self,soldier):
        sc=input("Do you want to buy something? (1. Elixir, 2. Shield, 3. Leave.) Input: ")
        if(sc == '1'):
            if(soldier.get_coin() >= self.__elixir_price):
                soldier.add_elixir()
                soldier.lose_coin(self.__elixir_price)
                self.talk("You bought an Elixir.\n\n")
            else:
                self.talk("You don't have enough coins.\n\n")
        elif(sc == '2'):
            if(soldier.get_coin() >= self.__shield_price):
                soldier.add_shield()
                soldier.lose_coin(self.__shield_price)
                self.talk("You bought a shield.\n\n")
            else:
                self.talk("You don't have enough coins.\n\n")
        elif(sc == '3'):
            self.talk("Thank you for coming. :D\n\n")
        else:
            print("=> Illegal choice!\n\n")
    
    def talk(self,text):
        print("Merchant$",text,end='')
    
    def set_pos(self,row,col):
        self.__pos.set_pos(row,col)
    
    def get_pos(self):
        return self.__pos
    
    def display_symbol(self):
        print("$",end='')
コード例 #9
0
ファイル: Spring.py プロジェクト: Soapony/csci3180
class Spring():
    def __init__(self):
        self.__num_chance = 1
        self.__healing_power = 100
        self.__pos = Pos()

    def set_pos(self, row, col):
        self.__pos.set_pos(row, col)

    def get_pos(self):
        return self.__pos

    def action_on_soldier(self, soldier):
        self.talk()
        if (self.__num_chance == 1):
            soldier.recover(self.__healing_power)
            self.__num_chance -= 1

    def talk(self):
        print("Spring@: You have %d chance to recover 100 health.\n\n" %
              (self.__num_chance))

    def display_symbol(self):
        print("@", end='')
コード例 #10
0
class Spring():
    def __init__(self):
        self.num_chance = 1
        self.healing_power = 100
        self.pos = Pos()

    def set_pos(self, row, column):
        self.pos.set_pos(row, column)

    def get_pos(self):
        return self.pos

    def action_on_soldier(self, soldier):
        self.talk()
        if self.num_chance == 1:
            soldier.recover(self.healing_power)
            self.num_chance -= 1

    def talk(self):
        print("Spring@: You have {} chance to recover 100 health.\n".format(
            self.num_chance))

    def display_symbol(self):
        print("@", end="")
コード例 #11
0
class Spring():
    def __init__(self):
        self._num_chance = 1
        self._healing_power = 100
        self._pos = Pos()

    def set_pos(self, row, column):
        self._pos.set_pos(row, column)

    def get_pos(self):
        return self._pos

    def action_on_soldier(self, soldier):
        self.talk()
        if self._num_chance == 1:
            soldier.recover(self._healing_power)
            self._num_chance -= 1

    def talk(self):
        print('Spring@: You have ' + str(self._num_chance) +
              ' chance to recover 100 health.\n')

    def display_symbol(self):
        print('@', end='')
コード例 #12
0
ファイル: Monster.py プロジェクト: yytlee/CSCI3180
class Monster():
    def __init__(self, monster_ID=0, health_capacity=30):
        self._monster_ID = monster_ID
        self._health_capacity = health_capacity
        self._health = health_capacity
        self._pos = Pos()
        self._drop_item_list = []
        self._hint_list = []

    def add_drop_item(self, key):
        self._drop_item_list.append(key)

    def add_hint(self, monster_ID):
        self._hint_list.append(monster_ID)

    def get_monster_ID(self):
        return self._monster_ID

    def get_pos(self):
        return self._pos

    def set_pos(self, row, column):
        self._pos.set_pos(row, column)

    def get_health_capacity(self):
        return self._health_capacity

    def get_health(self):
        return self._health

    def lose_health(self):
        self._health -= 10
        return self._health <= 0

    def recover(self, healing_power):
        self._health = healing_power

    def action_on_soldier(self, soldier):
        if self._health <= 0:
            self.talk('You had defeated me.\n')
        else:
            if self.require_key(soldier.get_keys()):
                self.fight(soldier)
            else:
                self.display_hints()

    def require_key(self, keys):
        return self._monster_ID in keys

    def display_hints(self):
        self.talk("Defeat Monster %s first.\n" % (self._hint_list))

    def fight(self, soldier):
        fight_enabled = True

        while fight_enabled:
            print("       | Monster%d | Soldier |" % (self._monster_ID))
            print("Health | %8d | %7d |\n" %
                  (self._health, soldier.get_health()))

            choice = input(
                '=> What is the next step? (1 = Attack, 2 = Escape, 3 = Use Elixir.) Input: '
            )

            if choice == '1':
                if self.lose_health():
                    print("=> You defeated Monster%d.\n" % (self._monster_ID))
                    self.drop_items(soldier)
                    fight_enabled = False
                else:
                    if soldier.lose_health():
                        self.recover(self._health_capacity)
                        fight_enabled = False

            elif choice == '2':
                self.recover(self._health_capacity)
                fight_enabled = False
            elif choice == '3':
                if soldier.get_num_elixirs() == 0:
                    print('=> You have run out of elixirs.\n')
                else:
                    soldier.use_elixir()
            else:
                print('=> Illegal choice!\n')

    def drop_items(self, soldier):
        for item in self._drop_item_list:
            soldier.add_key(item)

    def talk(self, text):
        print("Monster%d: %s" % (self._monster_ID, text))

    def display_symbol(self):
        print("M", end='')
コード例 #13
0
class Monster():
    def __init__(self, monster_id, health_capacity):
        self.__monster_id = monster_id
        self.__health_capacity = health_capacity
        self.__health = health_capacity
        self.__pos = Pos()
        self.__drop_item_list = []
        self.__hint_list = []

    def add_drop_item(self, key):
        self.__drop_item_list.append(key)

    def add_hint(self, monster_id):
        self.__hint_list.append(monster_id)

    def get_monster_id(self):
        return self.__monster_id

    def get_pos(self):
        return self.__pos

    def set_pos(self, row, col):
        self.__pos.set_pos(row, col)

    def get_health_capacity(self):
        return self.__health_capacity

    def get_health(self):
        return self.__health

    def lose_health(self):
        self.__health -= 10
        return self.__health <= 0

    def recover(self, healing_power):
        self.__health = healing_power

    def action_on_soldier(self, soldier):
        if (self.__health <= 0):
            self.talk("You had defeated me.\n\n")
        else:
            if (self.require_key(soldier.get_keys())):
                self.fight(soldier)
            else:
                self.display_hints()

    def require_key(self, keys):
        return keys.count(self.__monster_id)

    def display_hints(self):
        new_hint_list = [str(x) for x in self.__hint_list]
        self.talk("Defeat Monster " + " ".join(new_hint_list) + " first.\n\n")

    def fight(self, soldier):
        fight_enabled = True
        while (fight_enabled):
            print("       | Monster", self.__monster_id, " | Soldier |")
            print("Health | %8d | %7d |\n\n" %
                  (self.__health, soldier.get_health()))
            sc = input(
                "=> What is the next step? (1 = Attack, 2 = Escape, 3 = Use Elixir.) Input: "
            )
            if (sc == '1'):
                if (self.lose_health()):
                    print("=> You defeated Monster", self.__monster_id,
                          ".\n\n")
                    self.drop_item(soldier)
                    fight_enabled = False
                else:
                    if (soldier.lose_health()):
                        self.recover(self.__health_capacity)
                        fight_enabled = False
            elif (sc == '2'):
                self.recover(self.__health_capacity)
                fight_enabled = False
            elif (sc == '3'):
                if (soldier.get_num_elixirs() == 0):
                    print("=> You have run out of elixirs.\n\n")
                else:
                    soldier.use_elixir()
            else:
                print("=> Illegal choice!\n\n")

    def drop_item(self, soldier):
        for i in self.__drop_item_list:
            if not soldier.get_keys().count(i):
                soldier.add_key(i)

    def talk(self, text):
        print("Monster", self.__monster_id, ": " + text)

    def display_symbol(self):
        print("M", end='')
コード例 #14
0
class Warrior():
    def __init__(self, posx, posy, index, mapp):
        self._pos = Pos(posx, posy)
        self._index = index
        self._map = mapp
        self._name = ("W%s" % str(index))
        self._health = HEALTH_CAP
        self._magic_crystal = 10

    def action_on_warrior(self, warrior):
        self.talk("Hi, bro. You can call me %s. I am very happy to meet you. I have %s magic crystals." % (self.name, int(self._magic_crystal)))
        self.talk("The number of your magic crystals is %s." % int(warrior.magic_crystal))
        self.talk("Need I share with you some magic crystals?")
        self.talk("You now have following options: ")
        print("1. Yes")
        print("2. No")
        a = int(input())
        if(a == 1):
            value = random.randint(1, self._magic_crystal)
            self.decrease_crystal(value)
            warrior.increase_crystal(value)
            warrior.talk("Thanks for your shared %s crystals! %s." % (int(value), self.name))
        return False

    def teleport(self):
        print(("Hi, %s. Your position is (%s,%s) and health is %s." % (self._name, self._pos.x, self._pos.y, self._health)))
        print("Specify your target position (Input 'x y').")
        inp = input()
        inp = inp.split(' ')
        posx = int(inp[0])
        posy = int(inp[1])
        while(posx == self._pos.x and posy == self._pos.y):
            print("Specify your target position (Input 'x y'). It should not be the same as the original one.")
            inp = input()
            inp = inp.split(' ')
            posx = int(inp[0])
            posy = int(inp[1])
        result = self._map.coming(posx, posy, self)
        if result:
            self._map.set_land(self._pos, None)
            self._pos.set_pos(posx, posy)
            self._map.set_land(self._pos, self)
            self._map.print_board()

        if self.health <= 0:
            print("Very sorry, %s has been killed." % self.name)
            self._map.set_land(self.pos, None)
            self._map.delete_teleportable_obj(self)
            self._map.decrease_num_of_warriors()

    def talk(self, content):
        print("%s: %s" % (self._name, content))

    def increase_crystal(self, value):
        self._magic_crystal = self._magic_crystal + value

    def decrease_crystal(self, value):
        self._magic_crystal = self._magic_crystal - value

    def increase_health(self, value):
        self._health = self._health + value
        if self._health > HEALTH_CAP:
            self._health = HEALTH_CAP

    def decrease_health(self, value):
        self._health = self._health - value

    @property
    def pos(self):
        return self._pos

    @property
    def name(self):
        return self._name

    @property
    def health(self):
        return self._health

    @health.setter
    def health(self, health):
        self._health = health

    @property
    def magic_crystal(self):
        return self._magic_crystal

    @magic_crystal.setter
    def magic_crystal(self, magic_crystal):
        self._magic_crystal = magic_crystal
コード例 #15
0
class Monster():
    def __init__(self, monster_id, health_capacity):
        self.monster_id = monster_id
        self.health_capacity = health_capacity
        self.health = health_capacity
        self.pos = Pos()
        self.drop_item_list = []
        self.hint_list = []

    def add_drop_item(self, key):
        self.drop_item_list.append(key)
    
    def add_hint(self, monster_id):
        self.hint_list.append(monster_id)

    def get_monster_id(self):
        return self.monster_id

    def get_pos(self):
        return self.pos

    def set_pos(self, row, column):
        self.pos.set_pos(row, column)

    def get_health_capacity(self):
        return self.health_capacity

    def get_health(self):
        return self.health

    def lose_health(self):
        self.health -= 10
        return self.health <= 0

    def recover(self, healing_power):
        self.health = healing_power

    def action_on_soldier(self, soldier):
        if self.health <= 0:
            self.talk("You had defeated me.\n\n")
        else:
            if self.require_key(soldier.get_keys()):
                self.fight(soldier)
            else:
                self.display_hints()
    
    def require_key(self, keys):
        return self.monster_id in keys
    
    def display_hints(self):
        self.talk("Defeat Monster " + str(self.hint_list) + " first.\n\n")

    def fight(self, soldier):
        fight_enabled = True
        
        while fight_enabled:
            print("       | Monster{} | Soldier |".format(self.monster_id))
            print("Health | %8d | %7d |\n" % (self.health, soldier.get_health()))
            choice = input("=> What is the next step? (1 = Attack, 2 = Escape, 3 = Use Elixir.) Input: ")

            if choice == "1":
                if self.lose_health():
                    print("=> You defeated Monster{}.\n".format(self.monster_id))
                    self.drop_items(soldier)
                    fight_enabled = False
                else:
                    if soldier.lose_health():
                        self.recover(self.health_capacity)
                        fight_enabled = False
            elif choice == "2":
                self.recover(self.health_capacity)
                fight_enabled = False
            elif choice == "3":
                if soldier.get_num_elixirs() == 0:
                    print("=> You have run out of elixirs.\n")
                else:
                    soldier.use_elixir()
            else:
                print("=> Illegal choice!\n")

    def drop_items(self, soldier):
        for item in self.drop_item_list:
            soldier.add_key(item)
    
    def talk(self, text):
        print("Monster{}: ".format(self.monster_id) + text, end="")
    
    def display_symbol(self):
        print("M", end="")