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])
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...')
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)
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
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
def pickRandomDiscardedCardForLoss(self): return pickRandom(self.discard_cards)
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]))
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)
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()
def pickMembers(self, num=4): random_members = pickRandom(self.party.members, num) print("SELECTED RANDOM MEMBERS\n\n") print(random_members) return random_members