IchigoJamでプログラミング 『Nimゲーム』
「三山崩し」とか「nimゲーム」と呼ばれている石取りゲームを作ってみました。
1個~7個の石からなる山を3つ作り(例えば『4個の山,7個の山,2個の山』),2人のプレイヤーが交互に「ひとつの山から1個以上(何個でもよい)石を取って」いき,最後にすべての山の石の数を0個にした者が勝ち,という単純なルールです。
石の山はRND関数で作り,IchigoJamと対戦するのですが,実はこのゲームには必勝パターンがあります。IchigoJamはその必勝パターンに持ち込もうとしてきますから,こちらがぼーっとプレイしていると絶対負けてしまいますよ。どうやったら勝てるのか,調べてみてください(^^)
10 'イシトリGAME Nim
20 CLS:CLV:?"====イシトリGAME Nim====":?
30 FOR I=0TO2
40 LET[I],RND(8):IF[I]=0 GOTO40
50 NEXT
60 GOSUB250
70 T=0:?"Your Turn :";
80 ?" ドノヤマ ?";
90 R=INKEY():IF R=0 GOTO90
100 ?CHR$(R);:INPUT" イクツ トリマスカ?",S
110 ?:LET[R-65],[R-65]-S:GOSUB250
120 LET N,[0]^[1]^[2]
130 '?"NIM",N
140 FOR I=0TO2
150 LET [10+I],[I]-N^[I]:IF[10+I]>0 LET K,I
160 NEXT
170 T=1:?"My Turn : ";
180 IF N=0 GOSUB340
190 ?CHR$(65+K);"ノ ヤマカラ ";[10+K];"コ トリマス":?
200 LET[K],[K]-[10+K]
210 LET N,[0]^[1]^[2]
220 '?"NIM",N
230 GOSUB250
240 GOTO70
250 IF([0]=0)*([1]=0)*([2]=0)GOTO320
260 FOR I=0TO2
270 ?CHR$(65+I);:?" ";
280 IF[I]=0 ?" ";:?[I]:?:GOTO300
290 FORJ=1TO[I]:?" ";:?CHR$(233);:NEXT:?" ";[I]:?
300 NEXT
310 RETURN
320 IF T=0 ?"You Win!!"ELSE ?"You Lose・・・":?
330 END
340 LET K,0
350 IF[K]=0 K=K+1
360 IF[K]=0 K=K+1
370 LET[10+K],1
380 RETURN
雑な作り方をしているものですから,あんまり美しいプログラムではないですが,とりあえず動きます。「nim_game.txt」をダウンロード
明日,時間があったらもう少しちゃんと考えてみようかな。
| 固定リンク | 0
| コメント (0)
| トラックバック (0)