自分がプチコンで作った、ニコニコ動画アップ作品や、1画面プログラムなどをQRコードとプログラムリスト付きで公開します。
プチコン3号ではコンソール画面のフォントサイズを4倍にすることができます。その場合ソースコード表示画面でもフォントサイズが4倍になります。 その場合標準の1画面よりも文字数が少なくなります。その画面内に収まるように制限を設けてプログラミングするのが1/4画面プログラム(通称QSP:Quarter Screen Program)になります。
タッチパネルで自機を操作します。
上からランダムの方向に飛んでくるタマを何秒避け続けられるか?
1秒毎にタマの数が増えていきます。
自機が上にいるほど点数が多く増えます(Newバージョン)
QSPという制限では弾幕を作るのにスプライトを使用していてはプログラムの文字数が多くなってしまうため、とても画面内に収めることはできません。
スプライト定義とスプライト移動の両方の命令が必要になるためです。
このプログラムではグラフィックで弾幕を表示することでコードの短縮化と、当たり判定の単純化を実現しています。
当たり判定は、自機の場所が弾幕として色が塗られているがをGSPOIT命令で参照するだけで実現できます。
また、自機の移動はタッチパネルで行っています。ボタンやスライドパッドによる移動では自機が画面外へ行かないように制御する必要がありますが、タッチされた場所に自機を移動させることで画面外判定そのものの省略を行っています。
時間ごとに弾幕に対してループする回数を増やすことで、ほぼ無限に弾幕を増やすことができます。
また、弾幕の発生位置はプレイヤーのX座標と同じくなっております。こうすることで弾幕の発生時の設定コードを省略しています。
更に自機が上にいるほど、点数が多く増えていくようになっているため、弾が少ない序盤でも、リスク&リターンの駆け引きを楽しむことができます。
このように、適度にコードやロジックの省略を工夫して行うことにより。
QSPという非常に制限が多い状態でも、弾幕回避ゲームというゲームらしいゲームを実現することができます。
’- 準備 - ACLS ’画面クリア XSCREEN 2 ’下画面のキーボードは使わない K=9999 ’敵弾の最大数(テキトー) ’ 敵弾 DIM X[K] ’X座標 DIM Y[K] ’Y座標 DIM V[K] ’進む角度(ラジアン)&有効無効 ’ 自機 SPSET 0,3323 ’- ここからゲームのメインループ - WHILE 1 TOUCH OUT T,K,P ’タッチされた座標を取得(Tは使わないけど) GCLS ’グラフィック(弾の表示)を全部消す ’敵弾 FOR I=0 TO M ’弾を発射 IF V[I]==0 THEN’弾が空の場合 X[I]=K ’プレイヤーと同じX位置 Y[I]=0 ’画面上端 V[I]=RNDF()*3 ’方向を0~180度 ENDIF ’弾移動 N=V[I] INC X[I],COS(N)*3 INC Y[I],SIN(N)*3 GPUTCHAR X[I],Y[I],"●" ’弾表示 ’画面外に出たらリセット(空とする) IF (Y[I]>=240)||(ABS(X[I])>=400) THEN V[I]=0 ENDIF NEXT ’自機 SPOFS 0,K,P ’タッチされた場所に移動 ’時間カウント W=W+1 M=FLOOR(W/60) ’時間に応じて弾の最大数を変化させる ’スコア表示 CLS ’文字を消す PRINT FLOOR(J) ’点数を表示 J=J+(240-P)*0.01 ’ループ毎に点数を加算(上にいるほど大きい数) ’当たり判定 IF GSPOIT(K,P)!=0 THEN BREAK’自機の場所に色がある(接触)なら終了 VSYNC ’一定時間待つ WEND