-
Notifications
You must be signed in to change notification settings - Fork 0
/
result.py
72 lines (68 loc) · 1.82 KB
/
result.py
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
import time
class DResult:
def __init__(self, count, combo_large, dsavedat, ex):
self.scgmaxs = 100000
self.scgclrs = 80000
self.scbase = 100000
self.scbonus = 60000
self.hntcount = {1: 0, 2: 0, 3: 0, 4: 0}
self.combo = 0
self.scadd = 0
self.score = 0
self.rest = count
self.count = count
self.combo_large = combo_large
self.ex = ex
self.dsavedat = dsavedat
self.hiscore = dsavedat.score[ex]
def save(self):
self.dsavedat.save(self.ex, self.score, self.hntcount, self.get_result())
def get_result(self):
if self.score < self.scgclrs:
return 0 # fail
if self.rest + self.hntcount[3] + self.hntcount[4] > 0:
return 1 # clear
if self.rest + self.hntcount[2] + self.hntcount[3] + self.hntcount[4] > 0:
return 2 # full combo
return 3 # perfect
def hit(self, h, stat, notesp):
oldcombo = self.combo
if (h == 1):
self.hntcount[1] += 1
self.combo += 1
if (self.combo >= 100):
scadd1 = self.scbase + self.scbonus
else:
scadd1 = self.scbase + self.combo * self.scbonus / 100
scadd1 = round(scadd1 / self.count)
self.score += scadd1
notesp.scadd += scadd1
self.scadd = notesp.scadd
self.rest -= 1
if (h == 2):
self.hntcount[2] += 1
self.combo += 1
if (self.combo >= 100):
scadd1 = self.scbase + self.scbonus
else:
scadd1 = self.scbase + self.combo * self.scbonus / 100
scadd1 = round(scadd1 / self.count * .6)
self.score += scadd1
notesp.scadd += scadd1
self.scadd = notesp.scadd
self.rest -= 1
if (h == 3):
self.hntcount[3] += 1
self.combo = 0
self.rest -= 1
if (h == 4):
self.hntcount[4] += 1
self.combo = 0
scadd1 = -round(self.scbase / self.count)
self.score += scadd1
self.scadd = scadd1
self.rest -= stat
if (self.score < 0):
self.score = 0
if oldcombo // 50 < self.combo // 50:
self.combo_large()