abstract
Project Goal
The project aims to develop a distributed version of the card game "Rubamazzo," implemented as a command-line application using a client-server architecture. The rules are available at the following link: https://it.wikipedia.org/wiki/Rubamazzetto. The goal is to apply concepts of distributed systems, ensuring efficient management of communication and data exchange between client and server, all while utilizing the Scala programming language.
Project Description
- Gameplay:
- The game will follow the traditional rules of "Rubamazzo."
- The focus will be on the multiplayer experience, allowing multiple players to join the same game.
- Architecture:
- Server: Responsible for game logic, managing game state, and handling player turns.
- Client: A command-line interface to interact with the server, send moves, and view the game state.
- Communication:
- The HTTP protocol will be used with REST APIs for all client-server interactions.
- Endpoints will include functionalities to join a game, make a move, check the game state, and calculate the final score.
- Technologies Used:
- Scala: The primary language to implement both the client and the server.
- Akka HTTP: For creating REST endpoints on the server.
- cURL or Scala scripts: To send requests to the server from the client.
- Turn Management:
- The server will strictly enforce turn management and return errors for invalid actions.
- Updates to the game state will be accessible through periodic HTTP requests.
outcomes