RACCOON TECH BLOG

株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。

Switchでプログラミングをしてみよう

開発のきくちです。

2020年よりプログラミング教育が必修化されましたが、Nintendo Switch™ でもプログラミングが出来るのはご存知でしょうか?
今回は「プチコン4 SmileBASIC」を使用して簡単なフィットネスゲームを作成してみました。
体験版で動作しますので、本体をお持ちであればどなたでも試すことが可能です。

作ったもの

今回作成したものがこちらです。Joy-Con の加速度センサーを使ってパンチを判定させて枠の中に入ったフルーツを狙います。
パンチの判定は いいね持ち のみ対応しています。

まずは初心者ガイド

ソフトを起動させると初心者ガイドがトップメニューにあります。ソフトの使い方、プログラムの書き方や実行方法から始まり、コントローラーを使ってスプライトを動かすまで、未経験者にも理解できるようなチュートリアルになっています。最後の方になるにつれ記述するコードの量も増えますので、キーボードがあれば良いかもしれません。

プログラムの解説

作成したプログラムはこちらです。要点を絞って解説していきます。
命令等の詳細な仕様は SmileBASIC リファレンスマニュアル を参照頂ければと思います。

ACLS
XCTRLSTYLE 1,1,1,0,0
GFILL 200,0,215,239,RGBF(#C_BLUE,0.5,,,)
GBOX 199,149,216,166,#C_BLUE
GBOX 198,148,217,167,#C_BLUE
R=10

REPEAT
  DEC R
  IF R<0 THEN
    SP=SPSET(RND(6))
    SPOFS SP,200,-16
    SPFUNC SP,"ENEMY_MOVE"
    R=20+RND(20)
  ENDIF
  ACCEL 1,0 OUT X1,Y1,Z1:ACCEL 1,1 OUT X2,Y2,Z2
  IF X1>=3 OR X2<=-3 THEN AT=1 ELSE AT=0 ENDIF
  CALL SPRITE
  VSYNC
UNTIL BUTTON(0,#B_RDOWN)

DEF ENEMY_MOVE
  SP=CALLIDX()
  SPVAR SP,0 OUT F
  IF F THEN RETURN ENDIF
  SPOFS SP OUT X,Y
  IF AT AND Y>=140 AND Y<=160 THEN
    SPVAR SP,0,1
    SPOFS SP,X+8,Y+8
    SPANIM SP,"I.",4,7295,4,7296,4,7297,4,7298,4,7299
  ELSEIF Y>=240 THEN
    SPCLR SP
  ELSE
    SPOFS SP,X,Y+2.5
  ENDIF
END

メインループ

8~20行目がメインループになっており、Bボタンが押されるまで永遠と実行され続けます。

フルーツの出現

10~15行目がフルーツの出現処理です。
フルーツを表すスプライトの定義番号である0から5まで RND() でランダムにスプライトを作成して SPFUNC でコールバックを設定しています。18行目の CALL SPRITE でコールバック処理が呼ばれます。
フルーツの移動(34行目)や当たり判定(27行目)はコールバック処理内で行っています。

コントローラーの入力

2行目と16行目がコントローラーの入力です。
最初にコントローラーを1人用、Joy-Con 2本持ち、モーションセンサーありで設定します。
詳しい設定内容は XCTRLSTYLE のリファレンスを参照頂ければと思います。
設定後は ACCEL で加速度情報を取り出します。左右別々のコントローラーとして設定しているので2回実行しています。

パンチ判定

17行目でパンチの判定をして変数 AT に代入しています。加速度の計測はこのようになっています。

 

いいね持ち をした場合、左側のコントローラー(赤い方)は図の右方向が正でパンチも右方向なので加速度が正になった場合に判定とします。しかし右側のコントローラ(青い方)は図の右方向が正ですがパンチが左方向になるので加速度が負になった場合に判定となります。その結果として「X1>=3 OR X2<=-3」という条件になりました。

フルーツの爆発

28~30行目が爆発処理です。フルーツと爆発の画像にずれがあるので、SPOFS でスプライトの表示位置を調整しています。次に SPANIM を使用して爆発経過を表すスプライトの定義番号である7295から7299まで4フレーム間隔でアニメーションさせています。アニメーション対象に設定されているドットは、付与することでアニメーション終了時にスプライトが削除される仕様になっています。

また、爆発判定後にスプライトの下方向への移動処理が継続しないように、SPVAR でスプライトごとに個別で保持可能な変数に爆発判定フラグを立てて管理しています。

最後に

いかがでしたでしょうか?今更 BASIC なんて思う方もいるかもしれませんが、趣味でゲームを作ってみたい方やプログラミングを始めてみたい方にも楽しみながら学習できるので、ハードルも低く非常におすすめできると感じました。初心者ガイドは数時間あれば終わる内容になっていますので、Switch をお持ちの方は一度試して頂けると幸いです。

一緒にラクーンのサービスを作りませんか? 採用情報を詳しく見る

関連記事

運営会社:株式会社ラクーンホールディングス(c)2000 RACCOON HOLDINGS, Inc