งานของคุณคือตั้งโปรแกรมแบบจำลองของเกาะที่มีพารามิเตอร์ซึ่งประกอบด้วยอาร์เรย์ของตำแหน่ง (เช่น เมทริกซ์ 100x20) สถานที่จะเต็มไปด้วยพืชและสัตว์ สัตว์สามารถ:

  • กินพืชและ/หรือสัตว์อื่น ๆ (หากถิ่นนั้นมีอาหารที่เหมาะสม)
  • ย้าย (ไปยังตำแหน่งใกล้เคียง)
  • สายพันธุ์ (หากมีอยู่สองชนิดในสถานที่นั้น)
  • หิวตายหรือถูกกิน

อปท

เมื่อสร้างโฮสต์ของสัตว์ คุณควรใช้ OOP มากที่สุดเท่าที่จะเป็นไปได้: ทุกสายพันธุ์จะมาจากคลาสสัตว์ที่เป็นนามธรรม ซึ่งจะมีพฤติกรรมที่เหมือนกันกับสัตว์ทุกตัว หากสัตว์บางชนิดมีคุณสมบัติเฉพาะเกี่ยวกับการให้อาหาร การสืบพันธุ์ การเคลื่อนไหว ฯลฯ พวกมันจำเป็นต้องแทนที่วิธีการของสัตว์ประเภทนั้น

นี่คือสิ่งที่คุณต้องทำ:

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

ลักษณะสัตว์:

น้ำหนักต่อตัว กก จำนวนสัตว์ชนิดนี้สูงสุดต่อสถานที่ ความเร็วสูงสุด (จำนวนตำแหน่ง) ต่อเทิร์น จำนวนกิโลกรัมอาหารที่ต้องใช้ในการให้อาหารสัตว์อย่างเต็มที่
หมาป่า 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 1,000 0 0
พืช 1 200 ไม่มีข้อมูล ไม่มีข้อมูล

2. สัตว์ต้องมีวิธีการกินการผสมพันธุ์และการเลือกทิศทางในการเคลื่อนที่

3. คุณสามารถใช้ วิธี การกินในชั้นเรียนสัตว์กินพืชและสัตว์กินเนื้อ แต่ระวังเป็ด กิน พืชกินหนอน

4. ในคลาสเฉพาะที่แสดงถึงสายพันธุ์เฉพาะ คุณสามารถปรับเปลี่ยนวิธีการทั้งหมดเพื่อให้เหมาะกับลักษณะของสัตว์

5. คุณต้องสร้างสัตว์กินพืชอย่างน้อย 10 ชนิดและสัตว์กินเนื้อ 5 ชนิด (อธิบายไว้ในข้อ 1)

มัลติเธรด

แน่นอนว่าเป็นไปได้ที่จะเขียนโปรแกรมทั้งหมดบนเธรดเดียวโดยใช้ลูปเท่านั้น แต่เราต้องฝึกฝนการทำงานกับมัลติเธรด ดังนั้นคุณต้องใช้เธรดและเธรดพูล หนึ่ง กลุ่ม ตามกำหนดการเพื่อรันงานที่เกิดซ้ำสำหรับการเติบโตของพืชและการกระทำของสัตว์ และงานเพื่อแสดงสถิติของระบบ หรือคุณสามารถแสดงสถิติในงานกับพืชหรือสัตว์ ในงานการกระทำของสัตว์ คุณสามารถใช้เธรดพูลอื่น — อันธรรมดา คุณเป็นผู้ตัดสินใจว่าจะมอบหมายงานใดให้กับพูลนี้

ส่วนบังคับของงาน:

  • ลำดับชั้นของสัตว์ (OOP)
  • พฤติกรรมของสัตว์
  • มัลติเธรด
  • สถิติเกี่ยวกับสถานะของเกาะในแต่ละรอบ (แสดงบนคอนโซล)

ส่วนเพิ่มเติมของงาน:

  • แสดงพารามิเตอร์ในที่เดียวเพื่อให้ง่ายต่อการจัดการการจำลอง
  • กราฟิกแทนสถิติคอนโซล คุณสามารถใช้ pseudographs ในคอนโซล หรือ JavaFX, Swing...
  • เพิ่มปัจจัยอื่นๆ ที่อาจส่งผลต่อการจำลอง:
    • สัตว์อีกหลายชนิด
    • พืชชนิดต่างๆ
    • พฤติกรรมที่กำหนดเองสำหรับกลุ่มสัตว์ (เช่น หมาป่าล่าและย้ายเป็นฝูงแทนที่จะแยกจากกัน)
    • พื้นดินรวมถึงแม่น้ำที่กีดขวางการเคลื่อนที่ของสัตว์บางชนิด

เกี่ยวกับการตั้งค่า (หากคุณตัดสินใจที่จะเพิ่ม)

เพื่อให้สะดวกในการเปลี่ยนการตั้งค่าต่างๆ เมื่อเริ่มโปรแกรม (ขนาดเกาะ, จำนวนพืช/สัตว์สูงสุดที่อนุญาตในที่เดียว, ความน่าจะเป็นที่สัตว์ประเภทใดประเภทหนึ่งจะเคลื่อนไหว, จำนวนลูกหลานในสายพันธุ์ต่างๆ ฯลฯ .) คุณต้องตั้งค่าเหล่านี้ทั้งหมด ตัวอย่างเช่น ในชั้นเรียนแยกต่างหาก ควรเปลี่ยนการตั้งค่าต่อไปนี้:

  • ขนาดเกาะ
  • ระยะเวลาของรอบนาฬิกาในการจำลอง
  • จำนวนสัตว์แต่ละชนิดเมื่อเริ่มจำลอง
  • เงื่อนไขการหยุดจำลอง (เช่น สัตว์ตายหมดแล้ว)
  • จำนวนลูกของสัตว์แต่ละชนิด

Unicode (หากคุณตัดสินใจที่จะทำ pseudographics)

คุณสามารถใช้อักขระ Unicode เพื่ออธิบายสัตว์: 🐃, 🐻, 🐎, 🦌, 🐗, 🐑, 🐐, 🐺, 🐍, 🦊, 🦅, 🐇, 🦆, 🐁, 🐛