ユーザ用ツール

文書の過去の版を表示しています。


マルバツゲーム

概要

IchigoJam BASIC用のマルバツゲームです。 カーソルキーでカーソルを動かし、スペースキーであいているマスに、〇または×を置いてください。 先手(〇)、後手(×)はゲーム開始時にランダムに決まります。

画面イメージ

プログラムリスト

1 CLS:CLV:SRND TICK():C=2*RND(2)-1:LC0,0:?" | | ":?"-+-+-":?" | | ":?"-+-+-":?" | | "
2 IFC=(N%2)*2-1I=0:E=2*C:GOTO4ELSEJ=-1
3 LCX*2,5:?"^":LC5,Y*2:?"<":O=X+3*Y:K=INKEY():IF!KCONTELSEIFK=32AND![O][O]=-C:LC2*X,2*Y:?"O":GOTO8ELSEH=(K=29)+2*(K=28):V=(K=31)+2*(K=30):LCX*2,5:?" ":LC5,Y*2:?" ":X=(X+H)%3:Y=(Y+V)%3:CONT
4 IF[I]+[I+3]+[I+6]=EJ=I+![I+3]*3+![I+6]*6:GOTO8ELSEI=I+1:IFI<3CONTELSEI=0
5 IF[I]+[I+1]+[I+2]=EJ=I+![I+1]+![I+2]*2:GOTO8ELSEI=I+3:IFI<9CONT
6 IF[0]+[4]+[8]=EJ=![4]*4+![8]*8:GOTO8ELSEIF[2]+[4]+[6]=EJ=![2]*2+![4]*4+![6]*6:GOTO8ELSEIFE=2*CE=-E:I=0:GOTO4
7 J=RND(9):IF[J]CONT
8 I=0:IFJ>=0[J]=C:LC2*(J%3),2*(J/3):?"X"
9 W=[I]+[I+3]+[I+6]:IFABS(W)=3GOTO13ELSEI=I+1:IFI<3CONTELSEI=0
10 W=[I]+[I+1]+[I+2]:IFABS(W)=3GOTO13ELSEI=I+3:IFI<9CONT
11 W=[0]+[4]+[8]:IFABS(W)=3GOTO13ELSEW=[2]+[4]+[6]:IFABS(W)=3GOTO13
12 IFN=8LC0,6:?"DRAW":ENDELSEN=N+1:GOTO2
13 LC0,6:IFC*W>0?"COM WIN!"ELSE?"YOU WIN!"

解説

変数説明
Cコンピュータの番手 -1が先手で1が後手
Hユーザカーソルの横方向の移動用
I盤面の評価用ポインタ
Jコンピュータの指し手
Kキー変数
N番手
Oユーザ指し手チェック用ポインタ
Vユーザカーソルの縦方向移動用
W三目チェック
Xユーザのカーソル位置
Yユーザのカーソル位置
[0]~[8] 盤面(-1先手/1後手/0あき)

1行目は初期化です。先手後手を決め、盤面を表示します。

2行目は番手のチェックです。コンピュータの番なら4行目に飛ばします。

3行目はユーザの入力処理です。カーソルを動かし、〇を書きます。〇を書いたら三目チェック(8行目)に行きますH, Vは1または2をとります。1または-1ではありません。これはリング状のポインター移動ではよくあるやり方です。

4~7行目はコンピュータの思考ルーチンwです。ここをいじると強くも弱くもなります。

8~11行目は三目判定です。三目成立なら13行目の勝ち負け判定へ進みます。

12行目は番手を進める処理です。引き分けチェックもしています。

13行目はどっちが勝ったのかをチェックしています。

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information