Skip to main content

A (not so) small library for terminal based game development.

Project description

Linux: Ok Windows: Ok Mac OS: Ok GPLv3 license PRs Welcome Documentation Status CII Best Practices CircleCI codecov

pygamelib

A (not so) small library for terminal based game development.

Preemptive warning

Version updates always bare the possibility of bringing some breaking changes together with new features and improvements. We try to limit these but when they do occur they are documented on the wiki.

Introduction

Historically, this library is used as a base to teach coding to kids from 6 to 15. It aims at giving an environment to new and learning developers (including kids) that let them focus on the algorithm instead of the lousy display or precise management.

It started as a very simple library with very little capabilities, but over time it became something more. To the point that it is now possible to make very decent games with it. So this is obviously still extremely simple compared to other game framework and it still does not aim at being anything serious for real game developers. However, it can now be used by aspiring game developers for an introduction to 2D games development.

There is a Youtube channel that (will) contains tutorials.

Here is a quick view of what can currently be achieved with that library:

Watch the video

Have a look at the examples/ directory to see how most of these games have been done!

If you want a quick peak at the new features in the most recent version, have a look at this:

Watch the video

Strong points

Hopefully you'll find the pygamelib to have a lot of strong points:

  • It is simple. It requires very limited Python knowledge to start coding games.
  • Yet powerful offering more advanced programmers a lot of possibilities.
  • The possibilities scale up with the students offering basic feature and default values "good enough" for beginners and lots of tunning opportunities for the advanced coders.
  • Lots of stuff are available by default. Any idea how long it would take a beginner to display only a part of a board? 1 second with the pygamelib, probably slightly more if they had to do it by hand ;)
  • It is Terminal based. This means no graphics card dependencies, cross platform, and a framework that stimulate imagination and creativity.

Installation (recommended)

The easiest way to install a stable version is to use pypi:

pip3 install pygamelib

It will pull all dependencies

Installation from sources and requirements

Python

The pygamelib only supports Python 3.6+. It will not run with Python 2. We use pipenv to manage dependencies.

Run Pipenv to install the requirements:

pip3 install pipenv
pipenv install

If you want the development dependencies you need to run:

pip3 install pipenv
pipenv install --dev

Or you can just run make devenv if make is available on your system.

Runing tests

To run the unit tests use the following command:

python -m unittest discover -s tests

Terminal color and emojis

It is not really a hard requirement but colored emojis are really bringing the games created to life.
We then recommend to have a color emojis font installed like Noto Color Emojis (on most Linux distributions you can install it from the package manager, search for "noto-color-emoji").

If your terminal application is not displaying color emojis, please have a look at this file and follow the instructions.

Running examples

To run the examples using pipenv:

pipenv shell
(pygamelib) cd examples/suparex
(pygamelib) python3 suparex.py

Limitations

There is tons of limitations but for the most important ones:

  • Only one player is supported.
  • There is little protections against messing up with the internal. This is on purpose, I want the kids to learn to use the API not mess up with the internals of every single class.
  • It's pure Python (it's slow).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pygamelib-1.3.0.tar.gz (261.1 kB view details)

Uploaded Source

Built Distribution

pygamelib-1.3.0-py3-none-any.whl (266.7 kB view details)

Uploaded Python 3

File details

Details for the file pygamelib-1.3.0.tar.gz.

File metadata

  • Download URL: pygamelib-1.3.0.tar.gz
  • Upload date:
  • Size: 261.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 CPython/3.10.7

File hashes

Hashes for pygamelib-1.3.0.tar.gz
Algorithm Hash digest
SHA256 f9f69bc9b0dc98ecae19b788746da7ab99eb1f9c0543d843ca60075c0937791f
MD5 b8de94d074a2337875a23a07da3cc1df
BLAKE2b-256 6691cc1129563ae3b50eb6fd5af60c8918aec2a5ba590e57a7c242ca530d9c4d

See more details on using hashes here.

File details

Details for the file pygamelib-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: pygamelib-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 266.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 CPython/3.10.7

File hashes

Hashes for pygamelib-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c8f7e7f3022295614f6cfef08cc0bbb89089efadb066db108fe53a2919b2830
MD5 a39b98ef5f996bc966379993018e71e2
BLAKE2b-256 adb99b6a1e52d77d4b51e9719827ed0b866618bb10326560212f9234a71d1351

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page