Giter Club home page Giter Club logo

texas-holdem-botgame's Introduction

Texas hold'em Botgame

This is a server/client system for letting programmed bots play poker against each other.

QuickstartHost your own server.

git clone https://github.com/emilb/texas-holdem-botgame.git
cd texas-holdem-botgame
mvn clean install

cd server
mvn jetty:run

Open browser to: http://localhost:8080

General client instructions: http://poker.cygni.se/gettingstarted

Instructions for hacking a java-client: https://github.com/emilb/texas-holdem-botgame/tree/master/client-implementations/java-client

Instructions for hacking a nodejs-client: https://github.com/emilb/texas-holdem-botgame/tree/master/client-implementations/nodejs-client

texas-holdem-botgame's People

Contributors

emilb avatar jonasohrn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

texas-holdem-botgame's Issues

amIDealerPlayer & co doesn't compare by name in javascript client

amIDealerPlayer, amISmallBlindPlayer and amIBigBlindPlayer doesn't compare by the player name correctly.
Currently these functions are written like this:

        amIDealerPlayer : function() {
            return playerState.table.dealer === getMyPlayerName();
        },
        amISmallBlindPlayer : function() {
            return playerState.table.smallBlindPlayer === getMyPlayerName();
        },
        amIBigBlindPlayer : function() {
            return playerState.table.bigBlindPlayer === getMyPlayerName();
        },

They should be written like this:

        amIDealerPlayer : function() {
            return playerState.table.dealer.name === getMyPlayerName();
        },
        amISmallBlindPlayer : function() {
            return playerState.table.smallBlindPlayer.name === getMyPlayerName();
        },
        amIBigBlindPlayer : function() {
            return playerState.table.bigBlindPlayer.name === getMyPlayerName();
        },

Notice the added .name in each function.

Improve show games and server status

Some things to improve is:

-Each player bet could be shown, not only the total for each stage.
Table cell can show each bet value from top to down and the sum ($-char is unneccesary).
maybe prefix with '+' for raise (+30) and '=' for call (=50) ?
Small blind value can be marked with italic or in bold to indicate the small blind - the starter.

Better way of showing and selecting table to view. Show tables with start date/time, nr of players.

Server status:
Section "Players" should show room for each player, grouped with room and connect-time-order.

CurrentPlayState for JavaScript clients

Helper class that keeps track of the following:

CurrentPlayState

  • players (with current chip amount, and investment in pot)
  • chips in pot total
  • community cards
  • my cards
  • game state
  • hasPlayerFolded('emil') or playerEmil.hasFolded()
  • big/small blind amount
  • dealer player, bigblind player, small blind player

CurrentPlayState for Java clients

Helper class that keeps track of the following:

CurrentPlayState
- players (with current chip amount, and investment in pot)
- chips in pot total
- community cards
- my cards
- game state
- hasPlayerFolded('emil') or playerEmil.hasFolded()
- big/small blind amount
- dealer player, bigblind player, small blind player

Document how to host a programming session

Document how to deploy the server in Jetty, what startup parameters are available and common problems when letting a group of 30 people hack a robot during a session.

  • Jetty install and configuration in Ubuntu
  • Hosting a local maven repo
  • nginx configuration
  • how to distribute downloadable starting projects

Utility methods for clients

Let's help client developers a bit, for example with:

  • Calculate the best hand from current available cards
  • List of current players and their last known chip amount

Performance testing

Should be able to handle 40 connected players in training or tournament play

Disconnect or deactivate misbehaving player from server

Maybe add rule that disconnects or deactivates misbehaving player from server. For example if a player continues to respond too slow or with illegal Action. Now a slow player is left in the game only force-folded in each game bout. After say 10 times the player should be deactivated or disconnected.

Pot split

When showdown results in a draw the Pot should be split equally between winners.

All in bets

The Pot cannot handle "All in" situations.

Ability to store a tournament to persistent storage

After a tournament is run players are usually interested in looking at player stats and analyzing the game. Some function from the admin-gui to store the whole tournament for later analysis would be good. XML/JSON file or database.

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.