Monopólio Final por NullPointer
Este projeto é desenvolvido por
- Berkay Barlas (líder da equipe)
- Baran Berkay Hökelek
- Furkan Sahbaz
- Tumay Ozdemir
- Alihan Zorlu
Principais recursos
- Multijogador na mesma rede até 12 jogadores
- Salvar/carregar estado do jogo
- Jogadores Bot com 3 níveis diferentes de IA
- Proteção contra falhas de rede e sistema
- Converse com seus amigos dentro do jogo
Relatório do Projeto
PDF do relatório do projeto
Vídeo do cardápio
Vídeo do jogo
Como jogar:
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.
Aulas testadas:
- GameEngine
- PlayerController
- MoneyController
- PropertySquare
- Square (Various Square types such as Go to Jail, Go, Bonus, Reverse Direction, Roll 3, and Luxury Tax.)
Registro de alterações[18.11.2018]:
- Várias alterações nos métodos da interface Observer foram feitas e vários métodos foram adicionados às classes GameEngine e UI para assinar, publicar e executar eventos corretamente. Por exemplo, DiceDisplay e PlayerPanel assinaram GameEngine, e GameEngine está publicando pelo método publisEvent(message) e todos os métodos onEvent(message) dos observadores estão sendo chamados, então os observadores estão fazendo algo ou não de acordo com a mensagem dentro do métodopublisEvent.
- Construtores de diversas classes foram modificados, dependendo de suas necessidades. Além disso, o PropertySquare agora possui uma lista de aluguéis, como aluguel sem construção ou aluguel do imóvel no caso de haver uma casa construída, etc. Adicionamos também um rentIndex ao PropertySquare para mostrar qual aluguel agora é o aluguel atual no aluguel lista.
- Uma classe ServerInfo foi adicionada para manter a conexão entre vários computadores.
- Também criamos a classe Board na UI como um Thread implementando a interface Runnable porque o movimento e a animação dos peões ocorrem no Board na UI e a animação é feita usando o método Thread.sleep.
- avaliaSquare(diceValue, speedDieValue, player) foi alterado para avaliarSquare(gameEngine) , pois precisamos que o GameEngine publique vários eventos, dependendo de qual quadrado o jogador atual está.
- buyProperty(propertySquare, player) foi alterado para buy() , pois é necessário haver alguma flexibilidade quanto ao tipo de quadrado que será comprado (Utility Square ou Property Square).E apenas o jogador atual pode comprar algo.
- O método hasEnoughMoney(player, amount) foi transferido para a classe MoneyController.
Diagramas de sequência implementados:
- Diagrama de sequência 1: Mover do quadrado atual para o quadrado de destino.
- Diagrama de Sequência 4: Comprar Propriedade
- Diagrama de Sequência 5: Pagar Aluguel
- Diagrama de Sequência 6: Iniciar Servidor Os nomes dos métodos e nomes das classes que incluem os métodos escritos nos diagramas são os mesmos do código, exceto por pequenas alterações explicadas acima.
Diagrama de Classe:
- Cada classe incluída no diagrama de classes, exceto BotBehavior, é implementada com pequenas alterações especificadas acima e também
- A classe ServerProtocol não foi excluída porque não é necessária.
- A classe ServerInfo é adicionada para armazenar o número de clientes conectados e seus IPs.
- Uma variável adicionada à classe Player para verificar de qual cliente ela é.
Crédito
Este é um projeto do Comp 302: Curso de Engenharia da Universidade Koç ministrado pelo Prof. Atilla Gürsoy.
Código de Conduta
Alunos da Universidade Koç que estão atualmente cursando este curso, consulte Código de Conduta.