あなたのタスクは、位置の配列 (たとえば、100x20 行列) で構成されるパラメーター化されたアイランドのモデルをプログラムすることです。場所には植物や動物が生息します。動物は次のことができます。
- 植物や他の動物を食べる(その場所に適切な食べ物がある場合)、
- (近隣の場所に)移動する、
- 品種 (同じ場所に 2 種類が存在する場合)、
- 飢えで死ぬか、食べられるか。
OOP
動物のホストを作成するときは、できる限り OOP を使用する必要があります。すべての種は、すべての動物に共通の動作を含む 1 つの抽象的な Animal クラスから派生します。特定の動物が摂食、生殖、移動などに関して特定の機能を備えている場合は、Animal クラスのメソッドをオーバーライドする必要があります。
行う必要があるのは次のとおりです。
1. クラス階層を作成します。
-
肉食動物:オオカミ、ボア、キツネ、クマ、ワシ
-
草食動物:馬、鹿、ウサギ、ネズミ、ヤギ、羊、猪、水牛、アヒル、毛虫
-
植物

以下の表は、動物がその「食べ物」と同じ場所にいた場合に、その「食べ物」を食べる可能性を示しています。「オオカミがウサギを食べる」状況を見てみましょう。表の数字は 60 です。これは、オオカミとウサギが同じ場所にいる場合、オオカミがウサギを食べる確率が 60% であることを意味します。マルチスレッド乱数ジェネレータを使用する必要があります。
狼 | ボア | 狐 | クマ | 鷲 | 馬 | 鹿 | うさぎ | ねずみ | ヤギ | 羊 | イノシシ | バッファロー | アヒル | キャタピラー | 植物 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
狼 | - | 0 | 0 | 0 | 0 | 10 | 15 | 60 | 80 | 60 | 70 | 15 | 10 | 40 | 0 | 0 |
ボア | 0 | - | 15 | 0 | 0 | 0 | 0 | 20 | 40 | 0 | 0 | 0 | 0 | 10 | 0 | 0 |
狐 | 0 | 0 | - | 0 | 0 | 0 | 0 | 70 | 90 | 0 | 0 | 0 | 0 | 60 | 40 | 0 |
クマ | 0 | 80 | 0 | - | 0 | 40 | 80 | 80 | 90 | 70 | 70 | 50 | 20 | 10 | 0 | 0 |
鷲 | 0 | 0 | 10 | 0 | - | 0 | 0 | 90 | 90 | 0 | 0 | 0 | 0 | 80 | 0 | 0 |
馬 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
鹿 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
うさぎ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
ねずみ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 90 | 100 |
ヤギ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 100 |
羊 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 100 |
イノシシ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 0 | - | 0 | 0 | 90 | 100 |
バッファロー | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 100 |
アヒル | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 90 | 100 |
キャタピラー | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 100 |
動物の特徴:
動物あたりの体重、kg | 場所ごとのこの種の動物の最大数 | 1 ターンあたりの最大速度 (位置の数) | 動物を完全に養うのに必要な餌のキログラム数 | |
---|---|---|---|---|
狼 | 50 | 30 | 3 | 8 |
ボア | 15 | 30 | 1 | 3 |
狐 | 8 | 30 | 2 | 2 |
クマ | 500 | 5 | 2 | 80 |
鷲 | 6 | 20 | 3 | 1 |
馬 | 400 | 20 | 4 | 60 |
鹿 | 300 | 20 | 4 | 50 |
うさぎ | 2 | 150 | 2 | 0.45 |
ねずみ | 0.05 | 500 | 1 | 0.01 |
ヤギ | 60 | 140 | 3 | 10 |
羊 | 70 | 140 | 3 | 15 |
イノシシ | 400 | 50 | 2 | 50 |
バッファロー | 700 | 10 | 3 | 100 |
アヒル | 1 | 200 | 4 | 0.15 |
キャタピラー | 0.01 | 1000 | 0 | 0 |
植物 | 1 | 200 | 該当なし | 該当なし |
2. 動物は、食事をし、繁殖し、移動方向を選択する方法を持っていなければなりません。
3.草食動物クラスと肉食動物クラスにEatメソッドを実装できます。ただし、草食動物のアヒルは毛虫を食べるので注意してください。
4. 特定の種を表す特定のクラスでは、動物の特性に合わせてすべてのメソッドを変更できます。
5. 少なくとも 10 種類の草食動物種と 5 種類の肉食動物種を作成する必要があります (項目 1 で説明)。
マルチスレッド化
もちろん、ループのみを使用してプログラム全体を 1 つのスレッドで記述することも可能です。ただし、マルチスレッドを扱う練習が必要なので、スレッドとスレッド プールを使用する必要があります。植物の成長と動物の行動に関する定期的なタスクを実行する1 つのスケジュールされたプールと、システム統計を表示するタスク。あるいは、植物や動物のタスクで統計を表示することもできます。動物アクション タスク内では、別のスレッド プール (通常のスレッド プール) を使用できます。このプールにどのタスクを割り当てるかを決定します。
タスクの必須部分:
タスクのオプション部分:
|
設定について(追加する場合)
プログラムの開始時にさまざまな設定を変更しやすくするため (島のサイズ、1 つの場所で許容される動植物の最大数、特定の種類の動物が移動する確率、異なる種の子孫の数など) .)、これらすべての設定をどこか、たとえば別のクラスに置く必要があります。次の設定を変更できるはずです。
- 島の大きさ
- シミュレーションにおけるクロックサイクルの継続時間
- シミュレーション開始時の各種の動物の数
- シミュレーションを停止するための条件 (例: すべての動物が死亡した)
- 動物の種類ごとの子孫の数
Unicode (疑似グラフィックスを使用する場合)
Unicode 文字を使用して動物を表現できます: 🐃、🐻、🐎、🦌、🐗、🐑、🐐、🐺、🐍、🦊、🦅、🐇、🦆、🐁、🐛。
GO TO FULL VERSION