タイムトライアルレース用のソフトウェア


11

ローカルでタイムトライアルを行うためのソフトウェアを探しています。約50人のライダーが参加します。裸のペンと紙でレース結果を準備するのに十分な大きさで、かなり困難で時間がかかりますが、本格的なレースチップシステムを使用するには小さすぎます。

ライダーは1分間隔でスタートし、フィニッシュラインにはオペレーターに時間を知らせる男がいます。そのため、オペレーターはプログラムにライダーの時間を入力するだけです。プログラムは、ライダーがラインを横断するときに、結果の表をその場で作成できる必要があります。

この種のソフトウェアの作成はそれほど難しくないことを理解していますが、自分のイベントに使用できるフリーウェアソリューションがすぐに利用できることを望んでいました。何か聞いたことがあるなら教えてください。


1時間以内に、Pythonで1つ作成します:)
ティム14

ええ、そうですね、自分で書くのは比較的簡単です。しかし、結果のあるテーブルの編集(必要に応じてエントリを自動的に移動する)、印刷しやすい出力を作成する、Excelにエクスポートする、自転車の種類に応じて結果をフィルタリングするなど、必要なすべての便利な機能について考え始めると(ロードバイクvsエアロ)または年齢グループなど、代わりにグーグルに投資する方が簡単な場合があることに気付きます:
krakovjak 14

4
スプレッドシートを使用しないのはなぜですか?
200_success

1
サイクリングに関するソフトウェアはトピックから外れているので、私はこの質問をトピックから外れたものとして終了することに投票しています。softwarerecs.stackexchange.comで質問し、サイクリング用のタグを使用してください。
クリギー

回答:


7

これはPython(2.7ではなく3.Xのみ)で実行され、無料でインストールできるプログラミング言語です。単に終わるファイルとして以下を保存.py-などtimetrials.py。次に、IDLE3(スタートメニュー)を開き、ファイル(Ctrl+ O)を開きます。最後に、を押しF5て開始します。

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()

全員が終了すると、次のようになります。

┌──────────────┬───────────────┐  
│  Con Num     │ Time H:M:S    │  
├──────────────┼───────────────┤  
│  1           │ 5:4:3.2       │  
├──────────────┼───────────────┤  
│  2           │ 8:7:6.5       │  
├──────────────┼───────────────┤  
│  3           │ 2:2:2.2       │  
└──────────────┴───────────────┘  

3
すべては順調ですが、少なくとも商用パッケージを購入すると、バグを見つけたときにうめき声をあげることができます。
PeteH 14

3
ここで私にうめきなさい、私はいつもSEにいるのに十分悲しいです!
ティム14

2
素晴らしい努力!ただし、この過去のcodereview.stackexchange.comを実行することを検討する必要があります- スタイルガイドに完全に準拠しておらず、多くの繰り返しがあります(たとえば、関数の追加を検討してくださいdef get_int_input(prompt, min_=None, max_=None):)。また、strftimeいくつかの作業を節約できます。
jonrsharpe 14

@jonは今それをしています...バリエーションがあるため、トリッキーです... 15分;)
ティム14

@jon実際、13分後...編集;-)
ティム14

3

1つのオプションはRaceSplitterです。これはiOSアプリで、価格は35ドルです。実行するには、適切なiPad、iPhone、またはiPod Touchが必要です。

事前に開始リストを入力できます。その後、レース中にフィニッシュラインを通過するライダーの番号を入力するだけで、時間を記録できます。その後、結果をWebサイトに公開し、Excelなどにエクスポートできます。

私はこれを自分で試したことはありませんが、いくつかの地元のレースで使用されているのを見てきました。タイミングは問題なく機能しているようで、レース直後に結果がオンラインで得られています。


これはまさに私が必要なもののように見えます!ありがとうございました!
krakovjak

1

Liuto製のAndroidフォン用アプリを使用しました。素晴らしく、簡単に学習/使用でき、安価でした。たったの$ 1.11です。基本的に、各ライダーが開始番号で出発するとき、彼らのリターンで対応する番号をタップすると、全体の経過時間に対する時間の計算が完了します。スナップ!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.