- Use Java 11.
- You can run the ServerGame.
- You can run the ClientGame specifying '-h' for HumanPlayer or '-ai' for ComputerPlayer.
- Then follow the instructions on the client terminals to set the connection.
- Adding player can be done by changing the constant PLAYER_COUNT in ServerGame.
- Changing the port can be done in the same place.
- You can change the hand size, defuse count in the deck and the delay before a NOPE can be played in Game.
- If you want feedback from networking messages, you can add logging in Handler.
- All server networking handling is in the part server.
- All client networking handling is in the part client.
- All the game logic is in logic.
- The player is used for both client and server but the ClientPlayer is specifically is for the client side.
- Both HumanPlayer and ComputerPlayer are extensions of ClientPlayer.
- The protocol package contains all the utils for networking.
- The game implements the cards ATTACK, SKIP, FAVOR, SHUFFLE, SEE_THE_FUTURE, NOPE, DEFUSE, and EXPLODING_KITTEN.
- The cat cards don't do anything.
- ATTACK cards can be stacked.
- You can skip any draw actions.
- Cards like FAVOR, SHUFFLE, and SEE_THE_FUTURE can only be noped in a given set of time after being placed.
- NOPE can be noped becoming a yes, meaning the card will be executed again.
- The player has a choice on where to place the defused kitten in the deck.
- The player can choose who the favor is from.
- A player can play the DEFUSE card preemptively.
- Players can chat at anytime by adding '!' before any inputs.
none implemented have fun