Now me have 13 letters, auf wiedersehen!

Calculation tool for max hover count added :'-(
This commit is contained in:
Nikolya Andreychik
2021-04-12 14:02:34 +03:00
parent 6dd01a6f32
commit cd1d31b352
3 changed files with 62 additions and 18 deletions
+21 -16
View File
@@ -25,6 +25,9 @@ class EndSceen():
self.game = mainGameClass
self.saveFileName = 'leaders.lb'
self.maxNumberNameLetters = 13
self.fstr = ' {0:3d} {1:^'+str(self.maxNumberNameLetters)+'} {2:6d} {3:8.2f} ';
def getScorePosition(self, score):
counter = 1
@@ -60,7 +63,7 @@ class EndSceen():
for line in fileData.split('\n'):
name, score, time = line.split('\t')
data.append(
[name[:10], int(score), float(time)]
[name[:self.maxNumberNameLetters], int(score), float(time)]
)
except Exception:
pass
@@ -72,7 +75,7 @@ class EndSceen():
data = self.getResultsFromFile()
data.append(
[self.playerName[:10],
[self.playerName[:self.maxNumberNameLetters],
int(self.game.getScore()),
float(self.game.getTime())]
)
@@ -112,8 +115,8 @@ class EndSceen():
for i in [i[0] for i in self.sortedDataByScores[:number]]:
if (self.game.getScore() > self.data[i][1] and not placeFlag):
self.renderText('>{0:3} {1:^10} {2:6d} {3:8.2f} '.format(j,
self.playerName[:10], self.game.getScore(),
self.renderText(('>'+self.fstr).format(j,
self.playerName[:self.maxNumberNameLetters], self.game.getScore(),
self.game.getTime()
),
self.fontLeaderBoard, (255, 255, 255),
@@ -124,7 +127,7 @@ class EndSceen():
if (j > number):
break
formatDataForOnePlayer = ' {0:3} {1:^10} {2:6d} {3:8.2f} '.format(
formatDataForOnePlayer = (' '+self.fstr).format(
j, *self.data[i])
self.renderText(formatDataForOnePlayer,
@@ -137,14 +140,15 @@ class EndSceen():
break
if not placeFlag and j <= number:
self.renderText('>{0:3} {1:^10} {2:6d} {3:8.2f} '.format(
j, self.playerName[:10], self.game.getScore(),
self.renderText(('>'+self.fstr).format(
j, self.playerName[:self.maxNumberNameLetters], self.game.getScore(),
self.game.getTime()
),
self.fontLeaderBoard, (255, 255, 255),
(self.game.getScreenWidth()/2,100 + j*50))
self.renderText(' {0:>3} {1:^10} {2:>6} {3:>8} '.format(
tmpStr = ' {0:>3} {1:^'+str(self.maxNumberNameLetters)+'} {2:>6} {3:>8} '
self.renderText(tmpStr.format(
'..','.....', '..', '.....'
),
self.fontLeaderBoard, (255, 255, 255),
@@ -176,26 +180,27 @@ class EndSceen():
self.endScreenTimer += 1
if len(self.playerName) > 0:
self.renderText(' {0:3d} {1:^10} {2:6d} {3:8.2f} '.format(
self.renderText((' '+self.fstr).format(
self.getScorePosition(self.game.getScore()),
self.playerName[:10] + (cursorChar
if len(self.playerName) < 10 else ''),
self.playerName[:self.maxNumberNameLetters] + (cursorChar
if len(self.playerName) < self.maxNumberNameLetters else ''),
self.game.getScore(), self.game.getTime()
),
self.fontLeaderBoard, (255, 255, 255),
(self.game.getScreenWidth()/2,100 + (5 + 2)*50))
else:
self.renderText(' {0:3d} {1:^10} {2:6d} {3:8.2f} '.format(
self.renderText((' '+self.fstr).format(
self.getScorePosition(self.game.getScore()),
self.playerName[:10] + (cursorChar
if len(self.playerName) < 10 else ''),
self.playerName[:self.maxNumberNameLetters] + (cursorChar
if len(self.playerName) < self.maxNumberNameLetters else ''),
self.game.getScore(), self.game.getTime()
),
self.fontLeaderBoard, (255, 255, 255),
(self.game.getScreenWidth()/2, 100 +
(5 + 2)*50), (208, 85, 52))
self.renderText(' {0:^30} '.format('Missing player name'),
tmpStr = '{0:^'+str(len(self.fstr))+'}'
self.renderText(tmpStr.format('Missing player name'),
self.fontError, (255, 255, 255),
(self.game.getScreenWidth()/2,100 + (5 + 2)*50 + 25))
@@ -234,7 +239,7 @@ class EndSceen():
elif len(
pygame.key.name(event.key)
) == 1 and len(self.playerName) < 10:
) == 1 and len(self.playerName) < self.maxNumberNameLetters:
if pygame.key.get_mods() & pygame.KMOD_LSHIFT:
self.playerName += pygame.key.name(event.key).upper()
else:
+1 -2
View File
@@ -144,8 +144,7 @@ class Player(pygame.sprite.Sprite):
def calcMaxHoverCount(self, speed):
return int(round(4.76 + 127.5*(1/speed) -
239.45*(speed**-2) + 191.29*(speed**-3)))
return round(-0.44 + 0.079*math.log(speed) + 49.42 * (1/math.sqrt(speed)))
def update(self):
+40
View File
@@ -0,0 +1,40 @@
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import math
data = pd.read_csv('Jumps calculating.csv', index_col=0, header=1)
data = data.apply(pd.to_numeric)
fig, ax = plt.subplots()
threshold = data.iloc[0,0]
offset = threshold*0.05
print(data.shape)
data = data[(data > threshold-offset) & (data < threshold+offset)].fillna(0)
indexNotNaN = np.flatnonzero(data)
x = indexNotNaN // data.shape[1]
y = indexNotNaN % data.shape[1]
x = [data.index[i] for i in x]
# x.append(6660)
print(x)
y = [int(data.columns[i]) for i in y]
# y.append(1)
print(y)
X = np.array([[1, math.log(i), 1/math.sqrt(i)] for i in x])
pX = np.linalg.pinv(X)
w = np.dot(pX, y)
print(w)
tmpX = range(1, 666)
tmpY = np.array([np.dot(np.array([1, math.log(i), 1/math.sqrt(i)]), w) for i in tmpX])
ax.scatter(x, y)
ax.plot(tmpX, tmpY)
plt.show()
print(data)