KI言語で三目並べを作成してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
Kf(_Game_Sanmoku){ Pe{ /*キーステーションが最初に実行するキーセット*/ N(_main); } } K(_main){ Se{ @area{~border{~style="solid";~shape="roundsquare";~radius="50";}~margin{~top="0";~left="30";~right="30";~bottom="30";}} @row{~back{~color="#ffffffff";}~border{~style="solid";~width{~top="0";~left="0";~right="0";~bottom="1";}}} @col{~border{~style="solid";~width{~top="0";~left="0";~right="1";~bottom="0";}}} } De{ (str).turn="〇"; (key).chkPattern{ {0,1,2}{3,4,5}{6,7,8}{0,3,6}{1,4,7}{2,5,8}{0,4,8}{2,4,6} } } U{ /* 説明エリア */ R0.2(#DescriptionArea){ C(#Message) Cb0.3(#Clear,"クリア"){ Bs{ sub(#Init); } } } /* 表示エリア */ R(#PlayArea,@area){ R(@row){ Cbb(@col){Bs{sub(#PushCell,#me<<2);}} Cbb(@col){Bs{sub(#PushCell,#me<<2);}} Cbb(@col){Bs{sub(#PushCell,#me<<2);}} } R(@row){ Cbb(@col){Bs{sub(#PushCell,#me<<2);}} Cbb(@col){Bs{sub(#PushCell,#me<<2);}} Cbb(@col){Bs{sub(#PushCell,#me<<2);}} } R(@row){ Cbb(@col){Bs{sub(#PushCell,#me<<2);}} Cbb(@col){Bs{sub(#PushCell,#me<<2);}} Cbb(@col){Bs{sub(#PushCell,#me<<2);}} } } } /* 初期化処理 */ Pe(#Init){ /*ボタンの値をクリアする*/ forall((key)tmp,#PlayArea,"Cb"){ tmp?=""; } .turn?="〇"; #Message?=format2("{0}の順番です",.turn?); } X /* セルクリック時の処理 */ Pe(#PushCell,(key)dk){ if(dk?!=""){ return; } /* 〇✕設定 */ dk?=.turn?; /* 勝敗判定 */ if(sub(#Judgment)){ return; } /* ターンチェンジ */ if(.turn?=="〇"){ .turn?="✕"; } else { .turn?="〇"; } #Message?=format2("{0}の順番です",.turn?); } /* 勝敗判定 */ Pe((int)#Judgment){ De{ (key).inputArray; } /* 配列をクリア */ .inputArray%delC(); /* 各セルの情報を配列に格納 */ forall((key)tmp,#PlayArea,"Cb"){ if(tmp?=="〇"){ .inputArray%addC(tree('D(1)')); }else if(tmp?=="✕"){ .inputArray%addC(tree('D(-1)')); }else{ .inputArray%addC(tree('D(0)')); } } /* チェックパターンと判定 */ foreach((key)pattern,.chkPattern){ (int)i=.inputArray[pattern[0]?]?+.inputArray[pattern[1]?]?+.inputArray[pattern[2]?]?; if(i==3||i==-3){ #Message?=format2("勝負あり!{0}の勝ちです",.turn?); return(true); } } return(false); } } |
Game_Sanmoku.ksf 4.84 KB
実行結果