Monopole ultime par NullPointer
Ce projet est développé par
- Berkay Barlas (chef d'équipe)
- Baran Berkay Hökelek
- Furkan Sahbaz
- Tumay Özdemir
- Alihan Zorlu
Principales caractéristiques
- Multijoueur sur le même réseau jusqu'à 12 joueurs
- Enregistrer/charger l'état du jeu
- Joueurs de robots avec 3 niveaux d'IA différents
- Protection contre les pannes de réseau et de système
- Discutez avec vos amis dans le jeu
Rapport de projet
Rapport de projet PDF
Vidéo du menu
Vidéo du jeu
Comment jouer au jeu :
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.
Cours testés :
- GameEngine
- PlayerController
- MoneyController
- PropertySquare
- Square (Various Square types such as Go to Jail, Go, Bonus, Reverse Direction, Roll 3, and Luxury Tax.)
Journal des modifications[18.11.2018] :
- Plusieurs modifications ont été apportées aux méthodes de l'interface Observer et plusieurs méthodes ont été ajoutées aux classes GameEngine et UI afin de s'abonner, de publier et d'exécuter correctement des événements. Par exemple, DiceDisplay et PlayerPanel se sont abonnés à GameEngine, et GameEngine publie par la méthode publisEvent(message) et que les méthodes onEvent(message) de tous les observateurs sont appelées, alors les observateurs font quelque chose ou non selon le message contenu dans la méthode submitEvent.
- Les constructeurs de différentes classes ont été modifiés en fonction de leurs besoins. De plus, PropertySquare a maintenant une liste de loyers tels que le loyer sans rien construire ou le loyer de la propriété dans le cas où il y a une maison construite, etc. Nous avons également ajouté un rentIndex à PropertySquare pour montrer quel loyer est actuellement le loyer actuel dans le loyer. liste.
- Une classe ServerInfo a été ajoutée afin de maintenir la connexion entre plusieurs ordinateurs.
- Nous avons également créé la classe Board dans l'interface utilisateur en tant que Thread en implémentant l'interface Runnable, car le mouvement et l'animation des pions ont lieu sur le Board dans l'interface utilisateur et l'animation est effectuée à l'aide de la méthode Thread.sleep.
- reviewSquare(diceValue, speedDieValue, player) a été remplacé par reviewSquare(gameEngine) , car nous avons besoin de GameEngine pour publier divers événements, en fonction de la case sur laquelle se trouve le joueur actuel.
- buyProperty(propertySquare, player) a été remplacé par buy() , car il doit y avoir une certaine flexibilité quant au type de carré qui sera acheté (Utility Square ou Property Square). Et, seul le joueur actuel peut acheter quelque chose.
- La méthode hasEnoughMoney(player, montant) a été transférée vers la classe MoneyController.
Diagrammes de séquence implémentés :
- Diagramme de séquence 1 : Déplacez-vous de la case actuelle à la case de destination.
- Diagramme de séquence 4 : Acheter une propriété
- Diagramme de séquence 5 : Payer le loyer
- Diagramme de séquence 6 : Démarrer le serveur Les noms de méthodes et les noms de classes qui incluent les méthodes écrites dans les diagrammes sont les mêmes que ceux du code, à l'exception des petites modifications expliquées ci-dessus.
Diagramme de classes :
- Chaque classe incluse dans le diagramme de classes, à l'exception de BotBehavior, est implémentée avec de petites modifications spécifiées ci-dessus et également
- La classe ServerProtocol n'est pas supprimée car elle n'est pas nécessaire.
- La classe ServerInfo est ajoutée pour stocker le nombre de clients connectés et leurs adresses IP.
- Une variable ajoutée à la classe Player afin de vérifier de quel client elle provient.
Crédit
Il s'agit d'un projet du Comp 302 : cours d'ingénierie de l'Université de Koç dirigé par le professeur Atilla Gürsoy.
Code de conduite
Pour les étudiants de l'Université de Koç qui suivent actuellement ce cours, voir le Code de conduite.