Skip to content

Javascript Dots-and-Boxes application with support for game-playing agents.

Notifications You must be signed in to change notification settings

wannesm/dotsandboxes

Repository files navigation

Dots and Boxes application

Live demo: https://people.cs.kuleuven.be/wannes.meert/dotsandboxes/play

Screenshot of Dots and Boxes

This setup is part of the course "Machine Learning: Project" (KU Leuven, Faculty of engineering, Department of Computer Science, DTAI research group).

Installation

The example agent is designed for Python 3.6 and requires the websockets package. Dependencies can be installed using pip:

$ pip install -r requirements.txt

Start the game GUI

This program shows a web-based GUI to play the Dots and Boxes game. This supports human-human, agent-human and agent-agent combinations. It is a simple Javascript based application that runs entirely in the browser. You can start it by opening the file static/dotsandboxes.html in a browser. Or alternatively, you can start the app using the included simple server:

$ ./dotsandboxesserver.py 8080

The game can then be played by directing your browser to http://127.0.0.1:8080.

Start the agent client

This is the program that runs a game-playing agent. This application listens to websocket requests that communicate game information and sends back the next action it wants to play.

Starting the agent client is done using the following command:

$ ./dotsandboxesagent <port>

This starts a websocket on the given port that can receveive JSON messages.

The JSON messages given below should be handled by your agent. Take into account the maximal time allowed to reply.

Initiate the game

Both players get a message that a new game has started:

{
    "type": "start",
    "player": 1,
    "timelimit", 0.5,
    "grid": [5, 5],
    "game": "123456"
}

where player is the number assigned to this agent, timelimit is the time in seconds in which you need to send your action back to the server, and grid is the grid size in rows and columns.

If you are player 1, reply with the first action you want to perform:

{
    "type": "action",
    "location": [1, 1],
    "orientation": "v"
}

The field location is expressed as row and column (zero-based numbering) and orientation is either "v" (vertical) or "h" (horizontal).

Action in the game

When an action is played, the message sent to both players is:

{
    "type": "action",
    "game": "123456",
    "player": 1,
    "nextplayer": 2,
    "score": [0, 0],
    "location": [1, 1],
    "orientation": "v"
}

If it is your turn you should answer with a message that states your next move:

{
    "type": "action",
    "location": [1, 1],
    "orientation": "v"
}

Game end

When the game ends after an action, the message is slightly altered:

{
    "type": "end",
    "game": "123456",
    "player": 1,
    "nextplayer": 0,
    "score": [3, 1],
    "location": [1, 1],
    "orientation": "v",
    "winner": 1
}

The type field becomes end and a new field winner is set to the player that has won the game.

Contact information

About

Javascript Dots-and-Boxes application with support for game-playing agents.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published