-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
163 lines (131 loc) · 4.58 KB
/
main.py
File metadata and controls
163 lines (131 loc) · 4.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
from js import document
from js import location
from js import localStorage
from random import random
from math import floor
has_flipped_card = False
has_both_flipped_cards = False
lockboard = False
first_card = None
first_card_id = None
second_card = None
second_card_id = None
matches = 0
current_score = 0
best_score = 0
def flip_card(event):
global has_flipped_card, has_both_flipped_cards, lockboard
global first_card, first_card_id
global second_card, second_card_id
print("FLIP_CARD")
if has_both_flipped_cards:
unflip_cards()
if lockboard:
return
card = event.currentTarget
card.classList.add('flip')
evaluate(event)
def evaluate(event):
global has_flipped_card, has_both_flipped_cards
global first_card, first_card_id
global second_card, second_card_id
print("EVALUATE")
if not has_flipped_card:
has_flipped_card = True
first_card = event.currentTarget.dataset.framework
first_card_id = event.currentTarget.id
else:
second_card_id = event.currentTarget.id
if first_card_id == second_card_id:
print(f'You chose the same card, please pick another')
second_card_id = None
else:
second_card = event.currentTarget.dataset.framework
second_card_id = event.currentTarget.id
has_both_flipped_cards = True
check_for_match()
def check_for_match():
global has_both_flipped_cards
global first_card, first_card_id
global second_card, second_card_id
global current_score, best_score, matches
print("CHECK_FOR_MATCH")
if first_card == second_card and first_card_id != second_card_id:
print("It's a match!")
update_score()
matches += 1
print(f'MATCHES: {matches}')
if matches == 6:
print("you won")
if best_score > current_score or best_score == 0:
best_score = current_score
update_best_score()
document.getElementById("win-banner").innerHTML = f"You Won in {current_score} moves!"
document.getElementById("win-banner").id = "win-banner-open"
document.getElementById("win-banner-open").classList.add("win-modal")
disable_cards()
reset_board()
else:
print("Not a match")
update_score()
def disable_cards():
global first_card_id, second_card_id
print("DISABLE_CARDS")
document.getElementById(f"{first_card_id}").removeAttribute('py-click')
document.getElementById(f"{second_card_id}").removeAttribute('py-click')
first_card_id = None
second_card_id = None
def unflip_cards():
global has_flipped_card, has_both_flipped_cards, lockboard
global first_card, first_card_id
global second_card, second_card_id
print("UNFLIP")
lockboard = True
document.getElementById(f"{first_card_id}").classList.remove('flip')
document.getElementById(f"{second_card_id}").classList.remove('flip')
lockboard = False
reset_board()
def reset_board():
global has_flipped_card, has_both_flipped_cards, lockboard, first_card, first_card_id, second_card, second_card_id
lockboard = False
has_flipped_card = False
has_both_flipped_cards = False
first_card = None
first_card_id = None
second_card = None
second_card_id = None
def shuffle():
cards = document.querySelectorAll('.memory-card')
for card in cards:
randomPos = floor(random() * 12)
card.style.order = randomPos
def score_setup():
global current_score, best_score
document.getElementById("current-score").innerHTML = current_score
print(localStorage.getItem("best-score"))
best_score_retrieved = localStorage.getItem("best-score")
if best_score_retrieved is None:
best_score = 0
document.getElementById("best-score").innerHTML = 0
else:
best_score = int(best_score_retrieved)
document.getElementById("best-score").innerHTML = best_score
def update_score():
global current_score
current_score += 1
document.getElementById("current-score").innerHTML = current_score
def update_best_score():
global best_score
document.getElementById("best-score").innerHTML = best_score
localStorage.setItem("best-score", f"{best_score}")
def clear_best_score(event):
global best_score
localStorage.removeItem("best-score")
best_score = 0
document.getElementById("best-score").innerHTML = 0
def close_win_banner(event):
document.getElementById("win-banner-open").id = "win-banner"
def reset(event):
location.reload()
shuffle()
score_setup()