A two week group project to build a game in Python using Pygame
- Our Trello board
Contributors:
python 3.7
and the Python package installer pip 18.1
are required to install and
play Orthogonal Quest.
If you do not have python 3.7
or your version is less than 3.7
, you will need to
install/upgrade it. The guides from DigetalOcean are recommended for this. They
also cover installation of pip
. The following are some examples but you may need
to find the guide relavant to your computer's exact operating system:
Please check that your system has these requirements before attempting Orthogonal Quest installation.
To do this, open your operating system's terminal. Once there:
- Run
python3 -V
. You should see the outputPython 3.7.x
- Run
pip3 -V
. If the output starts withpip 18.1
, move on to the game installation section.
We recommend using a virtual environment for your Pygames to keep your Python packages separate. Please refer to the DigitalOcean links above for more information on virtual environments and why it is a good idea to use them.
To do this:
- In your terminal navigate to the location you want your environments to be saved.
- Create your virtual environment using venv
python3.7 -m venv name_of_your_env
- Activate your environment
source path_to_your_env/bin/activate
From your termainal, navigate to a suitable installation location (e.g. A project directory) and input the following commands:
- Create a game directory
mkdir PyGames
- Change directory
cd PyGames
- Clone the repository
git clone git@github.com:Sindex42/orthogonal-quest.git
- Change directory
cd orthogonal-quest
- Activate your virtual environment if you haven't already
source path_to_your_env/bin/activate
- Install dependencies
pip install -r requirements.txt
From the orthogonal-quest
directory root, run python ./src/main.py
Your virtual environment must be activated in order for this to work.
To deactivate your virtual environment simply quit the game and in your terminal enter: deactivate
.
You will need to re-enter your venv to play the game again.
Tech | Description |
---|---|
Python3 | Main language |
Pygame | Free and open source Python library for making multimedia applications |
Travis CI | Continuous integration running tests and linters before merging branches |
Code Climate | Automated code review for code quality and complexity |
Pylint | Source-code, bug and quality checker for Python |
Autopep8 | A tool that automatically formats Python code to conform to the PEP 8 style guide |
To see a log of our learnings throughout this project, please refer to our project wiki
We'd love to hear from you if have anything to contribute to help us improve Orthonogal Quest. To do so:
- Fork the repo
- Make as regular and as small commits as possible
- Leave super clear commit messages along the way
- Make a pull request back to this repo explaining the contributions you made
Your name will of course be added to our list of contributors if your pull request is approved.
As a user
So I can play the game
I would like to be able to boot it up from the console
As a user
So I can play the game
I would like to be able to see a game screen
As a game dev
So I can build a map
I would like the game world to be divided into a grid
As a user
So I can begin my quest
I would like to be able to see a hero
As a user
So I know who I control
I would like to be able to move the hero orthogonally
As a user
So I can control my hero
I would like to be able to move one tile at a time
As a user
So I know what I’m up against
I would like to be able to see an enemy
As a user
So I know what I’m up against
I would like the enemy to be static
As a user
So I know the boundaries of the game
I would like to be able to collide with the walls
As a user
So I know how big the game world is
I would like there to be only one room
As a game dev
So I know I bumped into the wall
I would like to be able to see the collision in the console
As a user
So I know I bumped into a wall
I would like the hero to not leave the edge of the screen
As a game dev
So I know I bumped into an enemy
I would like to be able to see the collision in the console
As a user
So I know I bumped into an enemy
I would like the hero and the enemy to not overlap
As a game dev
To make the game more interactive
I would like to give enemies random movement
As a game dev
To make the game a challenge
I would like enemies to kill heros on collision
As a game dev
To make the game look good
I would like enemies to appear as sprites
As a game dev
To make the game look good
I would like wall tiles to be textured
As a game dev
To make the game look good
I would like background tiles to be textured
As a user
So I can kill my enemies
I would like to be able to attack them
As a user
So I can kill my enemies
I would like them to die when I hit them
As a game dev
So the game is more of a challenge
I would like there to be multiple enemies
As a game dev
To make my game sound good
I would like to embed sounds on events
As a user,
So I can know how to play the game,
I want to see instructions on a start screen
As a user,
So I know when I die
I want to see a game over screen
As a user,
So I can play again after game over,
I want to be redirected to the start screen
As a user,
So I can win the game when I kill all enemies,
I would like to have a win screen
As a user,
So I can play again after winning,
I want to be redirected to the start screen
As a user,
So I don't die as as easily,
I would like some Hitpoints
As a user,
So I know how much health I have,
I would like see my health bar
As a game dev,
So I can go to various levels of the game when I defeat all enemies,
I would like progress to different maps
As a game dev,
So I can feel the adrenaline,
I would like to defeat a Boss