Logiciel pour course contre la montre

11

Je cherche un logiciel pour conduire une course contre la montre locale. Il y aura une cinquantaine de coureurs: assez grands pour faire le travail de préparation des résultats de course avec un stylo et du papier nus plutôt durs et longs, mais trop petits pour utiliser des systèmes de puces de course à part entière.

Les coureurs vont commencer avec un intervalle d'une minute et sur la ligne d'arrivée, un homme annoncera l'heure à l'opérateur. L'opérateur n'aura donc qu'à saisir l'heure du coureur au programme. Le programme devrait être en mesure de produire le tableau des résultats à la volée lorsque les coureurs franchissent la ligne.

Je comprends que la création de ce type de logiciel n'est pas si difficile, mais j'espérais juste qu'il existe des solutions gratuites disponibles que je pourrais utiliser pour mon événement. Faites-le moi savoir si vous en avez entendu parler.

krakovjak
la source
Dans 1 heure, j'en aurai fait un en python :)
Tim
Oui, c'est vrai, je sais qu'il est relativement facile de l'écrire moi-même. Mais quand je commence à penser à toutes les fonctionnalités utiles que j'aimerais avoir, comme éditer un tableau avec les résultats (déplacer automatiquement les entrées si nécessaire), créer une sortie imprimable, exporter vers Excel, filtrer les résultats en fonction du type de vélo, par exemple (vélo de route vs aéro) ou groupes d'âge, etc. Je me rends compte qu'il peut être plus facile d'investir dans la recherche sur Google à la place :-)
krakovjak
4
Pourquoi ne pas simplement utiliser une feuille de calcul?
200_success
1
Je vote pour fermer cette question comme hors sujet car les logiciels sur le cyclisme sont hors sujet. Veuillez demander sur softwarerecs.stackexchange.com et utilisez la balise pour faire du vélo.
Criggie

Réponses:

7

Cela fonctionnera en python (seulement 3.X, pas 2.7), un langage de programmation gratuit à installer. Enregistrez simplement ce qui suit comme une fin de fichier .py- par exemple timetrials.py. Ouvrez ensuite IDLE3 (menu Démarrer) et ouvrez le fichier ( Ctrl+ O). Enfin, appuyez sur F5pour le démarrer.

import datetime
from operator import itemgetter

def get_int_input(prompt, min_=0, max_=None):
    """Get a valid integer input."""
    while True:
        try:
            i = int(input(prompt))
        except ValueError:
            print("Please enter an integer.")
        else:
            if min_ is not None and i < min_:
                print("Must be at least {0}.".format(min_))
                continue
            elif max_ is not None and i > max_:
                print("Must be at most {0}.".format(max_))
                continue
            return i

def get_time():
    """"Get a time input as a datetime.time object."""
    h = get_int_input("Hours (0-23): ", max_=23)
    m = get_int_input("Minutes (0-59): ", max_=59)
    s = get_int_input("Seconds (0-59): ", max_=59)
    ms = get_int_input("Milliseconds (0-999): ", max_=999)
    return datetime.time(h, m, s, ms*1000)

def get_results(competitors):
    """Get a dict of finishing times for all competitors."""
    results = {}
    for _ in range(competitors):
        while True:
            competitor = get_int_input("Enter competitor number: ", min_=1, max_=competitors+1)
            if competitor not in results:
                results[competitor] = get_time()
                break
            print("Time already entered.")
        print_results(results)
    return results

def print_results(results):
    """Display the race results in a table, fastest first."""
    linet = '┌' + "─" * 12 + '┬' + '─' * 17 + '┐'
    linec = '├' + "─" * 12 + '┼' + '─' * 17 + '┤'
    lineb = '└' + "─" * 12 + '┴' + '─' * 17 + '┘'
    print(linet)
    print("│ Competitor │ Time (H:M:S)    │")
    for n, t in sorted(results.items(), key=itemgetter(1)):
        print(linec)
        print("│ {0:<10d} │ {1!s:<15} │".format(n, t))
    print(lineb)

def race():
    """Handle race times for a user-specified number of competitors."""
    n = get_int_input("Enter number of competitors (2-): ", min_=2)
    results = get_results(n)

if __name__ == "__main__":
    race()

Lorsque tout le monde a terminé, cela ressemblera à ceci:

┌──────────────┬───────────────┐  
│  Con Num     │ Time H:M:S    │  
├──────────────┼───────────────┤  
│  1           │ 5:4:3.2       │  
├──────────────┼───────────────┤  
│  2           │ 8:7:6.5       │  
├──────────────┼───────────────┤  
│  3           │ 2:2:2.2       │  
└──────────────┴───────────────┘  
Tim
la source
3
C'est bien beau, mais acheter un package commercial vous donne au moins quelqu'un à qui gémir lorsque vous trouvez un bug.
PeteH
3
N'hésitez pas à me gémir ici, je suis assez triste d'être toujours sur SE!
Tim
2
Bel effort! Cependant , vous devriez envisager d'exécuter ce passé codereview.stackexchange.com - vous n'êtes pas entièrement conforme au guide de style et il y a beaucoup de répétitions (par exemple, envisagez d'ajouter une fonction def get_int_input(prompt, min_=None, max_=None):). De plus, strftimecela vous ferait économiser du travail.
jonrsharpe
@jon fait ça maintenant ... C'est difficile à cause des variations ... 15 minutes;)
Tim
@jon En fait, 13 minutes plus tard ... montage ;-)
Tim
3

Une option est RaceSplitter . Ceci est une application iOS, coûte 35 $. Vous aurez besoin d'un iPad, iPhone ou iPod Touch adapté pour le faire fonctionner.

Vous pouvez saisir une liste de départ à l'avance. Ensuite, pendant la course, il vous suffit de saisir le numéro du coureur lorsqu'il franchit la ligne d'arrivée, et il enregistrera son temps. Vous pouvez ensuite publier les résultats sur le site Web et exporter vers Excel, etc.

Je ne l'ai pas essayé moi-même, mais je l'ai vu en usage dans quelques courses locales. Cela semble bien fonctionner pour le chronométrage, et ils ont mis les résultats en ligne peu de temps après la course.

vclaw
la source
Cela ressemble exactement à ce dont j'ai besoin! Je vous remercie!
krakovjak
1

Nous avons utilisé une application pour téléphones Android conçue par Liuto. C'était génial, facile à apprendre / à utiliser et bon marché - seulement 1,11 $. Fondamentalement, lorsque chaque coureur part par numéro de départ, vous tapez son numéro correspondant à son retour et le calcul de son temps par rapport au temps total écoulé est terminé. Casser!

Jonathan
la source