2015年5月 5日 (火)

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)

2015年5月 2日 (土)

IchigoJam ⇔ WindowsPC シリアル通信

Teraterm IchigoJamで作ったプログラムをWindowsPCに保存したり,ネットで拾ったプログラムをIchigojamに送り込むのに,USBシリアル変換モジュールを使ってシリアル通信をする手順を書き残しておきます。自分用の備忘録ですね。
 WindowsPCにTeraTermをインストールしておいて,WindowsPCとIchigoJamをUSBシリアル変換モジュールを介して接続します。
TeraTermの設定は左のようにします。
ポートの番号が分からなかったら,デバイスマネージャを起動して,「ポート(COMとLPT)」で確認しましょう。これらの設定は「名前をつけて保存」しておくといいですね。

 設定が正しくできていれば,設定したシリアルポートで接続できるはずです。
IchigoJamで作ったプログラムをLISTコマンドで表示させると,WindowsPCのディスプレイ上に表示されるコンソール画面にも同じものが表示されます。これをマウスでドラッグ&コピーして,テキスト文書にペーストすればよいわけです。
逆に,他所で拾ってきたプログラムをWindowsPCのディスプレイ上のコンソール画面にコピー&ペーストすると,IchigoJamにゆっくりとしたスピードで送信されますから,IchigoJamのSAVEコマンドで保存すればOK。
Teraterm3 これがWindowsPCのディスプレイに表示させたIchigoJamのBASICプログラムリスト。
これは,今日作った「石取りゲーム」のプログラムです。RND関数で発生させた20~30個の石をPCとプレイヤーが交互に取り合って(1回につき,1~3個の石を取る),最後の1個を取らされたら負け,というよく知られたゲームですな。思いつきでたらたらプログラムを打って,試しに走らせてエラーが出たらその都度直す・・・といういい加減な作り方をする僕には,インタプリタのBASICってのは都合がいいんだよね。  「ishitori_game.txt」をダウンロード


| | コメント (0) | トラックバック (0)

2015年4月30日 (木)

IchigoJamでプログラミング 『Hit & Blow』

1070380 40年前,高校時代にクラスで流行ったゲーム「Hit & Blow」をIchigoJamのBASICで作ってみました。
これは出題者が0~9の異なる数字で作った4桁の数字を回答者が当てるというゲームで,数字も桁も合っている場合が「Hit」,その数字は合ってるけど桁の位置が間違っている場合は「Blow」です。
例えば問題が「3275」の場合,回答者が「5239かな?」と答えたら,出題者(パソコン)は「Hitは1つ,Blowは2つだね」と応ずるわけです。単純だけど,結構ハマります。もちろん高校時代は2人で紙と鉛筆を使って遊んでたんですけどね。
IchigoJam-FANにも投稿がありましたが,これは最近実装されたfor ~ nextを使って作ってみました。その昔,FM-8のF-BASICでも作ったことがあるのですが,IchigoJamのBASICによるソースはこれ↓
 
10 'HIT & BLOW
20 CLV:CLS:LC5,0:?"===== HIT & BLOW =====":?
30 LET[0],RND(9)
40 LET[1],RND(9)
50 IF[1]=[0]THEN GOTO40
60 LET[2],RND(9)
70 IF[2]=[1]OR[2]=[0] GOTO60
80 LET[3],RND(9)
90 IF[3]=[2]OR[3]=[1]OR[3]=[0] GOTO80
95 ' ?[0];[1];[2];[3]:?
100 H=0:B=0
110 ?"NUMBER? ";
120 LET[10],INKEY()
130 IF [10]=0 GOTO120
140 LET[10],[10]-48:?[10];
150 LET[11],INKEY()
160 IF[11]=O GOTO150
170 LET[11],[11]-48:?[11];
180 LET[12],INKEY()
190 IF[12]=0 GOTO180
200 LET[12],[12]-48:?[12];
210 LET[13],INKEY()
220 IF[13]=0 GOTO210
230 LET[13],[13]-48:?[13];
240 FOR I=0TO3
250 FOR J=10TO13
260 IF[I]<>[J] GOTO280
270 IF I+10=J H=H+1 ELSE B=B+1
280 NEXT:NEXT
290 ?" HIT ";H;" BLOW ";B
300 IF H=4 ?"========Congratulations!========"ELSE GOTO100

「HitAndBlow.txt」をダウンロード

| | コメント (0) | トラックバック (0)

2015年4月29日 (水)

IchigoJam周辺機器ボードの製作

Ichigojam2  昨年の9月にこどもパソコン IchigoJamってのを知り,1,500円のキットを速攻で購入して組み立てました。
61mm×45mmという小さな基板に乗ったワンボードPCにキーボードとモニタを繋いで電源を入れると,即座に昔懐かしいBASICが起動してくるんです。35年前に初ボーナスで富士通のFM-8を買ったときのワクワク感を思い出しました。IchigoJamが「おっさんホイホイ」と呼ばれているのもよく分かります(笑)
 数日間,BASICで小さなプログラムを書いて遊んでたんですが,「for ~ next」が使えないとか,「プログラムを3つしか保存できない」とかの小さな不満を感じて,先週まで放置していました。
Ichigojam1 ところが,本屋で見つけた電子工作マガジン 2015年5 月号
の「IchigoJam周辺機器ボードの製作」という記事を見て,ファームアップすれば「for ~ next」が使えるようになるし,ROMカセットを接続すれば128個のプログラムを保存できるようになることを知り,さっそくパーツを集めて作ってみました。
 USBシリアル変換モジュールは秋月のこれ(600円)でROMカセットのEEPROMも秋月のこれ(250円)です。IchigoJamは秋月でも取り扱いを始めたんですね。知らなかったー。
 完成した周辺機器ボードとUSBシリアル変換モジュールをIchigoJamに取り付けてWindowsパソコンと接続しFacebook グループ IchigoJam-FANでダウンロードした新しいファームウェアichigojam-1.0.0-b5を書き込みました。これで「for ~ next」が使えるようになるのです。IchigoJamのFacebookグループも活発に活動しているようです。おっさんの皆さん,ぜひどうぞw

【2015/05/03追記】
本日Facebookグループにアップロードされた新ファームウェア chigojam-1.0.0-b6から,圧電スピーカを接続するピンが変更になりました。OUT5ピンがSOUNDピンに(僕の2014年9月頃のバージョンのIchigoJamは,EX3ピンがSOUNDピンに)なります。
さっそくこの周辺機器ボードの配線もやり直しました。老眼にはキツい作業でしたw



| | コメント (0) | トラックバック (0)