Coder Social home page Coder Social logo

wannesm / dotsandboxes Goto Github PK

View Code? Open in Web Editor NEW
22.0 9.0 5.0 707 KB

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

Home Page: https://dtai.cs.kuleuven.be

Shell 0.08% Python 7.82% HTML 2.60% JavaScript 89.47% CSS 0.03%
game javascript dots-and-boxes agent machine-learning

dotsandboxes's Introduction

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

dotsandboxes's People

Contributors

arnedb avatar probberechts avatar wannesm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.