Rubamazzo

   page       attach   
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