package Ġnet . z om is . games . server 2 . ais Ċ Ċ import Ġnet . z om is . games . dsl . impl . Game Controller Context Ċ import Ġnet . z om is . games . dsl . impl . Game Ċ import Ġnet . z om is . games . sc or ers . Sc orer Controller Ċ Ċ data Ġclass ĠAI Analyze Result ( val Ġscores : ĠList < Action Analyze > ?, Ġval Ġhe uristic : ĠDouble ?) Ċ data Ġclass ĠAction Analyze ( val Ġmove Type : ĠString , Ġval Ġparameter : ĠAny , Ġval Ġscore : ĠDouble ) Ċ Ċ class ĠAI Analyze Ġ{ ĊĠĠĠ Ġfun Ġscoring ( game : ĠGame < Any >, Ġscoring : ĠS cor er Controller < Any >, Ġplayer Index : ĠInt ): ĠAI Analyze Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscores Ġ= Ġscoring . score ( Game Controller Context ( game , Ġplayer Index )) ĊĠĠĠĠĠĠĠ Ġval Ġscore Results Ġ= Ġscores . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Analyze ( it . first . action . action Type , Ġit . first . action . parameter , Ġit . second Ġ?: Ġ 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAI Analyze Result ( score Results , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġalpha Beta ( game : ĠGame < Any >, Ġalpha Beta Config : ĠAI Alpha Beta Config < Any >, Ġplayer Index : ĠInt ): ĠAI Analyze Result ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġalpha Beta Config . evaluate Actions ( game , Ġplayer Index ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Analyze ( it . first . action Type , Ġit . first . parameter , Ġit . second ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhe uristic Ġ= Ġalpha Beta Config . evaluate State ( game , Ġplayer Index ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAI Analyze Result ( options , Ġhe uristic ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ