This project was developed for the "Web Tecnologies" course and aims to develop a web application in all its aspects. In this project I'm developing a web version of the game Nine Men's Morris, both with a local and online version. First Semester of the Third Year of the Bachelor's Degree in Artificial Intelligence and Data Science.
This project is divided into three distinct parts, each of which complements the other, as in reality it is as if it were a single project that was developed little by little.
In the first delivery the goal was to have a single page application that was divided into different areas for the following purposes:
- Logo
- Settings
- Commands
- Identification
- Board
- Instructions
- Classifications
- Messages
- AI
Note that these areas do not need to be visible at all times, and that some may temporarily overlap with others.
Settings: In the settings you can define:
- Board size;
- Play against the computer or another player;
- First player to play;
- Level of artificial intelligence;
AI: It is possible to play against different levels of AI, being that:
- Easy Mode: Performs random moves;
- Intermediate Mode: Prioritizes making mills when possible;
- Hard Mode: Blocks the opponent from making windmills and prioritizes making mills;
The goal of the second deliver is to make the game distributed, allowing players to participate on different computers.
At this stage we simply adapted the code so that it would be possible to use the server provided by the teacher, and it is possible to perform the following actions:
- register: register a player with nickname and password
- join: joins two players who want to play a game with a certain board size. If there is a player waiting for a game with the same characteristics then they are matched immediately. Otherwise, the player is registered for later pairing.
- leave: Function called to leave the game. If it is summoned during pairing, while waiting for other players, then it has no consequences. If the game is already underway, exiting using this method grants victory to the opponent.
- notify: This function notifies the server about a move.
- update: Gives players updates on changes made to the server
- ranking: Returns a ranking table with a maximum of 10 players, ranked in descending order of the number of victories.
The objective of the third delivery is the development of the game server in Node, without frameworks, replicating and replacing the server used in the second delivery.
Although I can't use frameworks, I decided to create a server using frameworks that are in the "Server" folder.
All deliveries have the following contents:
- game.js ➡️The code with the game and buttons;
- index.html ➡️ Html file;
- style.css ➡️ Style the website page;
Regarding the server:
- controllers ➡️ Folder with files for each of the server 'actions';
- data ➡️ Files were server info is saved such as players and their passwords, games status...;
- utils ➡️ Files with utilities that can be used on multiple files like encrypt;
This course is part of the first semester of the third year of the Bachelor's Degree in Artificial Intelligence and Data Science at FCUP and FEUP in the academic year 2024/2025. You can find more information about this course at the following link: