Now me have 13 letters, auf wiedersehen!
Calculation tool for max hover count added :'-(
This commit is contained in:
+21
-16
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user