View difference between Paste ID: YunR2R8p and n1wDRcuF
SHOW: | | - or go back to the newest paste.
1
import random
2
import math
3
4
def play(totals, player, win, can_attack, hand):
5
    if win != -1:
6
        return totals, win, can_attack, hand[player]
7
    else:
8
        for i in range(3):
9
            tar = math.floor(random.random() * float(len(totals[0]) + len(totals[1])))
10
            if ((tar < len(totals[0])) and (len(totals[0]) < 9)):
11
                totals[0][tar] -= 1
12-
                if ((totals[0][tar] == 0) and (tar != 0)):
12+
                if ((totals[0][tar] <= 0) and (tar != 0)):
13
                    totals[0].pop(tar)
14
                    can_attack[0].pop(tar)
15-
                elif ((totals[0][tar] == 0) and (tar <= 0)):
15+
                elif ((totals[0][tar] <= 0) and (tar <= 0)):
16
                    totals[player].append(2)
17
                    return totals, 1, can_attack, (hand[player]-1)
18
            elif ((tar >= len(totals[0])) and (len(totals[0]) < 9)):
19
                totals[1][tar-len(totals[0])] -= 1
20-
                if ((totals[1][tar-len(totals[0])] == 0) and ((tar-len(totals[0])) != 0)):
20+
                if ((totals[1][tar-len(totals[0])] <= 0) and ((tar-len(totals[0])) != 0)):
21
                    totals[1].pop(tar-len(totals[0]))
22
                    can_attack[1].pop(tar-len(totals[0]))
23-
                elif ((totals[1][tar-len(totals[0])] == 0) and ((tar-len(totals[0])) <= 0)):
23+
                elif ((totals[1][tar-len(totals[0])] <= 0) and ((tar-len(totals[0])) <= 0)):
24
                    totals[player].append(2)
25
                    return totals, 0, can_attack, (hand[player]-1)
26
            else:
27
                return totals, -1, can_attack, hand
28
        totals[player].append(2)
29
        can_attack[player].append(False)
30
        return totals, -1, can_attack, (hand[player]-1)
31
32
def attack(can_attack, player):
33
    dmg = 0
34
    for i in can_attack[player]:
35
        if i:
36
            dmg += 3
37
    return dmg
38
39
def wakeup(can_attack, player):
40
    for i in range(1,len(can_attack[player])):
41
        if not can_attack[player][i]:
42
            can_attack[player][i] = True
43
    return can_attack
44
45-
def hero_power(totals, player, toon):
45+
def hero_power(totals, player, toon, atk_list):
46
    opp = int(math.cos((math.pi/2.0) * player))
47-
        totals[int(math.cos((math.pi/2.0) * player))][0] -= 2
47+
48
        totals[opp][0] -= 2
49
    elif toon == "wario":
50
        totals[player][0] += 2
51-
        return totals
51+
    elif toon == "durid":
52-
    return totals
52+
        totals[opp][0] -= 1
53
        totals[player][0] += 1
54
    elif toon == "jaina":
55
        min_health = 150816
56-
iterations = 10000
56+
        mindex = 0
57-
toon = ["wario", "huntard"]
57+
        boop = totals[opp]
58
        for i in range(len(boop)):
59
            if ((boop[i] < min_health) and (boop[i] > 0)):
60
                mindex = i
61
                min_health = boop[i]
62
        totals[opp][mindex] -= 1
63
    elif toon == "uther":
64
        totals[player].append(1)
65
        atk_list[player].append(False)
66
    else:
67
        return totals, atk_list
68
    return totals, atk_list
69
70
win_counter = 0
71
turn_counter = 0
72
iterations = 100000
73
toon = ["uther", "durid"]
74-
            if (((math.floor(mana/2) - 1) > hand_size[0]) and hp):
74+
75-
                boards = hero_power(boards, 0, toon[0])
75+
#testurds
76
#print("hp")
77
#print(boards[0])
78
#print(boards[1])
79-
        boards[1][0] -= attack(attack_list, 0)
79+
80
for i in range(iterations):
81
    boards = [[30], [30]]
82
    attack_list = [[False], [False]]
83
    mana = 2
84
    win = -1
85
    n=2
86
    hand_size = [5,5]
87
    
88
    boards, win, attack_list, hand_size[1] = play(boards, 1, win, attack_list, hand_size)
89-
                boards = hero_power(boards, 1, toon[1])
89+
90
        attack_list = wakeup(attack_list, 0)
91
        hand_size[0] += 1
92
             
93
        hp = True
94
        for i in range(math.floor(mana/2)):
95
            if (((math.floor(mana/2) - 1) > hand_size[0]) and hp):             
96
                boards, attack_list = hero_power(boards, 0, toon[0], attack_list)             
97
                hp = False
98
            elif hand_size[0] > 0:
99
                boards, win, attack_list, hand_size[0] = play(boards, 0, win, attack_list, hand_size)
100
        boards[1][0] -= attack(attack_list, 0)              
101
        hp = False        
102
        if boards[1][0] <= 0:
103
            win = 0
104
        n += 1
105
        
106
        attack_list = wakeup(attack_list, 1)
107
        hand_size[1] += 1
108
        hp = True
109
        for i in range(math.floor(mana/2)):
110
            if (((math.floor(mana/2) - 1) > hand_size[1]) and hp):
111
                boards, attack_list = hero_power(boards, 1, toon[1], attack_list)
112
                hp = False            
113
            elif hand_size[1] > 0:
114
                boards, win, attack_list, hand_size[1] = play(boards, 1, win, attack_list, hand_size)     
115
        boards[0][0] -= attack(attack_list, 1)
116
        if boards[0][0] <= 0:
117
            win = 1
118
        n += 1
119
120
        mana += 1
121
        
122
    win_counter += win
123
    turn_counter += n
124
    
125
print("coin winrate: " + str(100.0 * (float(win_counter)/float(iterations))) + "\navg turn count: " + str(float(turn_counter)/float(iterations)) + "\ntested over " + str(iterations) + " iterations")