Ultimatives Monopoly von NullPointer
Dieses Projekt wird entwickelt von
- Berkay Barlas (Teamleiter)
- Baran Berkay Hökelek
- Furkan Sahbaz
- Tumay Özdemir
- Alihan Zorlu
Hauptmerkmale
- Mehrspielermodus über dasselbe Netzwerk für bis zu 12 Spieler
- Spielstatus speichern/laden
- Bot-Spieler mit 3 verschiedenen KI-Stufen
- Schutz vor Netzwerk- und Systemausfällen
- Chatten Sie mit Ihren Freunden im Spiel
Projektbericht
Projektbericht PDF
Video des Menüs
Video des Spiels
So wird das Spiel gespielt:
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.
Getestete Klassen:
- GameEngine
- PlayerController
- MoneyController
- PropertySquare
- Square (Various Square types such as Go to Jail, Go, Bonus, Reverse Direction, Roll 3, and Luxury Tax.)
Änderungsprotokoll[18.11.2018]:
- An den Methoden der Observer-Schnittstelle wurden mehrere Änderungen vorgenommen und den GameEngine- und UI-Klassen wurden mehrere Methoden hinzugefügt, um Ereignisse korrekt zu abonnieren, zu veröffentlichen und auszuführen. Beispielsweise haben DiceDisplay und PlayerPanel GameEngine abonniert und GameEngine veröffentlicht Wenn die publisEvent(message)-Methode aufgerufen wird und alle onEvent(message)-Methoden aller Beobachter aufgerufen werden, dann tun die Beobachter etwas oder nicht, je nach der Nachricht in der PublishEvent-Methode.
- Konstruktoren verschiedener Klassen wurden je nach Bedarf geändert. Darüber hinaus verfügt PropertySquare jetzt über eine Liste der Mieten, z. B. die Miete ohne Bauarbeiten oder die Miete der Immobilie, falls nur ein Haus gebaut wurde usw. Wir haben PropertySquare auch einen RentIndex hinzugefügt, um anzuzeigen, welche Miete jetzt die aktuelle Miete in der Miete ist Liste.
- Um die Verbindung zwischen mehreren Computern aufrechtzuerhalten, wurde eine ServerInfo-Klasse hinzugefügt.
- Wir haben auch die Board-Klasse in der Benutzeroberfläche als Thread erstellt, indem wir die Runnable-Schnittstelle implementiert haben, da die Bewegung und Animation der Bauern auf dem Board in der Benutzeroberfläche stattfindet und die Animation mithilfe der Thread.sleep-Methode erfolgt.
- „evalueSquare(diceValue, speedDieValue, player)“ wurde in „evalueSquare(gameEngine)“ geändert, da wir GameEngine benötigen, um verschiedene Ereignisse zu veröffentlichen, je nachdem, auf welchem Feld sich der aktuelle Spieler befindet.
- buyProperty(propertySquare, player) wurde in buy() geändert, da eine gewisse Flexibilität hinsichtlich der Art des zu kaufenden Quadrats (Utility Square oder Property Square) erforderlich ist. Außerdem kann nur der aktuelle Spieler etwas kaufen
- Die Methode hasEnoughMoney(player, amount) wurde in die Klasse MoneyController übertragen.
Implementierte Sequenzdiagramme:
- Sequenzdiagramm 1: Bewegen Sie sich vom aktuellen Feld zum Zielfeld.
- Sequenzdiagramm 4: Immobilie kaufen
- Sequenzdiagramm 5: Miete zahlen
- Sequenzdiagramm 6: Server starten Die Methodennamen und Klassennamen, die die in den Diagrammen geschriebenen Methoden enthalten, sind bis auf die oben erläuterten kleinen Änderungen mit denen im Code identisch.
Klassendiagramm:
- Jede im Klassendiagramm enthaltene Klasse mit Ausnahme von BotBehavior wird mit kleinen Änderungen implementiert, die oben und auch angegeben sind
- Die ServerProtocol- Klasse wird nicht gelöscht, da sie nicht benötigt wird.
- Die ServerInfo- Klasse wird hinzugefügt, um die Anzahl der verbundenen Clients und deren IPs zu speichern.
- Eine der Player-Klasse hinzugefügte Variable, um zu überprüfen, von welchem Client sie stammt.
Kredit
Dies ist ein Projekt aus Comp 302: Ingenieurkurs der Koç-Universität unter der Leitung von Prof. Atilla Gürsoy.
Verhaltenskodex
Für Studierende der Koç-Universität, die derzeit diesen Kurs belegen, siehe Verhaltenskodex.