You are on page 1of 26

Гимназија „Јован Јовановић Змај“

Нови Сад

Матурски рад из Програмирања


Имплементација вештачке интелигенције у теорији
игара попут „connect four“

Професор ментор: Ученик:


Вукашин Деканић Теодора Кљаић IV-9

Нови Сад, јун 2021. год.


ПРЕДГОВОР
За ову тему матурског рада сам се одлучила првенствено због тога што волим
програмирање. Код програмирања највише волим то што увек могу да тестирам своје
границе и да постављам себи неке изазове. Овај рад је најзахтевнији који сам радила до
сада и подстакао ме је на то да идем још даље. Одабрала сам програмски језик Пајтон,
јер има најједноставнију синтаксу. За крај бих само желела да се захвалим професору
Вукашину Деканићу који ми је показао да програмирање није само куцање „сувог“
кода, већ и бескрајан број идеја и неограничена креативност и машта који доводе до тог
кода.

2
САДРЖАЈ

Страна
ПРЕДГОВОР.............................................................................................................................2
САДРЖАЈ..................................................................................................................................3
Увод............................................................................................................................................4
1. Вештачка интелигенција..................................................................................................5
2. Игра “connect four”............................................................................................................5
3. Основни програм...............................................................................................................6
3.1. Код основног дела игре.............................................................................................7

4. Имплементација вештачке интелигенције....................... ................................................10


4.1 Минимакс алгоритам у
коду.................................................................................11
5. Коначни
код...................................................................................................................... ..12
Закључак..................................................................................................................................23
Литература...............................................................................................................................24
Слике........................................................................................................................................24
БИОГРАФИЈА МАТУРАНТА...............................................................................................25

3
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

Увод
Пајтон је програмски језик високог нивоа опште намене. Подржава, у првом реду
императивни, објектно-оријентисан и функционални стил програмирања. Синтакса
језика Пајтон омогућава писање веома прегледних програма. Језик се брзо и лако учи.
Програми писани у Пајтон језику се најчешће интерпретирају.
Теорија игара се може дефинисати или као грана примењене математике која се
служи моделима за проучавање међусобног утицаја и дејства формалних импулсивних
структура или као грана економске теорије која се бави анализом процеса одлучивања
мањег броја актера.

4
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

1. Вештачка интелигенција
Вештачка интелигенција (AI) је подобласт рачунарства. Циљ истраживања вештачке
интелигенције је развијање програма (софтвера), који ће рачунарима омогућити да се
понашају на начин који би се могао окарактерисати интелигентним. Истраживања у
вештачкој интелигенцији су фокусирана на следеће компоненте интелигенције: учење,
размишљање, решавање проблема, перцепција и разумевање природног језика.
Вештачка интелигенција као појам у ширем смислу, означава капацитет једне
вештачке творевине за реализацију функција блиских карактеристикама људског
размишљања. Могућност развоја сличног пројекта је будила интересовање људи још од
античког доба; ипак, тек у другој половини двадесетог века таква могућност је добила
прве рачунаре којима се отворио пут за тај подухват.
Конструкција апликација за стварна окружења, довела је до потребе разматрања
аспеката као што су неизвесност, или непрецизност (који се такође јављају приликом
решавања проблема у играма). За решавање ових проблема примењиване су
пробабилистичке методе (теорија пробабилитета, или пробабилистичке мреже) и
развијали други формализми као дифузни скупови (дефинисани од Л. Задеха 1965.
године), или Демпстер-Шаферова теорија (творац теорије је А. Демпстер, 1968., са
значајним доприносом Г. Шафера 1976. године).

2. Игра “connect four”


„Connect four“ је друштвена игра у којој учествују два играча. Играчи имају таблу и
жетоне у две боје. Табла се састоји из рупа за жетоне у 6 редова и 7 колона (слика 1) .

Слика 1. изглед табле


Играчи наизменино убацују жетоне у таблу и они падају на дно, заузимајући најнижи
расположиви простор у колони. Дакле, за свој потез бирају само колону у коју убацују.
Циљ играча је да игра тако да споји четири своја жетона на табли један до другог, један
изнад другог или дијагонално.
Једно мерило сложености игре Connect four је број могућих позиција на табли за игре.
За класични Connect four који се игра на 6 високих, 7 широких мрежа, постоји
4,531,985,219,092 позиција за све плоче за игру насељене са 0 до 42 комада.

5
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

Постоји много варијација Connect four -а са различитим величинама плоче за игру,


деловима и / или правилима играња. Многе варијације су популарне у теорији игара и
истраживањима вештачке интелигенције, уместо на физичким таблама.

3. Основни програм
Основни програм који је база за имплементацију вештачке интелигенције није
фокус овог рада. Представља једноставну партију игре за два играча са једноставном
графиком користећи Пајтон модул за прављење видео-игара pygame (слика 2).

Слика 2. изглед програма


Играчи мишем померају свој „жетон“, односно круг у њиховој боји и бирају једну од
седам понуђених колона у коју ће да убаце. Када се партија заврши и један од играча
победи, на горњем делу прозора се прикаже „Player (број 1 или 2, у зависности од тога
ко је победио) Wins!“ (слика 3)

Слика 3. приказ победе

6
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

3.1 Код основног дела игре


import numpy as np
import pygame
import sys
import math

BLUE = (0,0,255)
BLACK = (0,0,0)
RED = (255,0,0)
YELLOW = (255,255,0)

ROW_COUNT = 6
COLUMN_COUNT = 7

def create_board():
board = np.zeros((ROW_COUNT,COLUMN_COUNT))
return board

def drop_piece(board, row, col, piece):


board[row][col] = piece

def is_valid_location(board, col):


return board[ROW_COUNT-1][col] == 0

def get_next_open_row(board, col):


for r in range(ROW_COUNT):
if board[r][col] == 0:
return r

def print_board(board):
print(np.flip(board, 0))

def winning_move(board, piece):


# гледа хоризонталну позицију за победу
for c in range(COLUMN_COUNT-3):
for r in range(ROW_COUNT):
if board[r][c] == piece and board[r][c+1] == piece and board[r][c+2] == piece and board[r]
[c+3] == piece:
return True

# гледа вертикалну позицију за победу


for c in range(COLUMN_COUNT):
for r in range(ROW_COUNT-3):
if board[r][c] == piece and board[r+1][c] == piece and board[r+2][c] == piece and board[r+3]
[c] == piece:
return True

# гледа позитивну дијагоналу


for c in range(COLUMN_COUNT-3):
for r in range(ROW_COUNT-3):

7
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

if board[r][c] == piece and board[r+1][c+1] == piece and board[r+2][c+2] == piece and


board[r+3][c+3] == piece:
return True

# гледа негативну дијагоналу


for c in range(COLUMN_COUNT-3):
for r in range(3, ROW_COUNT):
if board[r][c] == piece and board[r-1][c+1] == piece and board[r-2][c+2] == piece and
board[r-3][c+3] == piece:
return True

def draw_board(board):
for c in range(COLUMN_COUNT):
for r in range(ROW_COUNT):
pygame.draw.rect(screen, BLUE, (c*SQUARESIZE, r*SQUARESIZE+SQUARESIZE,
SQUARESIZE, SQUARESIZE))
pygame.draw.circle(screen, BLACK, (int(c*SQUARESIZE+SQUARESIZE/2),
int(r*SQUARESIZE+SQUARESIZE+SQUARESIZE/2)), RADIUS)

for c in range(COLUMN_COUNT):
for r in range(ROW_COUNT):
if board[r][c] == 1:
pygame.draw.circle(screen, RED, (int(c*SQUARESIZE+SQUARESIZE/2), height-
int(r*SQUARESIZE+SQUARESIZE/2)), RADIUS)
elif board[r][c] == 2:
pygame.draw.circle(screen, YELLOW, (int(c*SQUARESIZE+SQUARESIZE/2), height-
int(r*SQUARESIZE+SQUARESIZE/2)), RADIUS)
pygame.display.update()

board = create_board()
print_board(board)
game_over = False
turn = 0

pygame.init()

SQUARESIZE = 100

width = COLUMN_COUNT * SQUARESIZE


height = (ROW_COUNT+1) * SQUARESIZE

size = (width, height)

RADIUS = int(SQUARESIZE/2 - 5)

screen = pygame.display.set_mode(size)
draw_board(board)
pygame.display.update()

myfont = pygame.font.SysFont("monospace", 75)

8
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

while not game_over:

for event in pygame.event.get():


if event.type == pygame.QUIT:
sys.exit()

if event.type == pygame.MOUSEMOTION:
pygame.draw.rect(screen, BLACK, (0,0, width, SQUARESIZE))
posx = event.pos[0]
if turn == 0:
pygame.draw.circle(screen, RED, (posx, int(SQUARESIZE/2)), RADIUS)
else:
pygame.draw.circle(screen, YELLOW, (posx, int(SQUARESIZE/2)), RADIUS)
pygame.display.update()

if event.type == pygame.MOUSEBUTTONDOWN:
pygame.draw.rect(screen, BLACK, (0,0, width, SQUARESIZE))
#print(event.pos)
# упит да унесе први играч
if turn == 0:
posx = event.pos[0]
col = int(math.floor(posx/SQUARESIZE))

if is_valid_location(board, col):
row = get_next_open_row(board, col)
drop_piece(board, row, col, 1)

if winning_move(board, 1):
label = myfont.render("Player 1 wins!!", 1, RED)
screen.blit(label, (40,10))
game_over = True

# # упит да унесе други играч


else:
posx = event.pos[0]
col = int(math.floor(posx/SQUARESIZE))

if is_valid_location(board, col):
row = get_next_open_row(board, col)
drop_piece(board, row, col, 2)

if winning_move(board, 2):
label = myfont.render("Player 2 wins!!", 1, YELLOW)
screen.blit(label, (40,10))
game_over = True

print_board(board)
draw_board(board)

9
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

turn += 1
turn = turn % 2

if game_over:
pygame.time.wait(3000)

4. Имплементација вештачке интелигенције


У игрицама попут ове, вештачка интелигенција се имплементира преко Минимакс
(minimax) алгоритма. Минимакс је правило одлука који се користи у теорији
одлучивања, у теорији игара, статистици и филозофији за минимизирање могућих
губитака у најгорим случајевима(највећи губитак). Алтернативно, може се посматрати
као максимизирање минималног добитка.

Слика 4. псеудокод минимакс алгоритма за дубину


Минимакс алгоритам је ограничен на то да може само четири корака унапред да
„види“, због ограничености над рачунарских ресурса.
Свака игра може да се представи помоћу стабла претраживања игре. У њему могу бити
две врсте чворова: МИН и МАКС чворови. МАКС чворови су чворови који
представљају потез који можемо направити. Приказани су као троугли окренути ка горе
(слика 4) . Циљ ових чворова је максимирање вредности подстабла испод чвора.
Вредност МАКС чвора је једнака са вредношћу подређене јединице с максималном
вредношћу. МИН чворови су они који показују које потезе може наш противник да
направи. Приказани су као троуглови окренути ка доле (слика 4). Циљ ових чворова је
минимизирање вредности подстабла испод чвора. Претпоставимо да имамо осам
почетних стања са вредностима (слика 4). У почетку узимамо максимум сваког од два
чвора. Од 3 и 15 налазимо максимум (слика 4). Ову максималну вредност стављамо у
МАКС чвор. Једном када је МАКС циклус завршен, узимамо МИН из МАКС чворова.
Од 15 и 10, узимамо 10 (слика 4). Ово се понавља док се не постигне/финализира
вредност.

10
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

Слика 4. илустрација стабла минимакс алгоритма

4.1 Минимакс алгоритам у коду

Слика 6. први део минимакс кода

11
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

Слика 7. други део минимакс кода


Дефинисана је нова функција is_terminal_node (слика 6) која одређује да ли ми
побеђујемо, противник или је табла пуна и нема више потеза. Valid locations (слика 6)се
односи на доступна места на табли за нови потез. У блоку if петљи на слици 6 враћају
се поени за те случајеве. У функцији максимизације играча, држимо се тога да је број
поена што мањи. Ту постављамо као вредност минус бесконачно. Након тога се врши
рекурзија ради добијања новог резултата.
Овде користимо нешто што се зове Alpha-beta pruning, односно Алфа-бета претрага. То
је алгоритам за претраживање који покушава да смањи број чворова који су дати од
стране минимакс алгоритма у стаблу претраге. Овај алгоритам се најчешће користи у
играма са два ирача, попут ове или шаха.
У функцји минимализације играча (слика 7), поене стављамо да су што виши и
постављамо као вредност плус бесконачно. Радимо исту рекурзију као на слици 6, само
у са супротним вредностим, где је почетна цифра позитивна, а све се односи на играча,
док се при максимизације све односило на AI.
Оно што ове две функције враћају нам омогућава да се пребацујемо са једне на другу
изнова и изнова.

5. Коначни код
import numpy as np
import random
import pygame
import sys
import math

BLUE = (0,0,255)
BLACK = (0,0,0)
RED = (255,0,0)
YELLOW = (255,255,0)

ROW_COUNT = 6

12
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

COLUMN_COUNT = 7

PLAYER = 0
AI = 1

EMPTY = 0
PLAYER_PIECE = 1
AI_PIECE = 2

WINDOW_LENGTH = 4

def create_board():
board = np.zeros((ROW_COUNT,COLUMN_COUNT))
return board

def drop_piece(board, row, col, piece):


board[row][col] = piece

def is_valid_location(board, col):


return board[ROW_COUNT-1][col] == 0

def get_next_open_row(board, col):


for r in range(ROW_COUNT):
if board[r][col] == 0:
return r

def print_board(board):
print(np.flip(board, 0))

def winning_move(board, piece):


# провера хоризонталих локација за победу

13
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

for c in range(COLUMN_COUNT-3):
for r in range(ROW_COUNT):
if board[r][c] == piece and board[r][c+1] == piece and board[r][c+2] == piece and
board[r][c+3] == piece:
return True

# провера вертикалних локација за победу


for c in range(COLUMN_COUNT):
for r in range(ROW_COUNT-3):
if board[r][c] == piece and board[r+1][c] == piece and board[r+2][c] == piece and
board[r+3][c] == piece:
return True

# провера позитивне дијагонале


for c in range(COLUMN_COUNT-3):
for r in range(ROW_COUNT-3):
if board[r][c] == piece and board[r+1][c+1] == piece and board[r+2][c+2] == piece and
board[r+3][c+3] == piece:
return True

# провера негативне дијагонале


for c in range(COLUMN_COUNT-3):
for r in range(3, ROW_COUNT):
if board[r][c] == piece and board[r-1][c+1] == piece and board[r-2][c+2] == piece and
board[r-3][c+3] == piece:
return True

def evaluate_window(window, piece):


score = 0
opp_piece = PLAYER_PIECE
if piece == PLAYER_PIECE:
opp_piece = AI_PIECE

14
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

if window.count(piece) == 4:
score += 100
elif window.count(piece) == 3 and window.count(EMPTY) == 1:
score += 5
elif window.count(piece) == 2 and window.count(EMPTY) == 2:
score += 2

if window.count(opp_piece) == 3 and window.count(EMPTY) == 1:


score -= 4

return score

def score_position(board, piece):


score = 0

## средња колона поени


center_array = [int(i) for i in list(board[:, COLUMN_COUNT//2])]
center_count = center_array.count(piece)
score += center_count * 3

## хоризонтални поени
for r in range(ROW_COUNT):
row_array = [int(i) for i in list(board[r,:])]
for c in range(COLUMN_COUNT-3):
window = row_array[c:c+WINDOW_LENGTH]
score += evaluate_window(window, piece)

## вертикални поени
for c in range(COLUMN_COUNT):
col_array = [int(i) for i in list(board[:,c])]

15
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

for r in range(ROW_COUNT-3):
window = col_array[r:r+WINDOW_LENGTH]
score += evaluate_window(window, piece)

## поени позитивне дијагонале


for r in range(ROW_COUNT-3):
for c in range(COLUMN_COUNT-3):
window = [board[r+i][c+i] for i in range(WINDOW_LENGTH)]
score += evaluate_window(window, piece)

for r in range(ROW_COUNT-3):
for c in range(COLUMN_COUNT-3):
window = [board[r+3-i][c+i] for i in range(WINDOW_LENGTH)]
score += evaluate_window(window, piece)

return score

def is_terminal_node(board):
return winning_move(board, PLAYER_PIECE) or winning_move(board, AI_PIECE) or
len(get_valid_locations(board)) == 0

def minimax(board, depth, alpha, beta, maximizingPlayer):


valid_locations = get_valid_locations(board)
is_terminal = is_terminal_node(board)
if depth == 0 or is_terminal:
if is_terminal:
if winning_move(board, AI_PIECE):
return (None, 100000000000000)
elif winning_move(board, PLAYER_PIECE):
return (None, -10000000000000)
else: # крај игре, нема више потеза
return (None, 0)

16
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

else: # дубина је нула


return (None, score_position(board, AI_PIECE))
if maximizingPlayer:
value = -math.inf
column = random.choice(valid_locations)
for col in valid_locations:
row = get_next_open_row(board, col)
b_copy = board.copy()
drop_piece(b_copy, row, col, AI_PIECE)
new_score = minimax(b_copy, depth-1, alpha, beta, False)[1]
if new_score > value:
value = new_score
column = col
alpha = max(alpha, value)
if alpha >= beta:
break
return column, value

else: # минимизирање играча


value = math.inf
column = random.choice(valid_locations)
for col in valid_locations:
row = get_next_open_row(board, col)
b_copy = board.copy()
drop_piece(b_copy, row, col, PLAYER_PIECE)
new_score = minimax(b_copy, depth-1, alpha, beta, True)[1]
if new_score < value:
value = new_score
column = col
beta = min(beta, value)
if alpha >= beta:

17
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

break
return column, value

def get_valid_locations(board):
valid_locations = []
for col in range(COLUMN_COUNT):
if is_valid_location(board, col):
valid_locations.append(col)
return valid_locations

def pick_best_move(board, piece):

valid_locations = get_valid_locations(board)
best_score = -10000
best_col = random.choice(valid_locations)
for col in valid_locations:
row = get_next_open_row(board, col)
temp_board = board.copy()
drop_piece(temp_board, row, col, piece)
score = score_position(temp_board, piece)
if score > best_score:
best_score = score
best_col = col

return best_col

def draw_board(board):
for c in range(COLUMN_COUNT):
for r in range(ROW_COUNT):
pygame.draw.rect(screen, BLUE, (c*SQUARESIZE, r*SQUARESIZE+SQUARESIZE,
SQUARESIZE, SQUARESIZE))

18
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

pygame.draw.circle(screen, BLACK, (int(c*SQUARESIZE+SQUARESIZE/2),


int(r*SQUARESIZE+SQUARESIZE+SQUARESIZE/2)), RADIUS)

for c in range(COLUMN_COUNT):
for r in range(ROW_COUNT):
if board[r][c] == PLAYER_PIECE:
pygame.draw.circle(screen, RED, (int(c*SQUARESIZE+SQUARESIZE/2), height-
int(r*SQUARESIZE+SQUARESIZE/2)), RADIUS)
elif board[r][c] == AI_PIECE:
pygame.draw.circle(screen, YELLOW, (int(c*SQUARESIZE+SQUARESIZE/2), height-
int(r*SQUARESIZE+SQUARESIZE/2)), RADIUS)
pygame.display.update()

board = create_board()
print_board(board)
game_over = False

pygame.init()

SQUARESIZE = 100

width = COLUMN_COUNT * SQUARESIZE


height = (ROW_COUNT+1) * SQUARESIZE

size = (width, height)

RADIUS = int(SQUARESIZE/2 - 5)

screen = pygame.display.set_mode(size)
draw_board(board)
pygame.display.update()

19
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

myfont = pygame.font.SysFont("monospace", 75)

turn = random.randint(PLAYER, AI)

while not game_over:

for event in pygame.event.get():


if event.type == pygame.QUIT:
sys.exit()

if event.type == pygame.MOUSEMOTION:
pygame.draw.rect(screen, BLACK, (0,0, width, SQUARESIZE))
posx = event.pos[0]
if turn == PLAYER:
pygame.draw.circle(screen, RED, (posx, int(SQUARESIZE/2)), RADIUS)

pygame.display.update()

if event.type == pygame.MOUSEBUTTONDOWN:
pygame.draw.rect(screen, BLACK, (0,0, width, SQUARESIZE))
#print(event.pos)
# упит за унос играча 1
if turn == PLAYER:
posx = event.pos[0]
col = int(math.floor(posx/SQUARESIZE))

if is_valid_location(board, col):
row = get_next_open_row(board, col)
drop_piece(board, row, col, PLAYER_PIECE)

if winning_move(board, PLAYER_PIECE):

20
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

label = myfont.render("Player 1 wins!!", 1, RED)


screen.blit(label, (40,10))
game_over = True

turn += 1
turn = turn % 2

print_board(board)
draw_board(board)

# # упит за унос играча 2


if turn == AI and not game_over:

#col = random.randint(0, COLUMN_COUNT-1)


#col = pick_best_move(board, AI_PIECE)
col, minimax_score = minimax(board, 5, -math.inf, math.inf, True)

if is_valid_location(board, col):
#pygame.time.wait(500)
row = get_next_open_row(board, col)
drop_piece(board, row, col, AI_PIECE)

if winning_move(board, AI_PIECE):
label = myfont.render("Player 2 wins!!", 1, YELLOW)
screen.blit(label, (40,10))
game_over = True

print_board(board)
draw_board(board)

21
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

turn += 1
turn = turn % 2

if game_over:
pygame.time.wait(3000)

22
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

Закључак
Приказани програм можда није импресиван као све игрице које су изашле
претходних година, али садржи једноставан алгоритам који је донео револуцију у свет
технологије и који га је умногоме улепшао. Теорија игара је веома комплексна наука и
сада сам то осетила на својој кожи. Уз овај рад сам схватила које су то све заблуде
везане за појам вештачке интелигенције, јер је тешко спровести је у програму, а камоли
направити је мало комплекснијом, тако да још дуго нас неће заменити роботи!

23
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

Литература

[1] Wilson , Keil The MIT Encyclopedia of the Cognitive Sciences - одредница AI and
Education
[2] Стојановић, Божо Теорија игара: елементи и примена (Службени гласник
и Институт за европске студије, 2005)
[3] Osborne, Martin J., and Ariel Rubinstein. A Course in Game Theory. Cambridge, MA:
MIT, 1994. Print
Литература са интернета:

[4]  A City College Toy Story. CUNY Matters. City University of New York.
http://www1.cuny.edu/events/cunymatters/2001_winter/backmatter.htm (зима 2001)
[5] https://kra.lc/projects/gamevisual/launch.php

Слике
Слика 1. Изглед табле...............................................................................................................5
Слика 2. Изглед програма........................................................................................................6
Слика 3. Приказ победе............................................................................................................6
Слика 4. Илустрација стабла минимакс
алгоритма..............................................................11
Слика 5.Први део минимакс кода..........................................................................................11
Слика 6.Други део минимакс
кода.........................................................................................12

24
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

БИОГРАФИЈА МАТУРАНТА
Теодора Кљаић је рођена 30.6.2002. у Смедеревској Паланци. Похађала је основну
школу „Светозар Марковић-Тоза“ првих шест разреда, а потом је прешла у седмом
разреду при Гимназији „Јован Јовановић Змај“. У седмом разреду је објавила своју
збирку песама „Пјесме из снова“. У основној школи је била носилац Вукове дипломе, а
сад ни близу. 2017. године уписује редовно први разред Гимназије, на смеру „обдарени
ученици у математичкој гимназији“, упркос томе што јој математика не иде. Планира
да упише анимацију на ФТН-у.
Фотографија матуранта

25
Имплементација вештачке интелигенције
у теорији игара попут „connect four“ Теодора Кљаић IV-9

Датум предаје матурског рада: ______________

Комисија:
Председник _______________
Испитивач _______________
Члан _______________

Коментар:

Датум одбране: _____________ Оцена__________ (___)

26

You might also like