Created
September 20, 2018 23:53
-
-
Save Songbird0/a04ac99f792a557e7014d447bde6b2bc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*-coding: utf-8 -*- | |
# B la base de points du niveau actuel | |
# N = 19, le nombre de niveaux | |
# P, les points obtenus à l'instant T | |
# J, le nombre de jours de présence potentiellement effectués | |
# dans le futur. | |
# U, le facteur multiplicateur activé si l'utilisateur a assisté à la dernière réunion. | |
# C, le coefficient de proportionnalité commun à chaque base (B). | |
# R (inconnue), le nombre de jours restants à jouer pour être promu. | |
# | |
# Objectif: Estimer le nombre de jours restants avant une éventuelle promotion | |
# en fonciton des points déjà gagnés. | |
# Facteurs: | |
# - Présence quotidienne | |
# - Présence en réunion | |
N = 19 | |
def expand(BU, C): | |
""" | |
BU: Base Universelle | |
C: Coefficient multiplicateur | |
""" | |
i = 0 | |
rank_bar_list = [] | |
while i < N: | |
if i == 0: | |
rank_bar_list.append(BU) | |
i += 1 | |
continue | |
else: | |
length_of_rank_bar_list = len(rank_bar_list) | |
last_element = rank_bar_list[length_of_rank_bar_list - 1] | |
rank_bar_list.append(last_element + (last_element * C // 100)) | |
i += 1 | |
continue | |
return rank_bar_list | |
def build(rank_bar_list): | |
yield rank_bar_list[0], "GAV" | |
yield rank_bar_list[1], "Brigadier" | |
yield rank_bar_list[2], "Brigadier-Chef" | |
yield rank_bar_list[3], "Maréchal des Logis" | |
yield rank_bar_list[4], "Gendarme" | |
yield rank_bar_list[5], "Maréchal des Logis-Chef" | |
yield rank_bar_list[6], "Adjudant" | |
yield rank_bar_list[7], "Adjudant-Chef" | |
yield rank_bar_list[8], "Major" | |
yield rank_bar_list[9], "Sous-lieutenant" | |
yield rank_bar_list[10], "Lieutenant" | |
yield rank_bar_list[11], "Capitaine" | |
yield rank_bar_list[12], "Commandant" | |
yield rank_bar_list[13], "Lieutenant-Colonel" | |
yield rank_bar_list[14], "Colonel" | |
yield rank_bar_list[15], "Général de Brigade" | |
yield rank_bar_list[16], "Général de Division" | |
yield rank_bar_list[17], "Général de Corps d'Armée" | |
yield rank_bar_list[18], "Général d'Armée" | |
# [print(k, v) for k,v in ] | |
complete_list = build(expand(50, 50)) | |
def estim(complete_list, | |
current_amount_of_points, | |
wanted_step, | |
interval = 5, | |
Q = 10): | |
""" | |
complete_list - La liste des grades avec leur pallier | |
current_amount_of_points - Le nombre actuel de points du joueur | |
wanted_step - Pallier désiré par le joueur, cette valeur devrait toujours être correcte | |
interval - Nombre de jours par semaine que le joueur | |
Q - Le montant quotidien de points distribués au joueur | |
""" | |
points_remaining = wanted_step - current_amount_of_points | |
days_remaining = points_remaining // Q | |
rank = {pts: rank_name for (pts, rank_name) in complete_list.items() if pts == wanted_step} | |
message = """ | |
Vous avez actuellement {0} point(s). | |
Il vous reste {1} {2} avant d'atteindre le rang {3}. | |
""".format( | |
current_amount_of_points, | |
days_remaining, | |
"jour" if days_remaining <= 1 else "jours", rank[wanted_step]) | |
print(message) | |
complete_list = {pts: rank_name for (pts, rank_name) in complete_list} | |
for (pts, rank) in complete_list.items(): | |
print(pts, " pts: ", rank) | |
estim(complete_list, 81, 168) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment