Highly configurable, terminal modern Tetris clone written in C.
Go to file
Out Of Ideas 819c917292 Coding style and notice 2024-05-10 18:32:13 -05:00
bin Create bin directory 2024-05-08 20:29:16 -05:00
libs time.h and rnd.h 2024-05-09 16:45:32 -05:00
LICENSE Initial commit 2024-05-08 17:25:08 +02:00
Makefile LDFLAGS variable in Makefile as well as -lncurses flag 2024-05-09 11:41:58 -05:00
README.md Coding style and notice 2024-05-10 18:32:13 -05:00
config.def.ini Create a config file 2024-05-08 16:52:35 -05:00
main.c Add comments to main.c 2024-05-10 10:25:05 -05:00



Highly configurable, terminal modern Tetris clone written in C.



Things that will be configurable:

  • Gavity
    • Starting Speed Level
    • Ending Speed Level
    • How fast levels change
    • Levels will range from 0-30, adhering to Tetris level standards
  • Lock time
    • Whether or not this setting is enabled
    • If it is enabled, what the lock time is set to (superceding gravity lock time)
  • Possibly the kick system
    • Options are SRS and classic
  • Scoring
    • What each thing is worth
    • Whether or not to enable T-spins, and other spins, and combos
  • Multiplayer stuff
  • Controls
  • Zone stuff
  • Piece color
  • Piece character (per peice)
  • Toggle UI elements such as timer
  • Configure the apperance/color/characters of other UI elements
  • Handling settings
  • Shuffle system
  • Possibily a Classic mode
  • Enable Piece shadows
  • Classic vs. Modern loosing

UI elements

  • Timer
  • Score counter
  • Zone counter
  • B2Bs
  • Combo
  • Clear type
  • Piece queue
  • Multi player stuff
  • Matrix and Matrix Outline
    • Matrix is a checkerboard of filled in squares (██)


Implimented last

If there is one opponent, it would probably be viewed in the same terminal window. If there are multiple opponents, you can cycle/select the opponent that you want to see.

  • Garbage
  • At least one opponent
  • User hosted
  • Modes
    • Time, Normal, Zone
  • Configuration options


[ ] Learn C
[ ] Learn Ncurses
[ ] Create more in-depht plan
[ ] Implement configuration file reading


  • Make
  • Ncurses
  • C Compiler


  • Comment everything. Comments are critical to having readable code.

  • /* */ intead of //

  • Short variable names. Declarations are followed by comments. If you can't remember them, write them down.

  • No more than one consecutive empty line. Extravigant spacing is pretty, but it is extremely hard to be consistant with spacing.

    • Coments should be right above the code the are explaining. Unless the code they are explaining has comments in it, in which case there should be a single empty line between the comment and the code.
  • Max line length of 79

  • What would Suckless do?


Please keep in mind that the devs of this project are new to programing.