Enozom Internship The Project - Group D - 2023
Snake and Ladder As a team of 4-6 interns, your task is to design and develop a multiplayer Snake and Ladder game using Node.js for the backend and React.js for thc frontend. The game should meet the following functional and technical
- User Registration and Login: Implement a user registration and login system that allows players to create an account and retrieve their game progress at any time. Registration will include only a username and password.
- Game Creation and Joining: Enable players to create a new game and wait for other players to join. Once the required number of players is reached, the game should automatically start.
- Graphical User Interface: Develop a visually appealing graphical user interface that presents the game board, players, dice, snakes, and ladders. Consider adding animations for dice rolls and player moves to enhance the user experience.
- Board Image Embedding: Embed the game board as a background image to avoid drawing it at runtime.
- Canvas Implementation: Use canvas to draw the game board, players, dice, snakes, and ladders dynamically on the frontend.
- MySQL Database Integration: Save game information, player moves, game state, and player data in a MySQL database for persistent storage and retrieval.
- Socket.io Integration: Utilize socket.io to establish real-time communication between the server and players' front-end. This will allow for seamless updates and synchronization of game state during gameplay.
Please ensure proper collaboration and division of tasks among team members, considering their strengths and expertise in both backend (Node.js) and frontend (React.js) development. Regularly communicate and coordinate with each other to ensure a cohesive and successful implementation of the multiplayer Snake and Ladder game. Use GitHub or Bitbucket to share the code across the team members.
- User
- Methods:
register(username: string, password: string): void
login(username: string, password: string): User
- Methods:
- Game
- Methods:
createGame(creator: User): Game
joinGame(game: Game, user: User): void
startGame(game: Game): void
getPlayers(game: Game): Player[]
endGame(game: Game): void
getGameStatus(game: Game): string
- Methods:
- Player
- Methods:
movePlayer(player: Player, rollValue: int): void
getCurrentPosition(player: Player): int
- Methods:
- Node.js
- React.js
- Express
- MySQL
- MySQL Workbench
- Sequelize
- Socket.io
- Morgan
- Bcrypt
- JWT
- multer
- nodemon
- Faker
[ Kirollos Atef - Hazem Hamed - Mario Wilson - Mohamed Elemam - Esraa Dwidar ]