feat: improve and update README
This commit is contained in:
36
LICENSE
36
LICENSE
@@ -1,21 +1,23 @@
|
||||
MIT License
|
||||
FUTO Source Available License 1.0
|
||||
|
||||
Copyright (c) 2021 Giovani Rodriguez
|
||||
Copyright (c) [2025] Giovani Rodriguez
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to use, copy, modify, and run the Software for any non-commercial purpose, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
1. **Source Availability**: The Software is provided with its source code.
|
||||
|
||||
2. **Non-Commercial Use Only**: You may use, copy, modify, and run this Software for personal, educational, research, or internal business operations. Use of the Software, in whole or in part, for any commercial purpose is not permitted under this license. Commercial use includes, but is not limited to:
|
||||
- Selling or offering to sell the Software or derivative works
|
||||
- Using the Software to provide paid services to third parties
|
||||
- Including the Software in any product or service that is sold or offered for sale
|
||||
|
||||
3. **Derivative Works**: You may create derivative works of the Software and distribute them under this same license, with proper attribution to the original authors.
|
||||
|
||||
4. **No Trademark Rights**: This license does not grant you rights to use the names, logos, or trademarks of the copyright holder or contributors.
|
||||
|
||||
5. **Disclaimer of Warranty**: THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
|
||||
6. **Limitation of Liability**: IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For commercial licensing, please contact the copyright holder.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
145
README.md
145
README.md
@@ -1,84 +1,129 @@
|
||||
<h1 align="center">
|
||||
<img width="320" height="288" src="https://gitea.redturtle.foo/crayonix/tetri5/raw/branch/main/data/image/title_screen.png?raw=true">
|
||||
<br>
|
||||
<img width="320" height="288" src="https://gitea.redturtle.foo/crayonix/tetri5/raw/branch/main/data/image/title_screen.png?raw=true" alt="Tetri5 Title Screen">
|
||||
</h1>
|
||||
|
||||
<h4 align="center">A full featured game of falling shapes using python's <a href="https://www.pygame.org/wiki/about" target="_blank">pygame</a> library.</h4>
|
||||
<h4 align="center">A modern, full-featured falling blocks game built with Python and the <a href="https://www.pygame.org/wiki/about" target="_blank">Pygame</a> library.</h4>
|
||||
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<p align="center">
|
||||
<a href="#key-features">Key Features</a> •
|
||||
<a href="#how-to-play">How To Play</a> •
|
||||
<a href="#download">Download</a> •
|
||||
<!-- <a href="#credits">Credits</a> • -->
|
||||
<a href="#how-to-play">How to Play</a> •
|
||||
<a href="#installation">Installation</a> •
|
||||
<a href="#docker-support">Docker Support</a> •
|
||||
<a href="#contributing">Contributing</a> •
|
||||
<a href="#license">License</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://i.imgur.com/7QbL08C.gif" alt="tetri5 demo">
|
||||
<img src="https://gitea.redturtle.foo/crayonix/tetri5/raw/branch/main/gameplay.gif?raw=true" alt="Tetri5 Gameplay Demo">
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## Key Features
|
||||
|
||||
##### Single Player Mode
|
||||
Play a game against yourself where the goal is to accumalate as many points as you can! As you complete more lines the pieces will start to fall faster. Try and complete multiple lines at once for a higher score.
|
||||
* 🎮 **Single Player Mode** – Enjoy solo gameplay where blocks fall faster as you clear more lines.
|
||||
* 🧠 **Scoring System** – Rack up points by clearing multiple lines simultaneously.
|
||||
* 🎛️ **Keyboard Controls** – Use the arrow keys to play (custom key bindings not currently supported).
|
||||
* 💻 **Cross-Platform Compatibility** – Runs on Windows, Linux, and macOS.
|
||||
* 🐳 **Docker Support** – Containerized for easy deployment and web-based play.
|
||||
|
||||
##### Multiplayer Mode (Online)
|
||||
Play a game against a friend online where the first one to fill up their well looses!
|
||||
|
||||
##### Game Mechanics
|
||||
- [x] Rotate Right - Rotate piece clockwise
|
||||
- [ ] Rotate Left - Rotate piece counter-clockwise
|
||||
- [x] Soft Drop - Speed up a piece's downward motion
|
||||
- [x] Hard Drop - Drop a piece on the stack with no delay
|
||||
- [x] Lock Delay - The grace period before a piece locks on the stack
|
||||
- [x] Wall Kick - Push a piece off the wall in a rotation if space does not allow
|
||||
- [x] Next Piece- Show a user the next piece to enter the well
|
||||
---
|
||||
|
||||
## How to Play
|
||||
|
||||
##### Controls
|
||||
- ⬆️ Rotate
|
||||
- ⬅️ Move Left
|
||||
- ➡️ Move Right
|
||||
- ⬇️ Soft Drop
|
||||
- [Space] Hard Drop
|
||||
* Move blocks using the arrow keys.
|
||||
* Rotate and position blocks to complete horizontal lines.
|
||||
* Clear lines to earn points and speed up gameplay.
|
||||
* The game ends when the stack reaches the top.
|
||||
|
||||
##### Multiplayer
|
||||
After selecting `2 PLAYER` at the title screen you will be prompted to enter a Game ID. This ID can be any 6 characters that both players agree on. Once both players have entered their Game ID the game will start.
|
||||
> 💡 Pro Tip: Clearing four lines at once (a "Tetris") earns the most points!
|
||||
|
||||
## Download
|
||||
---
|
||||
|
||||
You can download the latest build for your system by going [here](https://github.com/gio101046/tetri5/releases).
|
||||
## Game Mechanics
|
||||
|
||||
If you would like to run the game by cloning this repository, you'll need [Git](https://git-scm.com/) and [Python 3](https://www.python.org/) installed on your system. From your command line:
|
||||
* ✅ **Rotate Right** – Rotate a piece clockwise.
|
||||
* ❌ **Rotate Left** – (Not yet implemented) Rotate a piece counter-clockwise.
|
||||
* ✅ **Soft Drop** – Temporarily increase the fall speed of the current piece.
|
||||
* ✅ **Hard Drop** – Instantly drop the piece to the bottom of the well.
|
||||
* ✅ **Lock Delay** – A short grace period before the piece locks in place.
|
||||
* ✅ **Wall Kick** – Allows rotation near walls when there isn't enough space.
|
||||
* ✅ **Next Piece Preview** – Shows the next piece in the queue.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
Clone the repository and install the local development dependencies:
|
||||
|
||||
```bash
|
||||
# clone this repository
|
||||
$ git clone https://github.com/gio101046/tetri5.git
|
||||
|
||||
# move into project directory
|
||||
$ cd tetri5
|
||||
|
||||
# install python dependencies using pip
|
||||
$ pip install -r requirements.txt
|
||||
|
||||
# run the game
|
||||
$ python main.py
|
||||
git clone https://gitea.redturtle.foo/crayonix/tetri5.git
|
||||
cd tetri5
|
||||
pip install -r requirements.local.txt
|
||||
```
|
||||
|
||||
To launch the game:
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Docker Support
|
||||
|
||||
To build the Docker image:
|
||||
|
||||
```bash
|
||||
docker build -t tetri5 .
|
||||
```
|
||||
|
||||
To run the game in a Docker container and access it via a web browser:
|
||||
|
||||
```bash
|
||||
docker run -p 3010:3010 tetri5
|
||||
```
|
||||
|
||||
Then open your browser and go to:
|
||||
|
||||
```
|
||||
http://localhost:3010
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
|
||||
|
||||
Contributions are welcome! Here’s how to get started:
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a new branch:
|
||||
|
||||
```bash
|
||||
git checkout -b feature/my-feature
|
||||
```
|
||||
3. Make your changes and commit:
|
||||
|
||||
```bash
|
||||
git commit -m "Add my feature"
|
||||
```
|
||||
4. Push to your fork:
|
||||
|
||||
```bash
|
||||
git push origin feature/my-feature
|
||||
```
|
||||
5. Open a pull request on Gitea
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
[MIT](https://choosealicense.com/licenses/mit/)
|
||||
|
||||
This project is licensed under the [FUTO Source Available License 1.0](LICENSE).
|
||||
|
||||
```TODO
|
||||
pip install --target __pypackages__/3.12/lib/ websockets==15.0.1
|
||||
pip install --target __pypackages__/3.12/lib/ PyYAML==6.0.2
|
||||
```
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
Made with ❤️ using Python & Pygame
|
||||
</p>
|
||||
|
||||
BIN
gameplay.gif
Normal file
BIN
gameplay.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
4
requirements.local.txt
Normal file
4
requirements.local.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
pygame==2.5.2
|
||||
pygbag==0.9.2
|
||||
PyYAML==6.0.2
|
||||
websockets==15.0.1
|
||||
Reference in New Issue
Block a user