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.game = mainGameClass
|
||||||
self.saveFileName = 'leaders.lb'
|
self.saveFileName = 'leaders.lb'
|
||||||
|
|
||||||
|
self.maxNumberNameLetters = 13
|
||||||
|
self.fstr = ' {0:3d} {1:^'+str(self.maxNumberNameLetters)+'} {2:6d} {3:8.2f} ';
|
||||||
|
|
||||||
|
|
||||||
def getScorePosition(self, score):
|
def getScorePosition(self, score):
|
||||||
counter = 1
|
counter = 1
|
||||||
@@ -60,7 +63,7 @@ class EndSceen():
|
|||||||
for line in fileData.split('\n'):
|
for line in fileData.split('\n'):
|
||||||
name, score, time = line.split('\t')
|
name, score, time = line.split('\t')
|
||||||
data.append(
|
data.append(
|
||||||
[name[:10], int(score), float(time)]
|
[name[:self.maxNumberNameLetters], int(score), float(time)]
|
||||||
)
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
@@ -72,7 +75,7 @@ class EndSceen():
|
|||||||
data = self.getResultsFromFile()
|
data = self.getResultsFromFile()
|
||||||
|
|
||||||
data.append(
|
data.append(
|
||||||
[self.playerName[:10],
|
[self.playerName[:self.maxNumberNameLetters],
|
||||||
int(self.game.getScore()),
|
int(self.game.getScore()),
|
||||||
float(self.game.getTime())]
|
float(self.game.getTime())]
|
||||||
)
|
)
|
||||||
@@ -112,8 +115,8 @@ class EndSceen():
|
|||||||
|
|
||||||
for i in [i[0] for i in self.sortedDataByScores[:number]]:
|
for i in [i[0] for i in self.sortedDataByScores[:number]]:
|
||||||
if (self.game.getScore() > self.data[i][1] and not placeFlag):
|
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.renderText(('>'+self.fstr).format(j,
|
||||||
self.playerName[:10], self.game.getScore(),
|
self.playerName[:self.maxNumberNameLetters], self.game.getScore(),
|
||||||
self.game.getTime()
|
self.game.getTime()
|
||||||
),
|
),
|
||||||
self.fontLeaderBoard, (255, 255, 255),
|
self.fontLeaderBoard, (255, 255, 255),
|
||||||
@@ -124,7 +127,7 @@ class EndSceen():
|
|||||||
if (j > number):
|
if (j > number):
|
||||||
break
|
break
|
||||||
|
|
||||||
formatDataForOnePlayer = ' {0:3} {1:^10} {2:6d} {3:8.2f} '.format(
|
formatDataForOnePlayer = (' '+self.fstr).format(
|
||||||
j, *self.data[i])
|
j, *self.data[i])
|
||||||
|
|
||||||
self.renderText(formatDataForOnePlayer,
|
self.renderText(formatDataForOnePlayer,
|
||||||
@@ -137,14 +140,15 @@ class EndSceen():
|
|||||||
break
|
break
|
||||||
|
|
||||||
if not placeFlag and j <= number:
|
if not placeFlag and j <= number:
|
||||||
self.renderText('>{0:3} {1:^10} {2:6d} {3:8.2f} '.format(
|
self.renderText(('>'+self.fstr).format(
|
||||||
j, self.playerName[:10], self.game.getScore(),
|
j, self.playerName[:self.maxNumberNameLetters], self.game.getScore(),
|
||||||
self.game.getTime()
|
self.game.getTime()
|
||||||
),
|
),
|
||||||
self.fontLeaderBoard, (255, 255, 255),
|
self.fontLeaderBoard, (255, 255, 255),
|
||||||
(self.game.getScreenWidth()/2,100 + j*50))
|
(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),
|
self.fontLeaderBoard, (255, 255, 255),
|
||||||
@@ -176,26 +180,27 @@ class EndSceen():
|
|||||||
self.endScreenTimer += 1
|
self.endScreenTimer += 1
|
||||||
|
|
||||||
if len(self.playerName) > 0:
|
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.getScorePosition(self.game.getScore()),
|
||||||
self.playerName[:10] + (cursorChar
|
self.playerName[:self.maxNumberNameLetters] + (cursorChar
|
||||||
if len(self.playerName) < 10 else ''),
|
if len(self.playerName) < self.maxNumberNameLetters else ''),
|
||||||
self.game.getScore(), self.game.getTime()
|
self.game.getScore(), self.game.getTime()
|
||||||
),
|
),
|
||||||
self.fontLeaderBoard, (255, 255, 255),
|
self.fontLeaderBoard, (255, 255, 255),
|
||||||
(self.game.getScreenWidth()/2,100 + (5 + 2)*50))
|
(self.game.getScreenWidth()/2,100 + (5 + 2)*50))
|
||||||
else:
|
else:
|
||||||
self.renderText(' {0:3d} {1:^10} {2:6d} {3:8.2f} '.format(
|
self.renderText((' '+self.fstr).format(
|
||||||
self.getScorePosition(self.game.getScore()),
|
self.getScorePosition(self.game.getScore()),
|
||||||
self.playerName[:10] + (cursorChar
|
self.playerName[:self.maxNumberNameLetters] + (cursorChar
|
||||||
if len(self.playerName) < 10 else ''),
|
if len(self.playerName) < self.maxNumberNameLetters else ''),
|
||||||
self.game.getScore(), self.game.getTime()
|
self.game.getScore(), self.game.getTime()
|
||||||
),
|
),
|
||||||
self.fontLeaderBoard, (255, 255, 255),
|
self.fontLeaderBoard, (255, 255, 255),
|
||||||
(self.game.getScreenWidth()/2, 100 +
|
(self.game.getScreenWidth()/2, 100 +
|
||||||
(5 + 2)*50), (208, 85, 52))
|
(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.fontError, (255, 255, 255),
|
||||||
(self.game.getScreenWidth()/2,100 + (5 + 2)*50 + 25))
|
(self.game.getScreenWidth()/2,100 + (5 + 2)*50 + 25))
|
||||||
|
|
||||||
@@ -234,7 +239,7 @@ class EndSceen():
|
|||||||
|
|
||||||
elif len(
|
elif len(
|
||||||
pygame.key.name(event.key)
|
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:
|
if pygame.key.get_mods() & pygame.KMOD_LSHIFT:
|
||||||
self.playerName += pygame.key.name(event.key).upper()
|
self.playerName += pygame.key.name(event.key).upper()
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -144,8 +144,7 @@ class Player(pygame.sprite.Sprite):
|
|||||||
|
|
||||||
|
|
||||||
def calcMaxHoverCount(self, speed):
|
def calcMaxHoverCount(self, speed):
|
||||||
return int(round(4.76 + 127.5*(1/speed) -
|
return round(-0.44 + 0.079*math.log(speed) + 49.42 * (1/math.sqrt(speed)))
|
||||||
239.45*(speed**-2) + 191.29*(speed**-3)))
|
|
||||||
|
|
||||||
|
|
||||||
def update(self):
|
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