สุดยอดการผูกขาดโดย NullPointer
โครงการนี้พัฒนาโดย
- เบอร์เคย์ บาร์ลาส (หัวหน้าทีม)
- บาราน เบอร์คาย โฮเคเล็ก
- ฟูร์คาน ซาห์บาซ
- ทูเมย์ ออซเดเมียร์
- อาลีฮาน ซอร์ลู
คุณสมบัติหลัก
- ผู้เล่นหลายคนบนเครือข่ายเดียวกันสูงสุด 12 ผู้เล่น
- บันทึก / โหลดสถานะเกม
- ผู้เล่นบอทที่มี AI 3 ระดับที่แตกต่างกัน
- การป้องกันความล้มเหลวของเครือข่ายและระบบ
- สนทนากับเพื่อนของคุณภายในเกม
รายงานโครงการ
รายงานโครงการ PDF
วิดีโอของเมนู
วีดีโอของเกม
วิธีเล่นเกม:
You can either start a new server by clicking the Start Server button or join to an already existing server by clicking the Join Button.
If you click on the Join Server button instead, the address that you want to join into will be asked. So, if the game is played between different computers, their IP addresses should be known.
Regardless of whether you create a new game or join to an already established game, in the server screen two options are displayed: Start Game and Quit Server.
The game starts after the Start Game button is clicked. The board is displayed on the left side of the screen. In the middle part, we have the Button Panel.
- Roll Button is used to roll dice and move the player. Buy Property button is used to buy an unowned property. The button becomes unpressable if the square that the player on is not a property square or if the property square is already owned.
- Draw Card button is below the Buy Property button, it is used to draw an action card, such as a Community Chest Card or a Chance Card.
- Improve Property button is used to upgrade a property. Above the button panel, we have Dice Panel.
Player panel is on the right side of the Button Panel. The name of the players are displayed as buttons on a scrollable panel. When the names of the players are clicked, several information about them are displayed such as the Player name, Money, Owned properties and Owned utilities.
Lastly, on the bottom left part of the game window screen, there is a Message Box Panel. When new messages are added, they are first fitted into the message box screen and after a certain number of messages, the messages are displayed in a scrollable panel.
คลาสที่ทดสอบแล้ว:
- GameEngine
- PlayerController
- MoneyController
- PropertySquare
- Square (Various Square types such as Go to Jail, Go, Bonus, Reverse Direction, Roll 3, and Luxury Tax.)
บันทึกการเปลี่ยนแปลง[18.11.2018]:
- มีการเปลี่ยนแปลงวิธีการหลายอย่างของอินเทอร์เฟซ Observer และมีการเพิ่มวิธีการหลายวิธีในคลาส GameEngine และ UI เพื่อสมัครสมาชิก เผยแพร่ และดำเนินกิจกรรมอย่างถูกต้อง ตัวอย่างเช่น DiceDisplay และ PlayerPanel สมัครรับ GameEngine และ GameEngine กำลังเผยแพร่ โดยวิธี publisEvent(message) และวิธีการ onEvent(message) ของผู้สังเกตการณ์ทั้งหมดกำลังถูกเรียก จากนั้นผู้สังเกตการณ์กำลังทำอะไรบางอย่างหรือไม่เป็นไปตามข้อความภายในวิธี publishEvent
- ตัวสร้างของคลาสต่างๆ ได้รับการแก้ไข ขึ้นอยู่กับความต้องการของพวกเขา นอกจากนี้ PropertySquare ยังมีรายการการเช่า เช่น การเช่าโดยไม่ต้องสร้างอะไรเลย หรือค่าเช่าทรัพย์สินในกรณีที่มีการสร้างบ้านหนึ่งหลัง เป็นต้น นอกจากนี้เรายังเพิ่มดัชนีค่าเช่าใน PropertySquare เพื่อแสดงว่าค่าเช่าใดที่เป็นค่าเช่าปัจจุบันในค่าเช่าปัจจุบัน รายการ.
- มีการเพิ่มคลาส ServerInfo เพื่อรักษาการเชื่อมต่อระหว่างคอมพิวเตอร์หลายเครื่อง
- นอกจากนี้เรายังสร้างคลาส Board ใน UI เป็น Thread โดยใช้อินเทอร์เฟซ Runnable เนื่องจากการเคลื่อนไหวและภาพเคลื่อนไหวของสัญลักษณ์เกิดขึ้นบนกระดานใน UI และภาพเคลื่อนไหวทำได้โดยใช้วิธี Thread.sleep
- ประเมิน Square(diceValue, speedDieValue, ผู้เล่น) ได้ถูกเปลี่ยนเป็น allowanceSquare(gameEngine) เนื่องจากเราต้องการให้ GameEngine เผยแพร่กิจกรรมต่างๆ ขึ้นอยู่กับว่าสแควร์ใดที่ผู้เล่นปัจจุบันเปิดอยู่
- buyProperty(propertySquare, player) ถูกเปลี่ยนเป็น buy() เนื่องจากจำเป็นต้องมีความยืดหยุ่นในการเลือกประเภทของสแควร์ที่จะซื้อ (Utility Square หรือ Property Square) และมีเพียงผู้เล่นปัจจุบันเท่านั้นที่สามารถซื้อบางสิ่งบางอย่างได้
- วิธีการ hasEnoughMoney(ผู้เล่น, จำนวน) ได้ถูกโอนไปยังคลาส MoneyController แล้ว
ไดอะแกรมลำดับที่นำไปใช้:
- แผนภาพลำดับที่ 1: ย้ายจากจัตุรัสปัจจุบันไปยังจัตุรัสปลายทาง
- แผนภาพลำดับที่ 4: ซื้ออสังหาริมทรัพย์
- แผนภาพลำดับที่ 5: จ่ายค่าเช่า
- แผนภาพลำดับที่ 6: เซิร์ฟเวอร์เริ่มต้น ชื่อวิธีการและชื่อคลาสซึ่งรวมถึงวิธีการเหล่านั้นที่เขียนในไดอะแกรมจะเหมือนกับชื่อในโค้ดยกเว้นจากการเปลี่ยนแปลงเล็กน้อยที่อธิบายไว้ข้างต้น
แผนผังชั้นเรียน:
- ทุกคลาสที่รวมอยู่ในแผนภาพคลาส ยกเว้น BotBehavior จะถูกนำไปใช้โดยมีการเปลี่ยนแปลงเล็กน้อยตามที่ระบุไว้ข้างต้นและด้วย
- คลาส ServerProtocol จะไม่ถูกลบเนื่องจากไม่จำเป็น
- เพิ่มคลาส ServerInfo เพื่อจัดเก็บจำนวนไคลเอนต์ที่เชื่อมต่อและ IP ของพวกเขา
- ตัวแปรที่ถูกเพิ่มในคลาส Player เพื่อตรวจสอบว่ามาจากไคลเอนต์ใด
เครดิต
นี่เป็นโครงการจาก Comp 302: หลักสูตรวิศวกรรมศาสตร์ของ Koç University ซึ่งสอนโดย Prof. Atilla Gürsoy
หลักจรรยาบรรณ
นักศึกษามหาวิทยาลัย Koç ที่กำลังเรียนหลักสูตรนี้ โปรดดูจรรยาบรรณ