Monopolio definitivo de NullPointer
Este proyecto es desarrollado por
- Berkay Barlas (líder del equipo)
- Baran Berkay Hökelek
- Furkan Sahbaz
- Tumay Özdemir
- Alihan Zorlu
Características principales
- Multijugador en la misma red hasta 12 jugadores
- Guardar/Cargar estado del juego
- Jugadores Bot con 3 niveles diferentes de IA.
- Protección contra fallas del sistema y la red
- Chatea con tus amigos dentro del juego.
Informe del proyecto
Informe del proyecto PDF
Vídeo del Menú
Vídeo del juego
Cómo jugar el juego:
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.
Clases probadas:
- GameEngine
- PlayerController
- MoneyController
- PropertySquare
- Square (Various Square types such as Go to Jail, Go, Bonus, Reverse Direction, Roll 3, and Luxury Tax.)
Registro de cambios[18.11.2018]:
- Se han realizado varios cambios en los métodos de la interfaz Observer y se han agregado varios métodos a las clases GameEngine y UI para suscribir, publicar y realizar eventos correctamente. Por ejemplo, DiceDisplay y PlayerPanel se suscribieron a GameEngine, y GameEngine está publicando. por el método publisEvent (mensaje) y se llaman todos los métodos onEvent (mensaje) de los observadores, entonces los observadores están haciendo algo o no de acuerdo con el mensaje dentro del método PublisEvent.
- Se han modificado constructores de varias clases, según sus necesidades. Además, PropertySquare ahora tiene una lista de alquileres, como alquileres sin construir nada o alquileres de la propiedad en el caso de que haya una casa construida, etc. También agregamos un rentIndex a PropertySquare para mostrar qué alquiler ahora es el alquiler actual en el alquiler. lista.
- Se ha agregado una clase ServerInfo para mantener la conexión entre varias computadoras.
- También creamos la clase Board en la interfaz de usuario como un subproceso implementando la interfaz Runnable porque el movimiento y la animación de los peones tienen lugar en el tablero en la interfaz de usuario y la animación se realiza mediante el método Thread.sleep.
- evaluaSquare(diceValue, speedDieValue, player) se ha cambiado a evaluaSquare(gameEngine) , ya que necesitamos que GameEngine publique varios eventos, dependiendo de en qué casilla se encuentre el jugador actual.
- buyProperty(propertySquare, player) se ha cambiado a buy() , ya que debe haber cierta flexibilidad en cuanto a qué tipo de cuadrado se comprará (Utility Square o Property Square). Y solo el jugador actual puede comprar algo.
- El método hasEnoughMoney(jugador, cantidad) se ha transferido a la clase MoneyController.
Diagramas de secuencia implementados:
- Diagrama de secuencia 1: pasar del cuadrado actual al cuadrado de destino.
- Diagrama de secuencia 4: Comprar propiedad
- Diagrama de secuencia 5: Pagar el alquiler
- Diagrama de secuencia 6: Iniciar servidor Los nombres de los métodos y los nombres de las clases que incluyen los métodos escritos en los diagramas son los mismos que los del código, excepto por los pequeños cambios explicados anteriormente.
Diagrama de clases:
- Todas las clases incluidas en el diagrama de clases, excepto BotBehavior, se implementan con pequeños cambios que se especifican anteriormente y también
- La clase ServerProtocol no se elimina porque no es necesaria.
- La clase ServerInfo se agrega para almacenar la cantidad de clientes conectados y sus IP.
- Una variable agregada a la clase Player para verificar de qué cliente proviene.
Crédito
Este es un proyecto del Comp 302: curso de ingeniería de la Universidad de Koç impartido por el Prof. Atilla Gürsoy.
Código de conducta
Los estudiantes de la Universidad de Koç que actualmente están tomando este curso, consulte el Código de conducta.