A modified version of Connect-4 game implemented with AI using PyGame.
Project description
Connect-N
Introduction
A simple modified version of Connect Four Game implemented with AI in Python using PyGame.
Project Description
- This repositry contains a simple game made in python similar to Connect 4.
- A bit modified to work with any connect length for any board size.
- Currently supports for variable number of players on a two dimentional board.
- Only three players supported in GUI mode.
- For more players add new colours
COLOR
variable in connect_n/pygame_utility.py file. - ID 1 is reserved for AI.
- Currently only supports single AI player in a game.
- Tests in python 3.7 on Windows OS(by developer).
- API: used flask for API development.
- Using flask-migrate for database migration.
- Using httpie for API calls and testing, similar to postman.
Installation
Windows
git clone https://github.com/Kartikei-12/Connect-N
cd Connect-N-master
python -m venv venv
./venv/Scripts/activate
pip install -r requirements.txt
python -m unittest discover --verbose
Linux based OS
git clone https://github.com/Kartikei-12/Connect-N
cd Connect-N-master
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
python -m unittest discover --verbose
Direct Usage
For simple example,
Run main.py as python main.py
on windows with virtual environment(./venv/Scripts/activate
).
Run main.py as python3 main.py
on Ubuntu/Linux with virtual environment(source /venv/Scripts/activate
).
API
API Setup(One time)
git clone https://github.com/Kartikei-12/Connect-N
cd Connect-N-master
python -m venv venv
./venv/Scripts/activate
pip install -r requirements.txt
cd connect_n/api/
pip install -r requirements.txt
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
cd ../../
API Usage
Run server with flask run
in Connect-N/connect_n/api
directory.
API Call: In new terminal do http GET http://127.0.0.1:5000/test
System Requirements
- Python 3
- Pip usually pre-installed with python, check with
pip3 --version
. - Python module PyGame installable via pip.
Documentation
Limitation
GUI NOT working inside docker, because no support for pygame inside Docker. Workaround: Code automatically switches to command line interface without raising error connect_n/connect_n.py.
Contributer(s)
Help Needed
- Looking for any algorithm which may be useful for designing AI for turn based games with more than two players.
- Looking for a front end developer for making API front end for web and android.
Additional Resources
- Flask Totorial:
- freecodecamp tutorial
Acknowledgment
- Thanks to Miguel Grinberg for excelent resource on flask and how to learn it.
- Thanks to freecodecamp for the great beginning boost.
Test Report
Start Time: 2019-08-07 12:57:28
Duration: 32.17 s
Summary: Total: 26, Pass: 26
test_ai.AITests | Status | |
---|---|---|
test_get_move | Pass | |
test_greedy | Pass | |
test_horizontal_score | Pass | |
test_negative_digonal_score | Pass | |
test_positive_digonal_score | Pass | |
test_string_score | Pass | |
test_vertical_score | Pass | |
Total: 7, Pass: 7 -- Duration: 103 ms |
test_api_utility.APIUtility | Status | |
---|---|---|
test_compile_response | Pass | |
Total: 1, Pass: 1 -- Duration: 0 ms |
test_connect_n.ConnectNTests | Status | |
---|---|---|
test_add_player | Pass | |
test_get_strings | Pass | |
test_get_valid_moves | Pass | |
test_horizontal_winning_move | Pass | |
test_is_valid_move | Pass | |
test_make_move | Pass | |
test_negative_digonal_winning_move | Pass | |
test_positive_digonal_winning_move | Pass | |
test_simulate | Pass | |
test_version | Pass | |
test_vertical_winning_move | Pass | |
Total: 11, Pass: 11 -- Duration: 3 ms |
test_dataset_generate.GenerateDataTests | Status | |
---|---|---|
test_generate_save | Pass | |
test_load | Pass | |
Total: 2, Pass: 2 -- Duration: 19.85 s |
test_db_user_model.UserModelCase | Status | |
---|---|---|
test_check_token | Pass | |
test_password_hashing | Pass | |
test_to_dict | Pass | |
test_token_expiration | Pass | |
Total: 4, Pass: 4 -- Duration: 2.32 s |
test_pygame_utility.PygameUtilityTests | Status | |
---|---|---|
test_play | Pass | View |
pygame 1.9.6 Hello from the pygame community. https://www.pygame.org/contribute.html |
||
Total: 1, Pass: 1 -- Duration: 9.90 s |
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
Built Distribution
Hashes for connect_n-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2eb2581cadd0eceb56f300017230e0c7823fe593dd24c618201894e5fb7fd377 |
|
MD5 | 521d3bb7277ad9dcf7260b4264528454 |
|
BLAKE2b-256 | 875a6c1ebca7d4a01934a76550229c0fabdccdda23e6915669495c561170751e |