Skip to content

A modified version of Connect-4 game implemented with AI using PyGame.

License

Notifications You must be signed in to change notification settings

Kartikei-12/Connect-N

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Connect-N

License: GPL v3 Build Status Codacy Badge Codecov Code Style


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

Via pip

pip install --user --upgrade --no-cache connect-n

Via source

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

Simple Example

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()

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

docs

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)

@Kartikei Mittal

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

Acknowledgment

<title>Test Report</title>

Test Report

Start Time: 2019-08-28 09:06:10

Duration: 25.94 s

Summary: Total: 24, Pass: 24

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