Göreviniz, bir konum dizisinden (örneğin, 100x20 matris) oluşan parametreli bir ada modeli programlamaktır. Mekanlar bitki ve hayvanlarla doldurulacak. Hayvanlar şunları yapabilir:
- bitkileri ve/veya diğer hayvanları yiyin (bulundukları yerde uygun yiyecekler varsa),
- taşımak (komşu yerlere),
- cins (bir yerde aynı türden iki tane varsa),
- açlıktan ölmek veya yenmek.
OOP
Hayvan ev sahibinizi oluştururken mümkün olduğunca OOP kullanmalısınız: tüm türler, tüm hayvanlarda ortak olan davranışı içerecek olan tek bir soyut Animal sınıfından türetilecektir. Belirli hayvanların beslenmeleri, üremeleri, hareketleri vb. ile ilgili belirli özellikleri varsa, Animal sınıfının yöntemlerini geçersiz kılmaları gerekir.
İşte yapmanız gerekenler:
1. Bir sınıf hiyerarşisi oluşturun:
-
Etçiller : Kurt , Boa , Tilki , Ayı , Kartal
-
Otçullar : At , Geyik , Tavşan , Fare , Keçi , Koyun , Domuz , Manda , Ördek , Tırtıl
-
Bitkiler

Aşağıdaki tablo, bir hayvanın o "yiyecek" ile aynı yerdeyse "yiyecek" yeme olasılığının ne kadar olduğunu gösterir. "Bir kurdun tavşanı yediği" duruma bakalım. Tablodaki sayı 60'tır. Bu, eğer bir kurt ve tavşan aynı yerdeyse, kurdun tavşanı yeme ihtimalinin %60 olduğu anlamına gelir. Çok iş parçacıklı bir rasgele sayı üreteci kullanmanız gerekir .
Kurt | boa | Tilki | Ayı | Kartal | Atış | Geyik | Tavşan | Fare | Keçi | Koyun | Domuz | bizon | Ördek | tırtıl | Bitkiler | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Kurt | - | 0 | 0 | 0 | 0 | 10 | 15 | 60 | 80 | 60 | 70 | 15 | 10 | 40 | 0 | 0 |
boa | 0 | - | 15 | 0 | 0 | 0 | 0 | 20 | 40 | 0 | 0 | 0 | 0 | 10 | 0 | 0 |
Tilki | 0 | 0 | - | 0 | 0 | 0 | 0 | 70 | 90 | 0 | 0 | 0 | 0 | 60 | 40 | 0 |
Ayı | 0 | 80 | 0 | - | 0 | 40 | 80 | 80 | 90 | 70 | 70 | 50 | 20 | 10 | 0 | 0 |
Kartal | 0 | 0 | 10 | 0 | - | 0 | 0 | 90 | 90 | 0 | 0 | 0 | 0 | 80 | 0 | 0 |
Atış | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
Geyik | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
Tavşan | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 |
Fare | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 90 | 100 |
Keçi | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 | 100 |
Koyun | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 0 | 0 | 100 |
Domuz | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 0 | - | 0 | 0 | 90 | 100 |
bizon | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 0 | 0 | 100 |
Ördek | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 90 | 100 |
tırtıl | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | - | 100 |
Hayvan özellikleri:
Hayvan başına ağırlık, kg | Konum başına bu türden maksimum hayvan sayısı | Dönüş başına maksimum hız (konum sayısı) | Hayvanı tam olarak beslemek için gereken kilogram gıda sayısı | |
---|---|---|---|---|
Kurt | 50 | 30 | 3 | 8 |
boa | 15 | 30 | 1 | 3 |
Tilki | 8 | 30 | 2 | 2 |
Ayı | 500 | 5 | 2 | 80 |
Kartal | 6 | 20 | 3 | 1 |
Atış | 400 | 20 | 4 | 60 |
Geyik | 300 | 20 | 4 | 50 |
Tavşan | 2 | 150 | 2 | 0.45 |
Fare | 0,05 | 500 | 1 | 0.01 |
Keçi | 60 | 140 | 3 | 10 |
Koyun | 70 | 140 | 3 | 15 |
Domuz | 400 | 50 | 2 | 50 |
bizon | 700 | 10 | 3 | 100 |
Ördek | 1 | 200 | 4 | 0,15 |
tırtıl | 0.01 | 1000 | 0 | 0 |
Bitkiler | 1 | 200 | Yok | Yok |
2. Bir hayvanın yemek yeme , üreme ve hareket yönü seçme yöntemleri olmalıdır .
3. Otobur ve etobur sınıflarında eat yöntemini uygulayabilirsiniz . Ama dikkatli olun, otçul ördek tırtılları yer .
4. Belirli türleri temsil eden belirli sınıflarda, tüm yöntemleri hayvanın özelliklerine uyacak şekilde değiştirebilirsiniz.
5. En az 10 otçul türü ve 5 etçil türü oluşturmanız gerekir (Madde 1'de açıklanmıştır).
çoklu iş parçacığı
Tabii ki, tüm programı sadece döngüler kullanarak tek bir iş parçacığına yazmak mümkündür. Ancak çoklu iş parçacığı ile çalışma pratiğine ihtiyacımız var, bu nedenle iş parçacıklarını ve iş parçacığı havuzlarını kullanmalısınız. Bitki büyümesi ve hayvan eylemleri için yinelenen görevleri yürütmek üzere programlanmış bir havuz ve sistem istatistiklerini görüntülemek için bir görev. Alternatif olarak, bitkiler veya hayvanlarla ilgili bir görevdeki istatistikleri görüntüleyebilirsiniz. Hayvan eylemi görevinde, sıradan bir başka iş parçacığı havuzu kullanabilirsiniz. Bu havuza hangi görevlerin atanacağına siz karar verirsiniz.
Görevin zorunlu bölümleri:
Görevin isteğe bağlı bölümleri:
|
Ayarlar hakkında (eklemeye karar verirseniz)
Programı başlatırken çeşitli ayarları değiştirmeyi kolaylaştırmak için (ada boyutu, bir konumdaki izin verilen maksimum bitki / hayvan sayısı, belirli bir hayvan türünün hareket etme olasılığı, farklı türlerdeki yavru sayısı, vb.) .), tüm bu ayarları bir yere, örneğin ayrı bir sınıfa koymanız gerekir. Aşağıdaki ayarları değiştirmek mümkün olmalıdır:
- ada boyutu
- simülasyondaki bir saat döngüsünün süresi
- simülasyonun başlangıcında her türden hayvan sayısı
- simülasyonu durdurma koşulu (örn. tüm hayvanlar öldü)
- her hayvan türü için yavru sayısı
Unicode (sözde grafik yapmaya karar verirseniz)
Hayvanları tasvir etmek için Unicode karakterleri kullanabilirsiniz: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐁, 🐛.
GO TO FULL VERSION