GithubHelp home page GithubHelp logo

sharkwouter / tetris Goto Github PK

View Code? Open in Web Editor NEW

This project forked from arsenic-atg/tetris

0.0 1.0 0.0 3.16 MB

Tetris™ clone created in c++ and SDL

Home Page: https://tetrisplusplus.netlify.app

License: MIT License

C++ 98.09% CSS 0.35% HTML 1.56%

tetris's Introduction

Tetris

Tetris™ clone created in C++ and SDL, The project is also designed to be compile with emscripten to webasm and be deployed online.

Start a new game

controls

key Action
left_arrow move left
right_arrow move right
z or up_arrow rotate clockwise
x or left-ctrl rotate counter clockwise
space hard drop
down_arrow soft drop
p pause game
r reset game

Dependencies

  • Git: for version control
  • Standard C++ compiler conforming to C++17 and above standards: to build the project locally (tested on gcc12.0 and clang 13.0)
  • Emscripten : to compile the program to WebAsm
  • SDL2.0 library :for rendering stuff on screen.
  • SDL TTF library : for rendering font from TrueType (.ttf) font files.

Build instructions

( This section or README.md is still under construction, you may help in improving this by opening a PR/issue regarding the same )

perform the following steps to build the project on your native machine :

  1. Clone/download the repository

  2. Navigate to src subdirectory of repository

  3. Now compile the program (depending on whether you want to build the online deployable version or native build, follow one of the following steps )

    caveat: currently the repository doesn't have a build system/script to automate the build process, so sadly for now, manual build is the only way to get the project running on the system (If you are interested in setting up one for the project then feel free to open an issue discussing the same)

    3.1. WebAsm build using emscripten :

    To build the online deployable version of the game, we would be using emscripten to compile the program to webasm.

    • Executing the following command is I think all you need to compile the project ( do note that Emscripten tend to take relatively long time than your average C++ compiler to build the project, and compilling for the first time would almost always take much longer to build than subsequent builds )
    $ em++ -std=c++17 renderer.cpp game.cpp app.cpp main.cpp -O2 -s TOTAL_MEMORY=67108864 -s USE_SDL=2 -s USE_SDL_TTF=2 -s USE_SDL_MIXER=2 --preload-file assets -o ../build/index.js

    TODO: explain what the above command does in detail

    • The build files should be in build subdirectory of the repository
    • Once in build directory, you can simply use emrun to run the HTML pages via a locally launched web server.
    $ emrun index.html

    FWIW: you may also like to visit emscripten documentation regarding more info about building a project with emscripten if you are interesting to know more about the same.

    3.2. Native build using native C++ compiler :

    • Just use your native C++ compiler to build and executable from all the source files (order in which they should be provided to the command should not matter in most cases )

    • Make sure to link SDL2 and SDL2_ttf libraries properly.

     $ g++ -std=c++17 renderer.cpp game.cpp app.cpp main.cpp -O2 -lSDL2_ttf -lSDL2
    • run the built executable.

These instructions are meant to be understood by developers of every level, so if you are unable to understand anything or face any difficulty in building the project then make sure to complaint about the same by opening an issue or in discuss section.

For Hacktoberfest

This repository is participating in hacktoberfest, so any contribution done on this project during the month of october should be counted towards hacktoberfest.

Contribution

Contribution of all kinds ( code, non-code, low-code) are appriciated.

  • If you are looking to contribute to the project then make sure to read contribution guidelines before making a new pull request.

  • If you want to report a bug, or want to share ideas/contribute to the project then feel free to open an issue/PR regarding the same

Also feel free to open an issue for asking queries.

If you liked the project then make sure to support the developers by giving it a star 🤩.

License

License

tetris's People

Contributors

andrewrgarcia avatar arsenic-atg avatar deleonroselle21 avatar jjwesker10 avatar omk-coder avatar ppitu avatar pscoder10462 avatar shivam-mittal01 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.