diff --git a/EndSceen.py b/EndSceen.py index 35fc3c5..f96ee87 100644 --- a/EndSceen.py +++ b/EndSceen.py @@ -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: diff --git a/Player.py b/Player.py index fdb43ca..1800f5b 100644 --- a/Player.py +++ b/Player.py @@ -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): diff --git a/tools/calcMaxHoverbyPoints.py b/tools/calcMaxHoverbyPoints.py new file mode 100644 index 0000000..7ce824b --- /dev/null +++ b/tools/calcMaxHoverbyPoints.py @@ -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)