ハードウェア
IchigoJamでゲームプログラミング
shimizu
 今回もIchigoJamのお話です。
今回もIchigoJamのお話です。
これまではハードウェア面の話題ばかりだったので、そろそろ実際にどのようなプログラムが書けるのか一例を紹介します。
ところで、初めてプログラミングに触れたとき、「ゲームを作ってみたい!」という強いモチベーションが湧きますよね、私もそうでした(笑)
BASICマシンと言えばゲームプログラミングということもありますので、今回はモグラ叩きを作ってみました。
IchigoJamでは1つのプログラムは1KBまでという制限があり、大規模な作品には向いていないため、アイディア次第で小粒でも面白い作品を目指すのがよいでしょう。
早速ですがプログラムリストは以下のとおりです。3つの枠のいずれかに現れる数字を打つとヒットとなり得点が加算されていきます。20秒間経つとタイムオーバーで、スコアを表示して終了するようになっています。
実行例

ソースコード
10 'モグラタタキ 20 S=0:T=1200 30 CLS:CLT 40 PRINT "##### ##### #####" 50 PRINT "# # # # # #" 60 PRINT "# # # # # #" 70 PRINT "# # # # # #" 80 PRINT "##### ##### #####" 90 WAIT RND(120)+30 100 P=RND(3) 110 LOCATE P*6+2,2:PRINT P+1 120 K=INKEY() 130 IF T-TICK()<0 GOTO 180 140 IF TICK()>240 GOTO 170 150 IF K<>49+P GOTO 120 160 BEEP:S=S+1 170 T=T-TICK():GOTO 30 180 LOCATE 0,5:PRINT "Score:";S
変数表
- S …… スコア
- T …… 残り時間(1/60秒単位)
- P …… モグラが出ている場所(0〜2)
- K …… 入力されたキー(ASCIIコード値)
処理の流れ
- 10行目はコメントです。REMまたは'(シングルクォート)以降はコメントとして扱われます。また、最初の行に書いたコメントはFILESでファイル一覧を表示する際、タイトルとして表示されます。
- 20行目ではスコアと残り時間(20秒)を初期化しています。
- 30行目では、CLSで画面を消去し、CLTでティック(経過時間のカウンター、1/60秒単位)をリセットしています。
- 40〜80行目では、PRINTでモグラが出てくる枠を表示します。
- 90行目では、指定した間処理を停止するWAITを使用して、0.5〜2.5秒のランダムな秒数だけ待ちます。
- 100行目では3つの枠(0〜2)のどこにモグラを出すかランダムに決め、110行目でLOCATEで表示位置を指定してモグラを表す数字(1〜3)をPRINTしています。
- ここからはゲームのキモになる判定処理を行っていきます。
 120行目で押されたキーを取得します。実際には、1〜3のASCIIコード値である49〜51が得られます。
- ここで押されたキーが正しいかを判定する前に、時間に関する判定処理を行います。
 130行目では、タイムオーバーになった場合GOTOで180行目に移ります。
- 140行目では、30行目を実行してからの経過時間が3秒を超えていれば、出ているモグラを引っ込めて新しい場所にモグラを出し直すために170行目に移ります。
- 150行目に来て、押されたキーが正しいか判定します。もし正しいキーが押されていない場合は、120行目に戻ります。120〜150行目はループ実行されることになります。
- 正しいキーが押された場合は160行目に来ますので、ビープ音を鳴らしてスコアを加算します。
- 170行目では残り時間を減らし、新しいモグラを出すため30行目に戻ります。
- 180行目はタイムオーバー時の処理で、スコアを表示します。
意外と単純な命令の組み合わせで出来ていますね。より詳しい使い方やリファレンスは、公式サイトのページを参照してください。
ちなみにこのプログラムのサイズは406バイトで、改造する余地があと618バイト分ありますので、モグラの出て来る穴を増やしたり、モグラの絵を変えてみたり、BGMを付けてみたりして遊ぶことができます。PRINTを「?」と置き換えるなどの短縮記法を活用して、限られたスペースの中でどれだけ工夫できるか挑戦していくのもIchigoJamの面白いところです。
 
                             2024/05/17
                  2024/05/17 2024/01/05
                  2024/01/05 2023/12/08
                  2023/12/08 2023/11/17
                  2023/11/17 2023/07/07
                  2023/07/07 2023/05/12
                  2023/05/12 2023/02/24
                                    2023/02/24 2022/12/23
                  2022/12/23