Beispiel #1
0
    def pickCard(self, ret_draw=[]):
        card = pickRandom(self.play_deck)

        # in the event that we are drawing multiple cards for one attack round (i.e., AoE)
        # it is possible that we 'exhaust' the deck before a reshuffle card is drawn
        # in that event, we are to reshuffle immediately
        if not card:
            print("AMD Exhausted - reshuffling")
            self.play_deck = copy.deepcopy(self._deck)
            for c in ret_draw:
                self.play_deck.remove(c)
            card = pickRandom(self.play_deck)

        if card.isCurse():
            self.removeCurse(card)
        elif card.isBlessing():
            self.removeBlessing(card)
        if card.isReshuffle():
            self.reshuffle = True
        self.play_deck.remove(card)
        #print(card)
        ret_draw.append(card)

        if card.isRolling():
            #print("ROLLING")
            self.pickCard(ret_draw)

        #print("Size Remaining: %d :: %s :: %s" % (len(self.play_deck), card, self.play_deck))
        return ret_draw
    def selectRoundCards(self):
        self.in_hand_cards = list()
        # TODO - random for now, but ultimately user/AI selected
        for i in range(2):
            card = pickRandom(self.selected_cards)
            if card:
                self.selected_cards.remove(card)
                self.in_hand_cards.append(card)

        # Pick Top Card for Initiative
        # TODO - random for now, but ultimately user/AI selected
        return pickRandom([0, 1])
Beispiel #3
0
 def addBlessing(self):
     print('Adding Blessing')
     if len(_bless_deck) > 0:
         bless = pickRandom(_bless_deck)
         _bless_deck.remove(bless)
         self._deck.append(bless)
         self.play_deck.append(bless)
     else:
         print('No more blessings available, ignoring...')
Beispiel #4
0
 def addCurse(self):
     print('Adding Curse')
     if self.isPlayer:
         if len(_player_curse_deck) > 0:
             curse = pickRandom(_player_curse_deck)
             _player_curse_deck.remove(curse)
         else:
             print('No more Player Curses Available, ignoring...')
             return
     else:
         if len(_monster_curse_deck) > 0:
             curse = pickRandom(_monster_curse_deck)
             _monster_curse_deck.remove(curse)
         else:
             print('No more Monster Curses Available, ignoring...')
             return
     self._deck.append(curse)
     self.play_deck.append(curse)
Beispiel #5
0
 def selectCardsFromFullDeck(self, maxNum):
     # TODO - random for now, but ultimately user/AI selected
     selection_deck = list(self._all_cards)
     for i in range(maxNum):
         card = pickRandom(selection_deck)
         selection_deck.remove(card)
         self.selected_cards.append(card)
         if len(selection_deck) == 0:
             print("[selectCardsFromFullDeck] :: Not enough cards")
             break
Beispiel #6
0
    def pickCard(self, ret_draw=[]):
        card = pickRandom(self.play_deck)
        if card.isCurse():
            self.removeCurse(card)
        elif card.isBlessing():
            self.removeBlessing(card)
        if card.isReshuffle():
            self.reshuffle = True
        self.play_deck.remove(card)
        print(card)
        ret_draw.append(card)

        if card.isRolling():
            self.pickCard(ret_draw)
        return ret_draw
Beispiel #7
0
 def pickRandomDiscardedCardForLoss(self):
     return pickRandom(self.discard_cards)
Beispiel #8
0
    bones_4 = gv.SpawnUnit(bones, 8, -10, [npc.NORMAL, npc.NORMAL, npc.NORMAL])
    room.I1b.addSpawns([
        archer_4, archer_5, archer_6, archer_7, bones_1, bones_2, bones_3,
        bones_4
    ])

    parents, cost = a_star_search(m, gv.Location(2, 8), gv.Location(10, -4))
    print("Can reach desired target in %d steps" % (len(parents) - 1))
    print("Damage taken on path: %d" % (cost - (len(parents) - 1)))
    print("Path is:\n", parents, "\n\n")

    m.setStartingRoom('L1a')
    return m


_map_json = {"1": Map("Black Barrow", 1, prep_scenario_1_map)}

if __name__ == "__main__":
    gv.setNumPlayersInScenario(pickRandom([i for i in range(2, 5)]))
    m = _map_json["1"]
    m.spawnStartingRoom()

    reachable = m.getCoordinateDisc(gv.Location(0, 0), 1)
    print(reachable)
    reachable = m.getReachablePOIs(gv.Location(0, 0), 6)
    for key in reachable:
        if key == 'Enemies':
            print("%s: %s" % (key, [i.getUnit() for i in reachable[key]]))
        else:
            print("%s: %s" % (key, reachable[key]))
Beispiel #9
0
 def drawRoundAbility(self):
     assert len(self.curr_deck) > 0
     self.curr_ability = pickRandom(self.curr_deck)
     self.curr_deck.remove(self.curr_ability)
     print(self.curr_ability)
Beispiel #10
0
        sType = "Normal"
        if self.isElite():
            sType = "Elite"
        ret += "Type: %s\n" % (sType)
        ret += "Health: %d, Move: %d, Attack: %d, Range: %d\n" % (
            self.curr_hp, self.move, self.attack, self.range)
        if len(self.buffs) > 0:
            ret += "Buffs: %s\n" % (self.buffs)
        if len(self.immunities) > 0:
            ret += "Immunities: %s\n" % (self.immunities)
        if len(self.causes) > 0:
            ret += "Causes Effects: %s\n" % (self.causes)
        ret += "Map Location: {%d,%d}\n" % (self.location.row,
                                            self.location.col)
        return ret


if __name__ == "__main__":
    for monName in gv.monsterDataJson.keys():
        mon_type = NPCType(monName, gv.monsterDataJson[monName])
        mon_type.createEnemy(cellLoc=(1, 1), elite=pickRandom([True, False]))
        mon_type.createEnemy(gv.Location(2, 2),
                             elite=pickRandom([True, False]))
        mon_type.createEnemy(elite=pickRandom([True, False]))
        mon_type.printUnits()

        for i in range(10):
            mon_type.prepareTurn()
            mon_type.executeTurn()
            mon_type.endTurn()
Beispiel #11
0
 def pickMembers(self, num=4):
     random_members = pickRandom(self.party.members, num)
     print("SELECTED RANDOM MEMBERS\n\n")
     print(random_members)
     return random_members