A simple modified version of Connect Four Game implemented with AI in Python using PyGame.
- 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.
pip install --user --upgrade --no-cache connect-n
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
from connect_n import Player, ConnectNGame
if __name__ == "__main__":
game = ConnectNGame(graphic=True, ai=True, record=False)
game.add_player(Player("Human Player"))
game.play()
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 ../../
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
- Python 3
- Pip usually pre-installed with python, check with
pip3 --version
. - Python module PyGame installable via pip.
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.
- 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.
- Flask Totorial:
- freecodecamp tutorial
- Thanks to Miguel Grinberg for excelent resource on flask and how to learn it.
- Thanks to freecodecamp for the great beginning boost.
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: 105 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_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.33 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: 23.50 s |