ç æ°ãæ²»ããŸã
å»è ãšããŠç§ãä¿¡ããŠ
ç§ã®è¬ã¯ããªããå©ããŸãã
ããªã¹ã¿ã³ã®ãã³ã-ã å¹²ãèã®äžã®ç¬ ã
åã®èšäºã§ ã Dagaz move generatorã®ä»çµã¿ã«ã€ããŠå€ãã®ããšã話ããŸããã ããããç§ã¯ã«ãŒãã銬ã®åã«çœ®ããŸããã ç§ã®æã詳现ãªèª¬æã¯ãäž»ãªãã®ãç解ããã®ã«ãŸã£ãã圹ç«ã¡ãŸãã-ãããã©ã®ããã«äœ¿çšã§ãããã å®éãããã¯ç°¡åã§ãã
ã©ããç°¡å
移åãžã§ãã¬ãŒã¿ãŒã䜿çšããããã«ããã®ä»çµã¿ãå®å šã«ç解ããå¿ èŠã¯ãããŸããã 3ã€ã®ã¯ã©ã¹ã®ã¿ã®ç®çãç解ããããšãéèŠã§ãã ãããŠæåã®ãã®ã¯ZrfBoardã§ãã ååããæãããªããã«ããã®ã¯ã©ã¹ã¯ããŒããè¡šããŸãã
æ£ããç解ããã
ããŒãã®ãµã€ãºã圢ç¶ã«ã€ããŠã¯è©±ããŠããªãã 蚱容ãããäœçœ®ïŒããŒããã£ãŒã«ãïŒããã³ãããã®é¢ä¿ïŒæ¹åïŒã«é¢ãããã¹ãŠã®æ
å ±ã¯ã ZrfDesignã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«ä¿åãããã²ãŒã äžã«å€æŽãããŸããïŒ ããã«ã€ããŠã¯ä»¥åã® èšäºã§ããããæžããã®ã§ãç¹°ãè¿ããããããŸããã ã²ãŒã ãã¶ã€ã³ã¯ãã®èšäºã®äž»é¡ã§ã¯ãããŸããã ãããããã©ãã¯ããã¯ã¹ããšèŠãªãããšãã§ããŸãã
ZrfBoardã«ã¯ãç¹å®ã®åãã®éå§æã®ã²ãŒã ã®ç¶æ ã®èª¬æãå«ãŸããŠããŸãã ã»ãšãã©ã®å Žåãããã¯ããŒãã«ãã£ã®ã¥ã¢ãé 眮ããããšã«é¢ããæ å ±ã§ãã å€æŽããã«ã¯ã2ã€ã®æ¹æ³ã§ååã§ãã
- getPieceïŒäœçœ®ïŒ -æå®ãããäœçœ®ã«é 眮ãããå³ã«é¢ããæ å ±ãå«ãZrfPieceã¯ã©ã¹ã®ãªããžã§ã¯ããè¿ããŸãïŒãã®äœçœ®ã空ã®å Žåã¯null ïŒ
- setPieceïŒpositionãpieceïŒ -æå®ãããäœçœ®ã«å³ãé 眮ããŸãïŒåã®å Žåãšåæ§ã«ãå³ã®ä»£ããã«nullãæž¡ãããšãã§ããŸãïŒ
ãã¹ãŠã®äœçœ®ã¯ãåã«æŽæ°å€ïŒå€§ããªç·åœ¢é åã®ã€ã³ããã¯ã¹ïŒã§ãã ãã䜿ãæ £ããæååè¡šçŸã«å€æããã«ã¯ïŒããã³ãã®éïŒãã°ããŒãã«é¢æ°Model.Game.posToStringããã³Model.Game.stringToPosã䜿çšãããŸãã å³ïŒ ZrfPiece ïŒã®èª¬æã¯ããå°ãè€éã§ãïŒ
ã³ã³ã¹ãã©ã¯ã¿ãŒ
function ZrfPiece(type, player) { this.type = type; this.player = player; }
å³ã®ã¿ã€ããšãã®ææè ïŒäž¡æ¹ãšãæŽæ°å€ïŒã ãããã¯äžå€ã®å€ã§ããããšãç解ããããšãéèŠã§ãã ZrfPieceã®åãã€ã³ã¹ã¿ã³ã¹ã¯ãããŒãã®è€æ°ã®äœçœ®ã§åæã«äœ¿çšã§ãã ZrfBoardã®ããŸããŸãªã³ããŒã®äœçœ®ã§ãããç°ãªãæç¹ã§ã®ã²ãŒã ã®ç¶æ ãèšè¿°ã§ããŸãã
ãããã圢ç¶ãå€æŽããå¿
èŠãããå Žåã¯ã©ãã§ããããïŒ
ããšãã°ããã§ã¹ã®ããŒã³ãæåŸã®æ°Žå¹³ã«å°éãããšã4ã€ã®ããŒã¹ã®ããããã«ãªãã ãªããŒã·ã®ãããªã²ãŒã ã§ã¯ãããŒã¹ã®ææè
ãå€ããå¯èœæ§ããããŸãã 解決çã¯æããã§ããå®éãå³ã®ãç¶æ
ããå€æŽããã¡ãœããã¯ãã¯ã©ã¹ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãè¿ãã ãã§ãå€ããªããžã§ã¯ãã¯å€æŽãããŸããã
ç§ã¯ããã«æ³šæãæããããŠããããã«èŠãããããããŸããããå®éã«ã¯éèŠã§ãã å®éãã¿ã€ããšææè ã«é¢ããæ å ±ã«å ããŠã ZrfPieceã¯ã©ã¹ã«ã¯è¿œå ã®æ°å€ïŒå³ã®å±æ§ïŒãå«ããããšãã§ããŸãã å±æ§ã䜿çšããæãç°¡åãªäŸã¯ããã§ã¹ã§ã®ãã£ã¹ãã§ãã ãã£ã®ã¥ã¢ã以åã«ç§»åãããã£ã¹ãã£ã³ã°ã«é¢äžã§ããªããšããå åã¯ããã®å±æ§ã®1ã€ã«æ ŒçŽã§ããŸãã å±æ§ã®å€ãå€æŽãããšãæ¢åã®ã€ã³ã¹ã¿ã³ã¹ãå€æŽããã«ã ZrfPieceã®æ°ããã€ã³ã¹ã¿ã³ã¹ãçæãããŸãã
圢ãå€ãã
ZrfPiece.prototype.promote = function(type) { return new ZrfPiece(type, this.player); }
ç§ã¯ããã«æ³šæãæããããŠããããã«èŠãããããããŸããããå®éã«ã¯éèŠã§ãã å®éãã¿ã€ããšææè ã«é¢ããæ å ±ã«å ããŠã ZrfPieceã¯ã©ã¹ã«ã¯è¿œå ã®æ°å€ïŒå³ã®å±æ§ïŒãå«ããããšãã§ããŸãã å±æ§ã䜿çšããæãç°¡åãªäŸã¯ããã§ã¹ã§ã®ãã£ã¹ãã§ãã ãã£ã®ã¥ã¢ã以åã«ç§»åãããã£ã¹ãã£ã³ã°ã«é¢äžã§ããªããšããå åã¯ããã®å±æ§ã®1ã€ã«æ ŒçŽã§ããŸãã å±æ§ã®å€ãå€æŽãããšãæ¢åã®ã€ã³ã¹ã¿ã³ã¹ãå€æŽããã«ã ZrfPieceã®æ°ããã€ã³ã¹ã¿ã³ã¹ãçæãããŸãã
ZrfBoardã䜿çšããã«ã¯ãããã«2ã€ã®æ¹æ³ãç¥ã£ãŠããå¿ èŠããããŸãã
- generateïŒïŒ -çŸåšã®äœçœ®ããå©çšå¯èœãªãã¹ãŠã®åãã®é åãè¿ããŸã
- é©çšïŒç§»åïŒ -éžæãã移åãçŸåšã®äœçœ®ã«é©çšããŸã
setPieceã¡ãœããã䜿çšããŠZrfBoardã®ç¶æ ãå€æŽã§ããŸããããããçŽæ¥è¡ãã¹ãã§ã¯ãããŸããã 代ããã«ã移åïŒå¯èœãªãã¹ãŠã®ãªã¹ãã®1ã€ïŒãéžæãã applyã¡ãœããã䜿çšããŠããŒãã®ç¶æ ã«é©çšããå¿ èŠããããŸããããã«ããã ZrfPieceãå€æŽããå Žåã®ããã«ããªããžã§ã¯ãã®æ°ããã€ã³ã¹ã¿ã³ã¹ãè¿ãããŸãã
ãã¡ãããåãã¯ãã¬ã€ã€ãŒã«çµã³ã€ããŠããŸã
ZrfBoardã®åã€ã³ã¹ã¿ã³ã¹ã¯ãææè
ïŒæ¬¡ã®ç§»åãå®è¡ãããã¬ã€ã€ãŒïŒã«é¢é£ä»ããããŠããŸãã ã·ã§ã€ãã®ç§»åã«å ããŠã applyã¡ãœããã¯ãã¬ãŒã€ãŒãåãæ¿ããŸãã ããã¯å¿
ããã2人ã®ãã¬ãŒã€ãŒã®åçŽãªäº€ä»£ã§ã¯ãããŸããã Joclyã®æããªå¶éã®æ代ã¯éå»ã®ãã®ã§ãã
ZrfBoardã䜿çšããããã«ç¥ã£ãŠããå¿ èŠãããã®ã¯ããã ãã§ãã ã²ãŒã ã®ãã¶ã€ã³ãšé¢é£ãã移åçæã¢ã«ãŽãªãºã ã¯éåžžã«è€éã«ãªãå¯èœæ§ããããŸãããäœãå€ãããŸããã generateã¡ãœããã䜿çšããŠå©çšå¯èœãªãã¹ãŠã®ã ãŒãã圢æãã applyã¡ãœããã䜿çšããŠéžæããã ãŒããé©çšããŸã ïŒæ°ããç¶æ ãååŸããŸãïŒã ããŒãã®åæç¶æ ã¯ãã°ããŒãã«é¢æ°Model.Game.getInitBoardã䜿çšããŠååŸã§ããŸãã
ããããªãã§äœãããŸãã
åãã¯ãããã²ãŒã ã®ç¶æ ãå¥ã®ã²ãŒã ã®ç¶æ ã«å€æãããã®ã§ãã åé¡ã¯ãåãããã€ãæã£ãã»ã©åçŽã§ã¯ãªãããšã§ãã Shatrange ïŒ Chessã®çŽåïŒã§ãåãã®å®å šãªèª¬æãåŸãã«ã¯ãéå§äœçœ®ãšçµäºäœçœ®ãèšå®ããã ãã§ååã§ãã åãåãããšããå¿ èŠãããŸããã ããŒã³ã¯åžžã«ã¯ã€ãŒã³ã«å€ããããã£ããã£ã¯åžžã«ããã§ã¹ãã«ãªããŸãã ãããããã§ã¹èªäœã®ãã¹ãŠã¯ããã»ã©åçŽã§ã¯ãããŸããïŒ
ãããè¡ãééã£ããã£ãŒã«ãã§ããŒã¹ãæã€ããšãã§ãã ããŒã³ã衚瀺ãããŸã ã ã ãã£ã¹ãªã³ã° ãã衚瀺ãããŸã-2ã€ã®ããŒã¹ãåæã«ç§»åããåãã§ãã 移åã¯è€æ°ã®ã¢ã¯ã·ã§ã³ã§æ§æãããããšãæããã«ãªããŸãã ãããã®ã¢ã¯ã·ã§ã³ã¯äœã§ããïŒ 3ã€ã®ã¿ã€ãããªã¹ãã§ããŸãã
- movePieceïŒfromãtoãpieceïŒ -ãã£ã®ã¥ã¢ãåãã
- capturePieceïŒäœçœ®ïŒ -ããŒã¹ãåããŸãïŒããŒãããåé€ããŸãïŒ
- dropPieceïŒäœçœ®ãããŒã¹ïŒ - ããŒã¹ãããããïŒããŒãã«è¿œå ïŒ
ãããã®å°é£ã¯ãã¹ãŠãããã£ã¹ãã£ã³ã°ããšãéè·¯ãžã®ä¹è»ããå®çŸããããã ãã®ãã®ã§ã¯ãªãããšã«æ³šæããŠãã ããã ãããã®ã«ãŒã«ã¯ã ãŠãããŒãµã«ãœãªã¥ãŒã·ã§ã³ã®æ©èœãæéå ã«æ¡åŒµã§ããè©Šéç³ã§ãã Ziilions of GamesããŒã ããã§ã¹ãã£ã¹ãªã³ã°ãå®è¡ããããã«è£œåã«å°å ¥ããåããã«ã¹ã±ãŒããã ãŒãã¯ãä»ã®å€ãã®ãŸã£ããç°ãªãã²ãŒã ã§å€§æåãåããŠäœ¿çšã§ããŸãã ããšãã°ã次ã®å ŽåïŒ
ã«ã¹ã±ãŒãã¯å¿ ããããã£ã¹ãã£ã³ã°ã§ã¯ãããŸããïŒ å®éãããã¯ä»»æã®åãã§ãããå®è¡äžã«è€æ°ã®ããŒã¹ãåæã«åããŸãã ãã®ãããªãéæšæºãã«ãŒã«ã¯ã補åãå€§å¹ ã«å å®ãããŸãïŒ ãŸãããã§ã¹ããã«ã¹ã±ãŒããã®åããäžããŠãããå Žåã ãã©ããã«ãäœãåŠã¶ã¹ãããšããããŸããã
ã³ã³ããŠã³ãã ãŒãã¯ãéšåçã«ãå®è¡ãããŸããããã¯ããã¬ãŒã€ãŒãå®è¡ããã³ã³ããŠã³ãã ãŒãã®ããã€ãã®ç°ãªãç¶ç¶ãéžæã§ããããšãå€ãããã§ãã éšåçãªç§»åããã¹ãŠå®äºãããŸã§ç§»åã¯å®äºããŸãããã䟿å©ãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠãåéšåçãªç§»åãåå¥ã«å®äºããããšãã§ããŸãã äžæ¹ãAIãããã¯ãã²ãŒã ã®ç¶æ ãå€æŽããåäžã®ãšã³ãã£ãã£ãšããŠãè€åçãªåããå šäœãšããŠèæ ®ããæ¹ã䟿å©ã§ãã ããã¯æ¬åœã«é£ããåé¡ã§ããã以äžã«çŠç¹ãåœãŠãŸãã
ZrfMoveã¯ã©ã¹ã«ã€ããŠä»ã«ç¥ã£ãŠããã¹ãããšã¯ãããŸããïŒ 2ã€ã®æ¹æ³ã®ã¿ïŒ
- toStringïŒéšåïŒ -移åã®ããã¹ãè¡šèšãååŸãã
- changeViewïŒããŒãããã¥ãŒïŒ -ã²ãŒã ã®èŠèŠçè¡šçŸãå€æŽãã
åã®ã»ã¯ã·ã§ã³ãããããŒãäžã®äœçœ®ãå€æŽããããã«ZrfBoardã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«ç§»åãé©çšã§ããããšãèŠããŠããŸãã changeViewã¡ãœãããåãããšãè¡ããŸãããå€éšã«é¢ããŠã¯ãã²ãŒã ã¢ãã«ã®èŠèŠçè¡šçŸã«ã€ããŠã§ãã ãã¥ãŒã¯ã¢ãã«ããç°¡åãªã³ãã³ããåãåããŸãïŒ
- 移åïŒfromãtoãplayerãpieceïŒ -ãã£ã®ã¥ã¢ã移åããŸã
- deleteïŒäœçœ®ïŒ -ããŒãããããŒã¹ãåé€ããŸã
- äœæïŒäœçœ®ããã¬ãŒã€ãŒãããŒã¹ïŒ -ã·ã§ã€ããè¿œå ããŸã
ããã¯ã³ãŒã¹ã«è¿œå ãããã¢ã¯ã·ã§ã³ãšã»ãŒåãã§ãããã¢ãã«ã§äœ¿çšãããæ°å€ã®ä»£ããã«ãããã¹ãè¡šèšã®æ¢ç¥ã®è¡šçŸã§äœçœ®ãšæ°åãèšè¿°ããæååãéä¿¡ãããç¹ãç°ãªããŸãã toStringã¡ãœããã«é¢ããŠã¯ã人éãèªãã圢åŒã§ç§»åè¡šèšãååŸããã ãã§ãã partã®ãŒã以å€ã®å€ã䜿çšãããšã察å¿ããéšåã¹ãããŒã¯ã®èª¬æãååŸã§ããŸãã åŒæ°ã«0ãæž¡ããšãè€å移åã®å®å šãªèª¬æãååŸã§ããŸãã
æ£åœåãããè€éã
ãã®ãããã²ãŒã ã®å段éã§ã¯ãã²ãŒã ã®ç¶æ ãšïŒã²ãŒã ã®ã«ãŒã«ã§èš±å¯ãããŠããïŒç§»åã®ãªã¹ãããéžæã§ããŸãã ããã¯ã¢ããªã±ãŒã·ã§ã³ãæ£ããæ©èœããããã«ã¯ååã§ããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ãããšãã芳ç¹ããèŠããšã移åãªã¹ãã¯æã䟿å©ãªãã®ã§ã¯ãããŸããã Zillions of Gamesã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®ä»çµã¿ãããäžåºŠèŠãŠã¿ãŸãããã
ãŸãããŠãŒã¶ãŒã¯èªåã®ãã£ã®ã¥ã¢ã®1ã€ãéžæããŸãïŒããã眮ãããŠãããã£ãŒã«ãã瀺ããŸãïŒã ããã«ãéšåçãªç§»åãå®è¡ããããã®ãªãã·ã§ã³ãããã€ãããå Žåãã¿ãŒã²ããäœçœ®ã«ããŒã¯ãä»ãããããŠãŒã¶ãŒã¯ãã®ããããã«å³åœ¢ããã©ãã°ã§ããŸãã å¯èœãªç§»åã1ã€ãããªãå Žåã¯ãããã«å®è¡ãããŸãïŒ ãã¹ããŒã移åããªãã·ã§ã³ãæ©èœããŸãïŒã ããã¯äŸ¿å©ã§ãã ããã¯ã次ã®ç§»åãªã¹ãããéžæãææ¡ãããããã¯ããã«äŸ¿å©ã§ãã
- d8-g8-g3-d3-d7-h7-h5-a5-a7-e7-e1-c1-c6-a6-a1
- d8-g8-g3-d3-d7-h7-h5-a5-a7-e7-e1-a1-a6-c6-c1
- d8-h8-h3-d3-d7-g7-g5-a5-a7-e7-e1-c1-c6-a6-a1
- d8-h8-h3-d3-d7-g7-g5-a5-a7-e7-e1-a1-a6-c6-c2
- ...
äžè¬çã«èšã£ãŠãããã¯ã³ã³ãããŒã©ãŒã®ä»äºã§ããã ã¢ãã«ã«ã¯æ¢ã«å®è£ ãããŠããç¹å®ã®ããžãã¯ãå€ãããŸãã ã³ã³ãããŒã©ãŒã¯ãåããåãã®ããããŒã¹ïŒäžåºŠã«è€æ°ã®ããŒã¹ïŒã«åå²ãããããŒãã«è¿œå ãããããšãç¥ãå¿ èŠã¯ãããŸããã ã³ã³ãããŒã©ã¯ãåéšå移åäžã«ã¢ã¯ã·ã§ã³ãå®è¡ãããé åºã®æ£ç¢ºæ§ã«ã€ããŠå¿é ããã¹ãã§ã¯ãããŸããã ã¹ããŒãã ãŒããªãã·ã§ã³ã圌ãå¿é ããã¹ãã§ã¯ãããŸããã ããã¯ãã¹ãŠã¢ãã«ã«å®è£ ãããŠããŸãïŒ
- getPositionsïŒïŒ
- setPositionïŒäœçœ®ããã¥ãŒïŒ
ã¢ãã«ãšã³ã³ãããŒã©ãŒã®çžäºç解ã確å®ã«ããããã«èšèšããããæ°ããã¯ã©ã¹ã®2ã€ã®æãéèŠãªã¡ãœããã以äžã«ç€ºããŸãã ããã©ãããªã移åã®é åã®ä»£ããã«ããã®ãªã¹ããå«ãZrfMoveListã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãZrfBoardããååŸããŸãã ã³ã³ãããŒã©ãŒã¯getPositionsã¡ãœãããåŒã³åºããŠã次ã®ã¹ãããã§äœ¿çšå¯èœãªäœçœ®ã®é åãååŸããŸãã ãããã®äœçœ®ã®1ã€ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠéžæããã setPositionã¡ãœããã«æž¡ãããŸãã
ãã®ã¡ãœããã¯ãéšå移åã®ããã¹ãè¡šèšãã³ã³ãããŒã©ãŒã«è¿ãïŒç§»åãªã¹ãã«è¡šç€ºããããïŒãããŒãã®èŠèŠè¡šç€ºã«å¿ èŠãªå€æŽãå ãã次ã®ã¹ãããã®ããã«ZrfMoveListãæºåããŸãã getPositionsãžã®æ¬¡ã®åŒã³åºãã空ã®ãªã¹ããè¿ããŸã§ãã«ãŒããç¹°ãè¿ãããŸãã ããã¯ãè€å移åã®çµããã«å°éããããšãæå³ããŸãã ã»ãšãã©ã®å Žåãéžæãããäžé£ã®ã¹ãããã¯ããªã¹ãå šäœããèãããã1ã€ã®åãã«ã®ã¿å¯Ÿå¿ããŠããŸãã ã»ãšãã©ã®å Žåãåžžã«ã§ã¯ãããŸããïŒ
ããã§ã¯ãéå§äœçœ®ãšçµäºäœçœ®ãäžèŽãã4ã€ã®ç°ãªãåããå¯èœã§ãã ç§ãã¡ã«ãšã£ãŠãããã¯getPositionsã¡ãœããã空ã®ãªã¹ããè¿ããåŸã ZrfMoveListã«è€æ°ã®æå¹ãªç§»åãå«ãŸããããšãæå³ããŸãã ã³ã³ãããŒã©ãŒã¯ããã®ãªã¹ããããŠãŒã¶ãŒã«éžæè¢ãæäŸããå¿ èŠããããŸãã æå¹ãªç§»åã®ãªã¹ããååŸããã«ã¯ã getMovesã¡ãœãããåŒã³åºããŸãïŒæ°ããå€ãsetPositionã«æž¡ããããšããã®ãªã¹ãã¯æžå°ããŸãïŒã èšåãã䟡å€ã®ããã¡ãœãããããã€ããããŸãã
- æ»ãïŒè¡šç€ºïŒ -åã®éšå移åãžã®ããŒã«ããã¯
- getCapturingïŒïŒ -ãæŠéäžãã®ããžã·ã§ã³ã®ãªã¹ããååŸãã
- canPassïŒïŒ -è€å移åã®å®äºã確èªãã
- passïŒïŒ -è€å移åã®å®äº
æåã®2ã€ã®æ¹æ³ã§ãã¹ãŠãæ確ã§ãªãå Žåã¯ã次ã®2ã€ã§èª¬æãå¿ èŠã§ãã ãã¬ãŒã€ãŒãè€åã ãŒãã®å®è¡ãäžæããæš©å©ãæã£ãŠããã²ãŒã ããããŸãïŒãã§ãã«ãŒã¯é©çšãããŸããïŒã ããšãã°ã Fanoronã§ã¯ãæåã®ãã£ããã£ã¯å¿ é ã§ãïŒãã§ãã«ãŒã®ããã«ïŒãããã¬ã€ã€ãŒã¯ãã€ã§ããã£ããã£ã®ãã§ãŒã³ã解é€ã§ããŸãïŒ
ãã¬ãŒã€ãŒã¯ã D4-C5 ãã®åããç¶ããããšãã§ããŸãããã Pass ããã¿ã³ãæŒãããšã§ãã®æ©äŒãæåŠããæš©å©ããããŸãã ãã®ç¶æ³ã®ç¹æ®ãªã±ãŒã¹ã¯ãè€åã ãŒãå šäœãå®è¡ããããšããã¬ãŒã€ãŒãæåŠããããšã§ãïŒäžéšã®ã²ãŒã ãããšãã°Goã§ã¯ãããã¯èš±å¯ãããŠããŸãïŒã äœçœ®ã®ãªã¹ããåãåãåã«ãã³ã³ãããŒã©ãŒã¯canPassã¡ãœãããåŒã³åºããŠãè€å移åã®æ©æå®äºã®èš±å®¹æ§ãå€æããå¿ èŠããããŸãã passã¡ãœãããåŒã³åºããšã移åã®å®è¡ãå®äºããŸãïŒã«ãŒã«ã§èš±å¯ãããŠããå ŽåïŒã ãã®åŸãã³ã³ãããŒã©ãŒã¯æå¹ãªåãã®ãªã¹ããååŸãããã®ãã¡ã®1ã€ãéžæããŠZrfBoardã«é©çšããæ°ããç¶æ ãååŸããå¿ èŠããããŸãã
ZrfMoveListã¯ã©ã¹ã®ãã¹ãŠã®æ©èœã«ã€ããŠã¯èª¬æããŸããã§ããã äžéšã®ã²ãŒã ïŒäžèšã®ãã«ãªã© ïŒã§ã¯ã移åã®ããžãã¯ãã¯ããã«è€éã«ãªãå ŽåããããŸãã ãã£ã®ã¥ã¢ã®è€æ°ã®åãããã£ã®ã¥ã¢ã®é決å®çãªãã£ããã£ãšç Žæ£ãããã«ã¯é決å®çãªåããå«ããããšãã§ããŸãïŒ ãããã®å°é£ã¯ãã¹ãŠã ZrfMoveListã¯ã©ã¹ã®ã·ã³ãã«ã§çŽæçãªã€ã³ã¿ãŒãã§ã€ã¹ã®èåŸã«ç¢ºå®ã«é ããŠããããšãéèŠã§ãã ã¯ãããã®ã¯ã©ã¹èªäœã¯éåžžã«è€éã§ããããã®è€éãã¯æ£åœåãããŸãïŒ çµå±ã圌女ã®ããã§ãªããã°ãã³ã³ãããŒã©ãŒãããã«è€éã«ããªããã°ãªããŸããã