This project is a digital implementation of the board game ”Codex Naturalis”.
You can find the official rules here:
| Requirement | Status | Description |
|---|---|---|
| Complete Ruleset | ✅ | Implements all rules of the base game. |
| Model | ✅ | Core game logic and state representation. |
| Controller | ✅ | Manages game flow and user interactions. |
| RMI | ✅ | Network communication via Java RMI. |
| Socket | ✅ | Network communication via Sockets. |
| TUI | ✅ | Text-based User Interface for gameplay. |
| GUI | ✅ | Graphical User Interface using JavaFX. |
| Requirement | Status | Description |
|---|---|---|
| Persistence | ✅ | Game state can be saved and potentially loaded. |
| Resilience | ✅ | Handles client disconnections and reconnections. |
| Chat | ✅ | In-game chat functionality between players. |
| Multiple Games | ❌ | Server currently supports only one game instance. |
| Requirement | Status | Description |
|---|---|---|
| UML Diagrams | ✅ | Class and Sequence diagrams provided in /UML. |
| Javadoc | ✅ | Code documentation generated in /javadoc. |
| Peer Review | ✅ | Peer review documents available in /Peer Review. |
/src: Contains the Java source code (main) and tests (test)./javadoc: Contains the generated Javadoc API documentation./UML: Contains UML diagrams (Class and Sequence)./Peer Review: Contains peer review documents./target: Contains compiled code and the packaged JAR file (after build).pom.xml: Maven project configuration file.mvnw/mvnw.cmd: Maven wrapper scripts.README.md: This file.
- Java Development Kit (JDK) 21 or later.
This project uses the Maven wrapper, so you don’t need a separate Maven installation.
-
Clone the repository:
git clone <repository-url> cd IS24-AM11
-
Package the application:
-
On Linux/macOS:
./mvnw clean package
-
On Windows:
.\mvnw.cmd clean package
This command compiles the code, runs tests, and creates a runnable JAR file (
target/AM11-1.0-ALPHA.jar) with all dependencies included. -
The application can be run in server mode or client mode.
Run as Server:
java -jar target/AM11-1.0-ALPHA.jar server [-rmi <rmi_port>] [-socket <socket_port>]- Replace
<rmi_port>and<socket_port>with desired port numbers (defaults will be used if omitted).
Run as Client:
java -jar target/AM11-1.0-ALPHA.jar client [-ui <tui|gui>] [-host <server_host>] [-rmi <rmi_port>] [-socket <socket_port>]-ui: Choose the interface (tuiorgui, defaults toguiif omitted).-host: Specify the server’s hostname or IP address (defaults to localhost).-rmi/-socket: Specify the ports the server is listening on (if different from defaults).
- Language: Java 21
- Build Tool: Maven
- Networking: Java RMI, Sockets
- GUI: JavaFX
- Database: SQLite (for persistence)
- Testing: JUnit 5, Mockito
- Logging: SLF4j with Logback
This project is licensed under the GNU General Public License v2.0. See the LICENSE file for details.