An exploration of a fantasy world, to autobattle your way to ruling the demesne.

Overview

Not Quite Paradise 2

(no relation to NQP, I just like the name enough to want to keep it.)

Badges!

Current position:

GitHub tag (latest by date ) Code style: black

Quality of last commit:

Check JSON and GH Actions Lint Python

Who dunnit?

Design, writing and code by Snayff.

Design and writing by PuddingChef.

Additional code by DaFluffyPotato.

Art by Aleksander Makarov.

What is it?

A world exploring, army recruiting, auto-battling adventure to take over the kingdom.

title_screen

commander_select

combat_gif

recruiting_gif

What're the terms? (license)

In short, code is free to reuse for non-commercial purposes but images are off limits in all contexts except playing this game. See here for the details.

Do you want to know more?

See the Design Document for wants planned, or the wiki for details on the world of NQP2.

Comments
  • Constrain Entity Positions

    Constrain Entity Positions

    Suggested Feature

    Constrain entities in a unit to a circular region. This will make it easier to track units and manage their interactions, it will also serve as a central point and location for the unit.

    Requirements

    1. Units have an area that defines where the entities can go.
    2. Entities cannot leave the area of the unit.
    3. Each Unit has its own area size.
    4. The area of the unit is displayed as a ring/circle.
      1. Have the ring around the player's units use a different colour to the enemy's units.
    5. The central point of the unit is used a the units position for purposes of targeting.
    6. The central point of the unit is displayed as a banner.
    enhancement 
    opened by Snayff 11
  • Gamepad Support

    Gamepad Support

    Suggested Feature

    Implement gamepad support.

    Requirements

    • [x] Can navigate around options on screen using the stick or d-pad
    • [x] Can interact with UI elements with gamepad button (A for xbox?)
    • [x] Can cancel partially selected input with gamepad button (B for xbox?)

    Additional Context

    None

    enhancement 
    opened by Snayff 6
  • Fixed GitHub action for Python linting

    Fixed GitHub action for Python linting

    Fixed the GitHub action that automatically formats Python code using black and isort.

    • I used this as a template for the new workflow so I didn't use some of what was previously in the workflow file, let me know if there's something that I should restore.
    • I tested it on a fork before creating a branch here, so I believe it will work as long as the Workflow permissions are set correctly.
    • I purposefully put an import in the wrong order on this PR to test if isort will fix it.
    opened by douglascdev 5
  • Crash when entering combat

    Crash when entering combat

    The Bug

    The game crashes after entering combat on a new game.

    Reproduction Instructions

    Detail the steps to reproduce the bug.

    1. Create a new game
    2. Select any character
    3. Move to a combat location on the map
    4. The game crashes

    Expected behaviour

    No crash.

    Screenshots

    Not necessary.

    Platform

    • OS: Manjaro 21.2.1(Gnome)
    • Python Version: 3.9.9
    • NQP Version: 0.1.0 (develop branch)

    Log Output/Stack Trace

    Stack Trace:

    Traceback (most recent call last):
      File "/home/douglas/Python Projects/nqp2/scripts/__main__.py", line 26, in main
        game_loop(game)
      File "/home/douglas/Python Projects/nqp2/scripts/__main__.py", line 58, in game_loop
        game.run()
      File "/home/douglas/Python Projects/nqp2/scripts/core/game.py", line 96, in run
        self.update()
      File "/home/douglas/Python Projects/nqp2/scripts/core/game.py", line 87, in update
        self.active_scene.update(delta_time)
      File "/home/douglas/Python Projects/nqp2/scripts/scenes/overworld/scene.py", line 46, in update
        self.node_container.update(delta_time)
      File "/home/douglas/Python Projects/nqp2/scripts/scenes/overworld/elements/rings.py", line 50, in update
        self._transition_to_new_node(delta_time)
      File "/home/douglas/Python Projects/nqp2/scripts/core/base_classes/node_container.py", line 174, in _transition_to_new_node
        self.trigger_current_node()
      File "/home/douglas/Python Projects/nqp2/scripts/core/base_classes/node_container.py", line 208, in trigger_current_node
        self.game.change_scene(scene)
      File "/home/douglas/Python Projects/nqp2/scripts/core/game.py", line 126, in change_scene
        self.combat.generate_combat()
      File "/home/douglas/Python Projects/nqp2/scripts/scenes/combat/scene.py", line 205, in generate_combat
        self.terrain.generate(biome)
      File "/home/douglas/Python Projects/nqp2/scripts/scenes/combat/elements/terrain.py", line 141, in generate
        self.gen_pathfinding_map()
      File "/home/douglas/Python Projects/nqp2/scripts/scenes/combat/elements/terrain.py", line 87, in gen_pathfinding_map
        self.pathfinder.set_map(self.pathfinding_array)
      File "/home/douglas/Python Projects/nqp2/scripts/scenes/combat/elements/pathfinder.py", line 13, in set_map
        self.tcod_map = tcod.path.AStar(map_data, diagonal=0)
      File "/home/douglas/.cache/pypoetry/virtualenvs/notquiteparadise2-u2fdlzlx-py3.9/lib/python3.9/site-packages/tcod/path.py", line 188, in __init__
        ) = self.cost.get_tcod_path_ffi()
      File "/home/douglas/.cache/pypoetry/virtualenvs/notquiteparadise2-u2fdlzlx-py3.9/lib/python3.9/site-packages/tcod/path.py", line 151, in get_tcod_path_ffi
        raise ValueError("dtype must be one of %r, dtype is %r" % (self._C_ARRAY_CALLBACKS.keys(), self.dtype.type))
    ValueError: dtype must be one of dict_keys([<class 'numpy.float32'>, <class 'numpy.bool_'>, <class 'numpy.int8'>, <class 'numpy.uint8'>, <class 'numpy.int16'>, <class 'numpy.uint16'>, <class 'numpy.int32'>, <class 'numpy.uint32'>]), dtype is <class 'numpy.int64'>
    

    The log file has pretty much the same output:

    2022-01-06 22:27:50,100| DEBUG   | Logging initialised.
    2022-01-06 22:27:50,100| DEBUG   | Debugger: initialised in 0.00s.
    2022-01-06 22:27:50,110| DEBUG   | Window: initialised in 0.01s.
    2022-01-06 22:27:50,111| DEBUG   | Data: All commanders data loaded.
    2022-01-06 22:27:50,120| DEBUG   | Data: All unit data loaded.
    2022-01-06 22:27:50,125| DEBUG   | Data: All tileset data loaded.
    2022-01-06 22:27:50,126| DEBUG   | Data: All event data loaded.
    2022-01-06 22:27:50,127| DEBUG   | Data: All upgrade data loaded.
    2022-01-06 22:27:50,127| DEBUG   | Data: All combats data loaded.
    2022-01-06 22:27:50,127| DEBUG   | Data: All bosses data loaded.
    2022-01-06 22:27:50,127| DEBUG   | Data: All skills data loaded.
    2022-01-06 22:27:50,128| DEBUG   | Data: Config data loaded.
    2022-01-06 22:27:50,128| DEBUG   | Data: Options data loaded.
    2022-01-06 22:27:50,128| DEBUG   | Data: initialised in 0.02s.
    2022-01-06 22:27:50,128| INFO    | Memory: initialised in 0.00s.
    2022-01-06 22:27:50,134| INFO    | Assets: All images loaded.
    2022-01-06 22:27:50,616| DEBUG   | Assets: initialised in 0.49s.
    2022-01-06 22:27:50,616| DEBUG   | Input: initialised in 0.00s.
    2022-01-06 22:27:50,616| DEBUG   | RNG: initialised in 0.00s.
    2022-01-06 22:27:50,616| DEBUG   | MainMenuScene: initialised in 0.00s.
    2022-01-06 22:27:50,616| DEBUG   | RunSetupScene: initialised in 0.00s.
    2022-01-06 22:27:50,617| DEBUG   | OverworldScene: initialised in 0.00s.
    2022-01-06 22:27:50,617| DEBUG   | CombatScene: initialised in 0.00s.
    2022-01-06 22:27:50,617| DEBUG   | RewardScene: initialised in 0.00s.
    2022-01-06 22:27:50,617| DEBUG   | EventScene: initialised in 0.00s.
    2022-01-06 22:27:50,617| DEBUG   | TrainingScene: initialised in 0.00s.
    2022-01-06 22:27:50,617| DEBUG   | InnScene: initialised in 0.00s.
    2022-01-06 22:27:50,617| DEBUG   | ViewTroupeScene: initialised in 0.00s.
    2022-01-06 22:27:50,636| DEBUG   | UnitDataScene: initialised in 0.02s.
    2022-01-06 22:27:50,636| DEBUG   | GalleryScene: initialised in 0.00s.
    2022-01-06 22:27:50,645| DEBUG   | Game initialised in 1.34s.
    2022-01-06 22:27:52,050| INFO    | Active scene changed to RUN_SETUP.
    2022-01-06 22:27:52,750| INFO    | Seed set to 20220106192750.
    2022-01-06 22:27:52,750| INFO    | Player chose ralnath as their commander.
    2022-01-06 22:27:52,751| DEBUG   | Unit harpy(1) created and added to player's troupe.
    2022-01-06 22:27:52,751| DEBUG   | Unit caveborn(2) created and added to player's troupe.
    2022-01-06 22:27:52,751| INFO    | Generating overworld...
    2022-01-06 22:27:52,751| DEBUG   | -> Ring 1 has 3 nodes; ['INN', 'COMBAT'].
    2022-01-06 22:27:52,752| DEBUG   | -> Ring 2 has 5 nodes; ['TRAINING', 'BLANK', 'TRAINING', 'INN', 'BLANK'].
    2022-01-06 22:27:52,752| DEBUG   | -> Ring 3 has 6 nodes; ['BLANK', 'COMBAT', 'COMBAT', 'TRAINING', 'INN', 'INN'].
    2022-01-06 22:27:52,753| DEBUG   | -> Ring 4 has 10 nodes; ['INN', 'COMBAT', 'INN', 'COMBAT', 'COMBAT', 'COMBAT', 'TRAINING', 'COMBAT', 'BLANK', 'COMBAT'].
    2022-01-06 22:27:52,754| DEBUG   | -> Ring 5 has 14 nodes; ['COMBAT', 'BLANK', 'COMBAT', 'BLANK', 'COMBAT', 'COMBAT', 'COMBAT', 'COMBAT', 'COMBAT', 'COMBAT', 'BLANK', 'COMBAT', 'COMBAT', 'BLANK'].
    2022-01-06 22:27:52,754| INFO    | -> Map generated. Rings: 6 | Nodes: filled:36, blank:8 | Connections: 10
    2022-01-06 22:27:52,754| INFO    | Run starting now!
    2022-01-06 22:27:52,763| INFO    | Active scene changed to OVERWORLD.
    2022-01-06 22:27:56,660| INFO    | Next node, COMBAT, selected.
    2022-01-06 22:28:03,943| CRITICAL| Something went wrong and killed the game loop!
    2022-01-06 22:28:03,946| CRITICAL| Traceback (most recent call last):
    2022-01-06 22:28:03,946| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/__main__.py", line 26, in main    game_loop(game)
    2022-01-06 22:28:03,946| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/__main__.py", line 58, in game_loop    game.run()
    2022-01-06 22:28:03,946| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/core/game.py", line 96, in run    self.update()
    2022-01-06 22:28:03,946| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/core/game.py", line 87, in update    self.active_scene.update(delta_time)
    2022-01-06 22:28:03,946| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/scenes/overworld/scene.py", line 46, in update    self.node_container.update(delta_time)
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/scenes/overworld/elements/rings.py", line 50, in update    self._transition_to_new_node(delta_time)
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/core/base_classes/node_container.py", line 174, in _transition_to_new_node    self.trigger_current_node()
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/core/base_classes/node_container.py", line 208, in trigger_current_node    self.game.change_scene(scene)
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/core/game.py", line 126, in change_scene    self.combat.generate_combat()
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/scenes/combat/scene.py", line 205, in generate_combat    self.terrain.generate(biome)
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/scenes/combat/elements/terrain.py", line 141, in generate    self.gen_pathfinding_map()
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/scenes/combat/elements/terrain.py", line 87, in gen_pathfinding_map    self.pathfinder.set_map(self.pathfinding_array)
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/Python Projects/nqp2/scripts/scenes/combat/elements/pathfinder.py", line 13, in set_map    self.tcod_map = tcod.path.AStar(map_data, diagonal=0)
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/.cache/pypoetry/virtualenvs/notquiteparadise2-u2fdlzlx-py3.9/lib/python3.9/site-packages/tcod/path.py", line 188, in __init__    ) = self.cost.get_tcod_path_ffi()
    2022-01-06 22:28:03,947| CRITICAL|   File "/home/douglas/.cache/pypoetry/virtualenvs/notquiteparadise2-u2fdlzlx-py3.9/lib/python3.9/site-packages/tcod/path.py", line 151, in get_tcod_path_ffi    raise ValueError("dtype must be one of %r, dtype is %r" % (self._C_ARRAY_CALLBACKS.keys(), self.dtype.type))
    2022-01-06 22:28:03,948| CRITICAL| ValueError: dtype must be one of dict_keys([<class 'numpy.float32'>, <class 'numpy.bool_'>, <class 'numpy.int8'>, <class 'numpy.uint8'>, <class 'numpy.int16'>, <class 'numpy.uint16'>, <class 'numpy.int32'>, <class 'numpy.uint32'>]), dtype is <class 'numpy.int64'>
    
    bug 
    opened by douglascdev 4
  • Combat Animations

    Combat Animations

    Suggested Feature

    Units should transition between appropriate animations.

    Requirements

    • [x] When moving and under no other state an entity animates as Move
    • [x] When attacking the entity animates as Attack
    • [x] When an entity is on screen, before combat has started, they should animate as Idle.
    • [x] When hit the entity flashes white.
    • [x] When hit points become 0 or less the entity should animate as Death
    • [x] After completion of the death animation cycle the last frame of the death animation should be left at that position.
    enhancement 
    opened by Snayff 4
  • feature/include_git_lfs_in_docs

    feature/include_git_lfs_in_docs

    After first cloning the project, the resources I got were all broken. That was because I had not enabled git LFS, and there is no mention of that in the developer documentation, so this PR addresses that, instructing developers to install git LFS before trying to clone the repository.

    opened by douglascdev 2
  • Convert the Combat Scene to Overlay-Type Scene

    Convert the Combat Scene to Overlay-Type Scene

    Suggested Feature

    Rather than a discrete scene, handle the combat directly on the map.

    Requirements

    • [x] Spawn the enemy Units on to the map
    • [x] Handle combat on the map
    • [x] Return player units to their start position post combat

    Additional Context

    Likely to use 1 of 2 approaches:

    1. require changing the WorldScene to handle the enemy Unit's spawning and then their combat with the player's Units
    2. having the CombatScene as an additional active scene on the stack and hiding the player's units from WorldScene and adding them to CombatScene.
    enhancement 
    opened by Snayff 2
  • Troupe Arrangement on Grid

    Troupe Arrangement on Grid

    Suggested Feature

    When arranging the Troupe utilise a grid.

    Requirements

    • [x] Troupe starts in room on grid.
    • [x] Troupe placement is retained between rooms.
    • [x] The player can select a unit and move their position on the grid.
    • [x] If the player moves a unit to a grid cell that already has a unit then those units swap places.
    • [x] support for keyboard
    • [x] support for gamepad
    • [x] support for mouse

    Additional Context

    Using a grid speeds up placement and enables use of a controller.

    Example: image

    enhancement 
    opened by Snayff 2
  • Choose Destination Post Scene Completion

    Choose Destination Post Scene Completion

    Suggested Feature

    After completing a scene the player must choose which scene to go to next.

    Requirements

    • [x] Once a scene is complete the player is offered options to exit from between 1-3 directions. In each direction is a new room.
    • [ ] ~~The room in each direction is indicated (e.g. if the room to the north is an Inn then the Inn icon is shown)~~
    • [x] Once selected, the camera pans to the new room (which is of the specified type)
    • [x] New room choices are randomly generated.
    • [x] A player cannot go back to a previous room

    Additional Context

    Related #163

    enhancement 
    opened by Snayff 2
  • Combat Placement

    Combat Placement

    Suggested Feature

    Enemy units are only placed on 1/4 of the screen. The player can only place on 1/4 of the screen, on the opposite side.

    Requirements

    1. For each combat, the player and enemy are each only to place units on 1/4 of the screen, on opposite sides.
    2. Placement areas are highlighted to indicate.
    3. The unit the player is currently placing is indicated.
    4. The player's placed units are indicated.
    5. Spawn all entities when unit placed so they all appear together, rather than popping them out when combat begins.
    6. Keep cursor at the same position after making a selection, i.e. placing a unit.

    Additional Context

    image

    enhancement 
    opened by Snayff 2
  • Unit Death and Injury

    Unit Death and Injury

    Suggested Feature

    When a unit dies in combat an injury is applies. 3 injuries and the unit dies and is removed from the player's troupe.

    Requirements

    1. When a unit dies in combat they receive an injury.
    2. A unit receives -10% to all stats per injury.
    3. When a unit receives 3 injuries they are removed the player Troupe.
    4. The player is informed at the first opportunity outside of combat that a unit has died.
    5. If a unit doesnt take part in combat they remove 1 injury.
    enhancement 
    opened by Snayff 2
  • Units Inherit Commander's Stats

    Units Inherit Commander's Stats

    Suggested Feature

    Units add Commanders stats to their own

    Requirements

    • [ ] commander has some of the unit stats.
      • [ ] attack.
      • [ ] magic defence.
      • [ ] mundane defence.
      • [ ] penetration.
      • [ ] crit chance.
      • [ ] crit damage.
    • [ ] units add Commanders stats to their own

    Additional Context

    Gives more variety to commanders and allows more levers to use during play for e.g. items.

    Think heroes 3.

    enhancement 
    opened by Snayff 0
  • Better Way to Navigate Menus

    Better Way to Navigate Menus

    Suggested Feature

    Currently, panels only have a concept of previous or next UIElement, so we can only navigate in that way, with the order being determined by order of creation (or addition to list).

    Requirements

    • [ ] panel has concept of where uielement sits in relation to others.
      • [ ] uielements can be in one of the 4 cardinal directions from another ui element
      • [ ] the relationship takes account of "wrapping around"

    Additional Context

    I wonder if we need to use a grid concept, with the ability to use blanks. This will make creation more complex, so will likely need some helper functions.

    enhancement 
    opened by Snayff 0
  • Particles Support Transparency

    Particles Support Transparency

    Suggested Feature

    Have Particles support transparency.

    Requirements

    • [ ] colour given is 4 channel (R, G, B, A)
    • [ ] transparency shown when drawn

    Additional Context

    None

    enhancement 
    opened by Snayff 0
  • Expand StatEffect to Include `item_type` and `attribute`

    Expand StatEffect to Include `item_type` and `attribute`

    Suggested Feature

    StatEffect to handle more that just stats (maybe rename?). There are a variety of values we want to amend and we could either split into separate effects or use 1. As the functionality is really similar suggest consolidating.

    Requirements

    • extend StatEffect to allow changing:
      • [ ] resources (gold, morale etc.)
      • [ ] game rules (events per level etc.)
      • [ ] attributes (can be healed by self etc.)

    Additional Context

    None.

    enhancement 
    opened by Snayff 0
  • StatsEffect Modifier to Accept a Stat to Derive From

    StatsEffect Modifier to Accept a Stat to Derive From

    Suggested Feature

    modifier need to accept another stat; if no stat given defaults to stat being amended

    Requirements

    • [ ] modifier can take a specified stat when using a %
    • [ ] the referenced stat is used to derive the % from (rather than the stat being ameded)

    Additional Context

    e.g. modifier: 20%attack would modify the targeted stat by 20% of the attack stat.

    enhancement 
    opened by Snayff 0
Owner
null
A sprite ripper and converter for Com2uS' 2007 game Music World.

Music World Sprite Dumper This repository contains a python script reads an UNCOMPRESSED Music World pxo file and attempts to dump sprites from it. Th

Buu342 1 Mar 16, 2022
An open-world game made in Python.

Dragon Realms Notes Windows OS only Contributors This project follows the all-contributors specification (emoji key, command Issue). See what you can

Dragon Realms 2 Jul 28, 2022
Box - a world simulator written in python with pygame

Box is a world simulator written in python with pygame. Features A world generation system A world editor Simulates creatures called boxlanders. You c

1up Community 3 Nov 14, 2022
In the works, creating a new Chess Board and way to Play...

sWJz4KingsChess date started on github.com 11-13-2021 In the works, creating a new Chess Board and way to Play... starting to write this in Pygame, an

Shawn 2 Nov 18, 2021
Made to help you create UI using pygame in python, gonna add way more to this project

Pygame visualizer Made to help you create UI using pygame in python, gonna add way more to this project. As of now, this is only hours worth of work.

Ayza 2 Feb 8, 2022
Easily manage wine prefixes in a new way. Run Windows software and games on Linux

Bottles Easily manage wineprefix using environments Documentation · Forums · Telegram group · Funding ?? Documentation Before opening a new issue, che

Bottles 4.1k Jan 9, 2023
MCRPC (Minecraft Resource Pack Comparator) checks your resource pack against any version of Minecraft to show resources missing from your pack for that version.

Minecraft Resource Pack Comparator MCRPC checks your resource pack against any version of Minecraft to show resources missing from your pack for that

null 3 Nov 3, 2022
Track your favorite minecraft servers' (too bee too tee) queue at any time at your own convenience!

2b2t Queue Monitor Track your favorite minecraft servers' (too bee too tee) queue at any time at your own convenience! Compiled Usage go to https://gi

Addi 1 Feb 5, 2022
:tada: 2048 in your terminal

term2048 term2048 is a terminal-based version of 2048. Install pip install term2048 To upgrade a previous installation, use: pip install -U term2048

Baptiste Fontaine 798 Nov 21, 2022
Setup minecraft server (Tuinity) to your directory

hapeshiva server-setup Setup minecraft server (Tuinity) for you. Support for optimization Create optimized yml Customazible server port and view dista

null 3 May 11, 2022
Automatically prepare your Minecraft maps for release

map-prepare Automatically prepare Mineraft map for release. Current state: kinda works Make sure you have backups for your world before running this p

null 11 Oct 11, 2022
View your VALORANT performance in different areas of every map in the game!

Valorant-Zone-Stats Inspired by Leetify's awesome Map Zones Tool for CS:GO A simple desktop program to view your VALORANT performance in different are

Louis 76 Jan 1, 2023
Overview: copain, your friendly AI framework to learn and play games

Overview: copain, your friendly AI framework to learn and play games Interface fceux with python and run reinforcement learning. Compatibility Current

fcharras 1 Dec 16, 2021
This a Chess PGN saver which allows you to save your game pgns, in a .pgn file

PGN Saver This a Chess PGN saver which allows you to save your game pgns, in a .pgn file This can be a very useful tool for the people using chessbase

null 3 Jan 6, 2022
Guess Your Card - A Multiplayer Python Game

Guess Your Card - A Multiplayer Python Game This is a guessing card game having two levels - Developed in Python and can be played between two to four

Hammad Ahmed ~ 1 Oct 20, 2021
You want to uto-update your private minecraft client? Give this to developer and enjoy!

minecraft-hack-installer You want to uto-update your private minecraft client? Give this to developer and enjoy! Steps to do: Install libraries: pip i

EuropeStudio 1 Jun 3, 2022
🐥Flappy Birds🐤 Video game. With your help I can go through🚀 the pipes. All UI is made with 🐍Pygame🐍

?? Flappy Fish ?? I am Flappy Fish ?? . With your help I can jump through the pipes and experience an interesting and exciting flight deep into the fi

MohammadReza 2 Jan 14, 2022
Blackjack-Py is a terminal based game of blackjack within your terminal playing against CPU.

About Blackjack-Py is a terminal based game of blackjack within your terminal playing against CPU. Usage Clone the repo and run it with whatever pytho

Eccentrici 1 Dec 28, 2021
Racers-API - a game where you have to go around racing with your car, earning money

Racers-API About Racers API is a game where you have to go around racing with yo

null 3 Jan 9, 2022