https://github.com/joshiraez/tetriscsharp
Tetris built with an emphasis in layering and IoC
https://github.com/joshiraez/tetriscsharp
csharp engine game tetris
Last synced: over 1 year ago
JSON representation
Tetris built with an emphasis in layering and IoC
- Host: GitHub
- URL: https://github.com/joshiraez/tetriscsharp
- Owner: joshiraez
- Created: 2017-08-04T17:27:14.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-08-26T14:21:27.000Z (almost 9 years ago)
- Last Synced: 2025-01-13T03:12:10.269Z (over 1 year ago)
- Topics: csharp, engine, game, tetris
- Language: C#
- Homepage: http://joseraez.com
- Size: 41 KB
- Stars: 3
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: ReadMe.txt
Awesome Lists containing this project
README
╔═╦═╦═╗
╚═╬═╬═╝
╚═╝etris for C#
Hi! Welcome to this Tetris project in C#
Quick Note! The game is finished!!! Still, there is room for improvement or to make different versions of the layers, implementing other rotations like Sega-type, etc.
You can play the Core Release from here: https://drive.google.com/file/d/0B0EhlrdkYNutRzJmSFNrc3c3SVU/view?usp=sharing (google drive link)
1) Aim
The aim of this project is to show how a basic game engine works and how can you divide it's behaviour in different layers.
Although this pertains to game engines, most of the data processing, data visualizing and layering can be extrapolated to other schemas like MVC.
2) Strategy
In the most basic scenario, a game is a serie of decisions which affect the game status.
Although this can vary greatly, for the sake of simplicity we are gonna do this tetris in a discrete, step-based game.
Finally, we have to show the information to the user in a correct way so he can choose their next actions.
INPUT ---\ GAME LOGIC ---\ GAME STATUS ---\ "RENDERING" ---\ OUTPUT
(decision) ---/ (processing) ---/ (result) ---/ (translation) ---/ (presentation)
*I use the term rendering because is just like when a PC translates 3D Models (mostly points and vectors) to real images in pixels and colors.
It's just the translation from a machine state to something understandable for the user
These will be the layers we will aim to implement.
3) Evaluation
The next points are used to evaluate the design decisions during development
- Program must work.
- Each layer must be interchangeable. This means that they should suffice as components for other games with the same requeriments.
- Try to avoid overengineering.
- Game must be discrete, single thread.
- Any good practices in OOP (like SOLID design)
4) Contact info
joseraezrodriguez@gmail.com
joseraez.com
@joshiraez
Feel free to branch and contribute with anything :), ideas are: different controllers, different renders, an UI interface, or just improving the code.