Example #1
0
def runStep(step, versus, args, resultsDb, replacementSets, ownedCards, commanderIds, playedIds, uniqueIds, legendaryIds):
    print("Starting step " + str(step))

    sortInDeckHash = not(args.ordered == 1)

    replacementOffset = step % len(replacementSets)
    print("\t... replacementOffset: " + str(replacementOffset))

    deckHashes = []
    if step == 0:
        deckCount = 10 # how many random decks to start from
        for deck_i in range(0, deckCount):
            randomDeck = deckBuilder.randomDeck(commanderIds, playedIds, legendaryIds, uniqueIds)
            deckHashes.append(deckHasher.deckToHash(randomDeck, sortInDeckHash))

        resultScores = simulator.runVersusMatrix(versus, deckHashes, resultsDb, args.numSims, args.defense, args.ordered, args.surge)

    else:
        previousFile = tyrantArgs.getOutputDir(args) + tyrantArgs.getOutputFile(args, step - 1)
        previousHashes = cardLoader.loadHashesFromFile(previousFile, 1)

        for evolve_i in range(0, 11):
            if((evolve_i == 0) and args.ignoreCommanders):
                continue

            print("\t... index " + str(evolve_i))
            intermediateSteps = []

            for oldHash_i in range(0, len(previousHashes)):
                evolvedHash = previousHashes[oldHash_i]
                print("\t... evolving deck " + str(oldHash_i) + ": " + evolvedHash)

                evolvedDeck = deckHasher.hashToDeck(evolvedHash)
                evolvedDecks = []

                replacements = commanderIds
                if(evolve_i > 0):
                    replacementIndex = (evolve_i - 1 + replacementOffset) % len(replacementSets)
                    replacements = deckBuilder.updateReplacementsForIndex(set(replacementSets[replacementIndex]), evolvedDeck, evolve_i, uniqueIds, legendaryIds, ownedCards)

                evolvedDecks.extend(deckBuilder.deckEvolutionsForIndex(evolvedDeck, evolve_i, replacements))
                if(args.ordered and evolve_i > 0):
                    # we don't really need to try all swaps possible every step;
                    # over a long run this will cover everything
                    swap_index = (evolve_i + step) % 10 + 1
                    evolvedDecks.extend(deckBuilder.orderSwap(evolvedDeck, evolve_i, range(swap_index, swap_index + 1)))

                evolvedHashes = [deckHasher.deckToHash(deck, sortInDeckHash) for deck in evolvedDecks]
                evolvedHashes.append(evolvedHash) # keep simulating the one at the top to keep it honest

                resultScores = simulator.runVersusMatrix(versus, evolvedHashes, resultsDb, args.numSims, args.defense, args.ordered, args.surge)

                previousHashes[oldHash_i] = resultScores[0][0]
                intermediateSteps.append(resultScores[0])

            print(deckOutput.outputStringFromResults(intermediateSteps))

        deckHashes = list(previousHashes)

    resultScores = simulator.getVersusScores(resultsDb, None, versus, args.defense)
    if(len(resultScores) > 20):
        resultScores = resultScores[0:20]
    deckOutput.saveStep(tyrantArgs.getOutputDir(args), args.prefix, str(step), resultScores)
Example #2
0
evolutions = []
'''
for step in range(evolutionStart, evolutionEnd):
    stepStart = str(step)
    previousFile = dataDirectory + filePrefex + stepStart + ".txt"
'''
for file in files:
    try:
        f = open(file, 'r')
    except IOError as e:
        continue
    for line in f:
        line = line.strip()
        if (len(line) == 0 or line[0] == "#"): continue

        previousHash = line.split('\t')[0]
        evolutions.append([previousHash])
    f.close()

print("<html><body>")
for evolution in evolutions:
    for deck in evolution:
        print("<a href='" + linkPrefex + deck + "'>" + deck + "</a>")
        print("<!-- ")
        print(deckHasher.hashToDeck(deck))
        print("-->")
        print("<br/>")
    print("<br/>")
print("</body></html>")
Example #3
0
evolutions = []
'''
for step in range(evolutionStart, evolutionEnd):
    stepStart = str(step)
    previousFile = dataDirectory + filePrefex + stepStart + ".txt"
'''
for file in files:
    try:
        f = open(file, 'r')
    except IOError as e:
        continue
    for line in f:
        line = line.strip()
        if(len(line) == 0 or line[0] == "#"): continue

        previousHash = line.split('\t')[0]
        evolutions.append([previousHash])
    f.close()

print("<html><body>")
for evolution in evolutions:
    for deck in evolution:
        print("<a href='" + linkPrefex + deck + "'>" + deck + "</a>")
        print("<!-- ")
        print(deckHasher.hashToDeck(deck))
        print("-->")
        print("<br/>")
    print("<br/>")
print("</body></html>")