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:

  • Hayvan hiyerarşisi (OOP)
  • Hayvan Davranışı
  • çoklu iş parçacığı
  • Her yinelemede adanın durumuna ilişkin istatistikler (konsolda görüntülenir)

Görevin isteğe bağlı bölümleri:

  • Simülasyonu yönetmenin kolay olması için parametreleri tek bir yerde görüntüleyin
  • Konsol istatistikleri yerine grafikler. Konsolda sözde grafikleri veya JavaFX, Swing'i kullanabilirsiniz...
  • Simülasyonu etkileyebilecek diğer faktörleri ekleyin:
    • daha fazla hayvan türü
    • farklı bitki türleri
    • bir grup hayvan için özel davranış (örneğin, kurtlar ayrı ayrı değil, bir sürü olarak avlanır ve hareket eder)
    • belirli hayvanların hareketini engelleyen bir nehir dahil olmak üzere kara arazisi

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: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐁, 🐛.