Mohamad Rejeb builds a chess game using Kotlin Multiplatform, demonstrating object-oriented design, functional programming, and classic design patterns.
Part 1 of Kotlin Design Patterns & Best Practices series.
What this series is about?:
- In this series we are going to see how we can use different design patterns and best practices in real life projects.
What are going to build?:
- In this part 1 we are going to build a chess game. The chess game rules are a really good example to use different design patterns and best practices and improve your thinking.
What are going to use?:
- OOP (Inheritance…)
- Functional programming
- TDD (Only for a single piece)
- Factory method design pattern
- Builder design pattern
- DSLs
- …
Project Source Code:
github.com/MohamedRejeb/ChessGameKmp
Figma assets:
figma.com/community/file/971870797656870866
My social Links:
Github:
github.com/MohamedRejeb
LinkedIn:
linkedin.com/in/MohamedRejeb/
Twitter:
twitter.com/MohamadRejeb
- Intro
- Create a new kmp project
- Create Piece Interface
- Create Pawn Piece Class
- Implement Pawn Moves Logic
- Implement a generic Piece Moves Logic
- Test Pawn Moves Logic
- Build a DSL for Moves Logic
- Create Rook Piece Class
- Create Bishop Piece Class
- Create Queen Piece Class
- Create King Piece Class
- Create Knight Piece Class
- Create Board Class for the game logic
- Build The Game UI
- Encode/Decode Game State
- Test The Final Result
- Outro
Why it's here
1 person recommends this
What people say. Recommended as a practical, hands-on project for learning Kotlin design patterns and best practices.
m
u/mohamedbenrjebin r/Kotlin • Recommends
Kotlin Design Patterns & Best Practices - Part 1: Build a Chess Game
The first video of Kotlin Design Patterns & Best Practices series is Published 🚀
In this video we are going to build a chess game using KMP, we will use:
✅ OOP (Inheritance…)
✅ Functional programming
✅ TDD (Only for a single piece)
✅ Factory method design pattern
✅ Builder design pattern
✅ DSLs
Video Link: [video
https://preview.redd.it/1gj7b8tjt0ed1.png?width=1280&format=png&auto=webp&s=3d00503a8f8bf60f9db53387589264b0c93a833a