Giter VIP home page Giter VIP logo

othello-pygame's Introduction

Othello-Pygame

  • This is an Othello Game with heuristic search MiniMax Algorithm with Alpha-beta pruning.

Othello

  • Othello is a board game derived from the original game Reversi. The game board itself is an 8x8 square grid. Each player has 32 disk-like black and white pieces- each playing choosing a color to start the game. The initial starting position includes 4 pieces in the middle 4 squares of the board- 2 black and 2 white pieces

Minimax Algorithm

  • This algorithm is considered the heart for many algorithms which have been used for a SumZero game. In 1928, the theorem of this algorithm was published by John von Neumann[TL59]. Neumann is cited as saying ”There could be no theory of games .. without that theorem .. I thought there was nothing worth publishing until the Minimax Theorem was proved[Cas96].” Minimax algorithm is for fully observable and deterministic games. These games include classic board games such as chess, checkers, tic tac toe, and go.

Alpha-beta Pruning

  • Minimax algorithm searches entire nodes, even if it is obvious that some nodes of the tree can be pruned ignored. There is an optimization which improves MiniMax algorithm is called AlphaBeta-Pruning algorithm. Instead of searching entire tree, Alpha-Beta-Pruning is a technique for pruning nodes that are not needed to evaluate the possible moves. This will save a lot of searching time which allow increasing search depth. In 1961, McCarthy proposed Alpha-Beta during the Dartmouth Conference[Kot04].

Heuristic Function

  • Stability: a measure of a coin is a quantitative representation of how vulnerable it is to being flanked. Coins can be classified as belonging to one of three categories: (i) stable, (ii) semi-stable and (iii) unstable.

    Stable coins are coins which cannot be flanked at any point of time in the game from the given state. Unstable coins are those that could be flanked in the very next move. Semi-stable coins are those that could potentially be flanked at some point in the future, but they do not face the danger of being flanked immediately in the next move. Corners are always stable in nature, and by building upon corners, more coins become stable in the region.

    Weights are associated to each of the three categories, and summed to give rise to a final stability value for the player. Typical weights could be 1 for stable coins, -1 for unstable coins and 0 for semi-stable coins.

References

othello-pygame's People

Contributors

hyejiea avatar

Watchers

 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.