Domineering is student project done for Artificial Intelligence subject at Faculty of Electronic Engineering, University of Niš.
-> Emilija Ćojbašić, 18026
-> Matija Špeletić, 18043
-> Đorđe Antić, 17544
Domineering (also called Stop-Gate or Crosscram) is a mathematical game that can be played on any collection of squares on a sheet of graph paper. For example, it can be played on a 6×6 square, a rectangle, an entirely irregular polyomino, or a combination of any number of such components. Two players have a collection of dominoes which they place on the grid in turn, covering up squares. One player places tiles vertically, while the other places them horizontally. (Traditionally, these players are called "Left" and "Right", respectively, or "V" and "H". Both conventions are used in this article.) As in most games in combinatorial game theory, the first player who cannot move loses. [1]
-> Board dimensions: mxn
-> Tiles dimensions: 2x1
-> Two players: X and O
-> Player that can't place tile on the board loses
-> Human vs Computer (it is optional who plays first) [2]
-> Board is initially empty
-> Players play alternately
-> First player can place tiles only vertically and another one horizontally
-> Tiles can't overlap or peek out of the board [2]
[1] https://en.wikipedia.org/wiki/Domineering
[2] Assignment description
Clone this repository via
git clone https://github.com/djoleant/Domineering.git
cd Domineering
Install requirements
pip install pygame
Start the game
TODO: define main file
def initialize(size_n, size_m, first)
Funkcija priprema tablu za novu partiju igre. Funkciji se prosleđuju parametri koji se odnose
na veličinu table, kao i parametar koji se odnosi na prvog igrača.
def check_winner()
Funkcija proverava da li je neki od igrača pobedio tj. da li je došlo do kraja igre. Ona
proverava da li se igra nastavlja. Ona vraća N ako niko nije pobedio, X ako je X pobedio i O
ako je O pobedio.
def is_valid(x, y, dir)
Funkcija proverava da li je potez ispravan. Prosleđuju joj se parametri koordinata kao i smer
igranja. Ako je potez validan vraća True , a u suprotnom False.
def play_move(x, y)
Funkcija postavlja na tablu za igru domine uz prethodnu proveru da li je potez validan.
def print_board()
Funkcija prikazuje aktuelno stanje table za igru tj. štampa njenu grafčku reprezentaciju.
def make_move(x, y, dir)
Funkcija koja na osnovu zadatog poteza i zadatog stanje igre (table) formiraju novo stanje igre
(table)
def get_valid_moves()
Funkcija koja na osnovu zadatog igrača na potezu i zadatog stanje igre (table) formiraju sva
moguća stanje igre (sve moguće table), korišćenjem funkcija iz prethodne stavke
def play_game(size_n, size_m, first)
Glavna funkcija koja pozivanjem prethodno implementiranih funkcija omogućava
odigravanje partije igre.
def heuristic(state, move)
Funkcija koja procenjuje valjanost poteza u igri prosleđenog kroz parametar move.
def minmax(state, depth, my_move, alpha, beta)
Funkcija koja realizuje min-max algoritam pozivanjem max_value i min_value funkcija.
def min_value(state, depth, alpha, beta, move)
Funkcija koja određuje minimalno stanje u igri. Ova funkcija zajedno sa funkcijom max_value čini minmax algoritam.
def max_value(state, depth, alpha, beta, move)
Funkcija koja određuje maksimalno stanje u igri. Ova funkcija zajedno sa funkcijom min_value čini minmax algoritam.