2011-06-23 4 views
1

私はこのプログラムをJavaで書く方法を教えてください。私は人が私にはコードを書いて欲しいとは思っていませんが、このプログラムを始めるにはどのような方法/私はJavaで新しく、これは私のプログラミングの練習です。プログラムのJavaでチームスケジューリングプログラムを書く方法

私の考えでは、ユーザーが多数のチームに入り、各チームのスケジュールを生成することができるシンプルなチームのスケジューリングプログラム、です。スケジュールでは、各チームはお互いに対戦します。

チーム4
------------------------
チーム対チーム対4つのチーム

チーム1 2
チーム3チーム対チーム対チーム対1 3
チーム2~4
------------------------
チーム1~4
チーム2チームVS 3

私の質問はすべきです私はすべてのチームを格納するために配列を使用しますか?スケジュールをどのように生成すればよいですか(Randomクラスを使用しますか?)各チームが互いに対戦することを確認するにはどうすればいいですか、複数回ではありませんか?

ありがとうございます。

+1

まず、どのように入力するか、出力はどのように見えるか、あなたが望むものを正確に決定する必要があります。もう一つのヒント - 私はRandomクラスを使用して一致を生成することは避けていますが、そうすることもできます。あなたはあなたの事例を生み出すためにランダムなマッチを選んだだけではありませんでしたか?あなたがそれをコード化する体系的な方法があります。あなたの頭の中で例を生成したのとほとんど同じです。おそらくもっとチームをつけて、模様を探してみてください。 –

+0

そして、ahmetに同意すると、過去の質問に対する良い答えが得られました。最良のものでAcceptedボタンをクリックすることを忘れないでください。 –

+2

@ ahment/Rob:感情を理解しています。 STOは、ネットワークに接続している人のためのリソースです。 OPは(STOコミュニティの規範の意味で)社会的責任を負っているかもしれないし、そうでないかもしれないが、他人が有用な情報を得るのを妨げてはならない。 – alphazero

答えて

0

ここにいくつかの基本的な考え方があります:

もちろんチームオブジェクトが必要です。また、Scheduleオブジェクトが必要です。次に、Design Patternsの本からいくつかの実装方法をお勧めします。 1つはBuilderパターンを使用することです。あなたはScheduleMakerを持っていて、次に異なるコンクリートビルダーを持つことができます。例えば、サッカーでは、スケジュールに関する規則があります。各チームは、その部門の各ピアに対して2試合を行う予定です。一般的に異なるコンクリートビルダーは、異なる物理的変化を提供するために使用されます。たとえば、Go4の本では、単純な実装と複雑な実装に異なる数のドア、ホールなどが含まれているMazeBuilderを例にしています。あなたの場合は、ルールを作成する方法が異なる場合があります。私が与えた例では、 'setupDivisionalGames'というメソッドをインターフェースにプッシュすると、他のスケジュールを部門内ではないランダムに選択されたライバルで埋めることができます。

これが別のパターンのように聞こえ始めている場合、より単純な実装では、対戦相手を選ぶための戦略パターンを持つだけです。上記のようなルールがない場合は、単純なランダムストラテジーが適切なデフォルトの実装になり、より多くのファンシーを獲得したい場合は、新しい実装を単体テストし、他のコードを変更せずに新しいスケジュールを得ることができます。

最後に、スコアベースのアプローチを行う可能性について考えてみましょう。それがNFLの仕組みです。あなたがデトロイトのライオンであれば、来シーズンのパッカーズよりもあなたのスケジュールはもっと渋滞するでしょう。ビルダーかストラテジーのどちらかを使うと、そのようなことを簡単に行うことができます。チームの相対スコアは、すべての対戦相手の平均得点に近いものでなければなりません。

0

チームに関するデータを保持するチームオブジェクトが必要です。チームごとに1つのチームオブジェクト。また、2つのTeamオブジェクトを渡して互いに対して再生できるようにするMatchオブジェクトを持つと便利です。メソッドをTeamとMatchオブジェクトの外に作成して、マッチで競合するチームを自動的に生成することができます。

私はチームのオブジェクトのArrayListのを使用して、あなたが望むならば、ランダムマッチはちょうどArrayListのインデックスになる2つの乱数を生成します。 Math.random()またはRandomクラスを使用できますが、問題はありません。 2つの数字は同じであってはなりません。さもなければ、チームはそれ自体が演奏されていて意味がありません。これからコード内のアルゴリズムを解くことができるはずです。

これが役に立ちます。

1

1)実装の詳細:まだお待ちください。あなたは論理的な解決法にどのように近づいているのか分かりません。

2)各チームがトーナメントで他のすべてのチームと対戦しなければならないという事実は決定論的です。ゲーム全体をどのようにして配布するかは、あなた次第です。たとえば、特定のチームの1日あたりの連続ゲーム数はいくつですか?一定のルールが与えられれば、当然になります。そして、スロットのn個の選択肢を与えられたランダムな選択を選択します(または、.. [回答#1参照]の最初の項目を選ぶこともできます)。

3)Read up on permutations and combinationsこの資料はお役に立ちましたか?

関連する問題