fortran-gaming / blocktran

Falling-block object-oriented Fortran game, resizable playfield

Home Page:https://fortran-gaming.github.io/blocktran/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BlockTran

DOI Actions Status

Text/console falling-block tetromino game written in object-oriented Fortran 2008.

BlockTran gameplay demo

  • user-configurable playfield size
  • Logs pieces played to blocktran.log so you can recreate memorable games.
  • uniform random game piece generation.
  • clean, object-oriented Fortran 2008 syntax
  • Curses (Ncurses, PDcurses) used for display, called directly from Fortran code.

Build

BlockTran works on Mac, Linux, native Windows, Cygwin, Windows Subsystem for Linux. Requires a Fortran compiler and CMake. Known to work with GCC Gfortran and Intel oneAPI (Classic or LLVM).

cmake -B build
cmake --build build

or using Fortran FPM:

fpm build
fpm run

The main executable file is build/blocktran. You can copy this file to your Desktop or wherever you like.

Linux / macOS

Ncurses is required. Alternatively, PDCurses + X11 development libraries are required for building on Linux.

Install X11 on Linux:

dnf install libX11-devel libXt-devel libXaw-devel ncurses-devel
# or
apt install libmxu-dev libxpm-dev libxt-dev libxaw7-dev libx11-dev

on macOS:

brew install libxt libxaw libx11

Play

difficulty level

adjust cadence of falling blocks with -d option, including decimal point:

blocktran -d 1.2

Higher number increase difficulty. Must include decimal point.

Playfield size

specify width and height of the playfield with -s option:

blocktran -s 20 15

play against computer

The computer player is rudimentary.

blocktran -p 2

debug mode

Debug logging is enabled by:

blocktran --debug

Controls

Other "secret" cheat keys exist! You can also use arrow keys.

Key Effect
W Rotate piece
A/D Left and right respectively
S Move down faster
Q or Esc Exit the game

Notes

Block distribution is uniformly random as confirmed by:

./blockrand

References

About

Falling-block object-oriented Fortran game, resizable playfield

https://fortran-gaming.github.io/blocktran/

License:Apache License 2.0


Languages

Language:Fortran 77.2%Language:CMake 19.1%Language:C 2.9%Language:C++ 0.7%Language:GDB 0.1%