ADVENT CALENDAR 2019

 Nintendo Switchでコーディングしよう!

By mamepuro

この記事はAmusementCreators AdventCalender14日目の記事になります。

Nintendo Switchでコーディングしよう!

はじめに

皆さん、こんにちは。まめプロと申します。

突然ですが、1つ質問です。
Nintendo Switchは何をする為のものでしょう?
人気キャラクターを吹っ飛ばす為のものでしょうか。それともイカの姿のキャラクターでステージをインクで染め上げる為のものでしょうか。それともモンスターを育て、友人と対戦する為のものでしょうか。
否。 Switchはコーディングする為のものです。
というわけで、今回はNintendo Switchでプログラミングができるソフト「プチコン4」について紹介したいと思います。

プチコン4とは

プチコン4公式サイト
プチコン4とは、Smileboom社開発の「プチコン」シリーズの第5作目で、Nintendo Switchで販売されているダウンロード専用ソフト(3000円)です。たった3000円払うだけでで、Nintendo Switchで本格的なプログラミングが楽しめます。
(機能は限られてしまいますが、無料の体験版もあります) 是非皆さんも買いましょう。買え。
ちなみに、プチコン4では BASIC言語(厳密にはSmileBASICという言語)でのプログラミングが可能です。

BASIC言語って??

さて、BASIC言語について少し説明します。BASIC言語自体の歴史は非常に深く、なんと1964年に開発された言語です。その後、マイコンに搭載されたこともある言語で、その当時マイコンに熱中した人から絶大な支持があります。(?)別名おっさんホイホイという
と、言われてもピンとこない人もいるかもしれないので仕様についてもう少しだけ紹介します。

  • 手続き型言語
  • 高水準な言語
  • 基本的に1行ずつでプログラムを解釈する。そのため一部を除く命令(関数)の途中で改行することはできない。
  • プログラムの先頭から1行ずつ実行される
  • 実行モード(DIRECTモード)と編集モード(EDITモード)が存在し、編集モードではプログラムの記述、実行モードではプログラムのセーブ・ロード・実行の命令を主に記述する
  • 初心者向けの言語であり構文が簡単である

実行モード 実行モード 編集モード
編集モード(画像はプチコン4のサンプルコード)

そうです。BASIC言語の一番大きな利点は初心者向けであることです。試しに画面に「Hello,world!」と表示するプログラムを書いてみましょう。 上にもある通り、実行したいプログラムコードは「編集モード」で記述します。

PRINT "Hello, world!"

簡単でしょう?ちなみに気づいたかもしれませんがBASIC言語では命令や関数は全て大文字で記述します。(小文字でも問題ないけど)
ですが、まだこれだけでは画面に「Hello,world!」と表示されません。
次に、「実行モード」で以下の命令を入力します。

RUN

RUN は「『編集モード』のプログラムを実行しろ」という意味の命令です。そして実行モードでRUNを実行することで、晴れて「Hello,world!」と画面に表示されます。

実際にコーディングしてみる

今回の記事では、BASIC言語 で簡単な数当てゲームを実装することを目指します。
数当てゲームの仕様は以下の通りとします。

  • 1.任意の自然数N(1≦N≦100)を最初に決定する。
  • 2.プレイヤーはNに当てはまる数を予想して入力する。
  • 3.プレイヤーが入力した数が正解か判断する。正解なら4、不正解なら5の手順を実行する。
  • 4.プレイヤーがこれまでに回答した回数を基に、評価コメントを表示する。
  • 5.入力された数がNより大きいか小さいかのヒントを表示する。その後2→3の手順を実行する。

では実際にコーディングしてみましょう。

'数当てゲーム('でコメントアウトできます)
'変数を初期化する
ACLS '画面に表示されているものすべてを削除する
COUNT = 0
ANSWER = RND(100)+1     ' RND(MAX)で0からMAX-1までの乱数を取得できます。
@MAINLOOP
INPUT "数を入力してね ", MYANSWER
IF MYANSWER > ANSWER THEN
    PRINT"数が大きいです!"
    ELSEIF   MYANSWER < ANSWER THEN
    PRINT"数が小さいです!"
    ELSE 
 PRINT"正解!"
 IF COUNT <10 THEN PRINT "君は天才!秀才!神!!!!!"
 END ’END命令でプログラムを終了させられます。
ENDIF
GOTO @MAINLOOP

これで完成です。実際に動かしてみると、以下のようになります。

実行結果 以下はコードの解説です。

INPUT命令

まず、ある変数にプレイヤーの入力した数や文字列を代入するにはINPUT命令を使います。
INPUT "ゴリラ",GORILLAとすることで、画面に「ゴリラ」と表示し、プレイヤーの入力した数を変数GORILLAに代入できます。 ちなみに、INPUT命令はプレイヤーが入力するまでプログラムの処理を一時停止させるので、数の入力を終えるまでINPUT "数を入力してね ", MYANSWER以下のコードは実行されません。

IF命令

次におなじみのIF命令ですが、C言語とかのような言語と書き方が異なります。
IF 条件文 THEN 実行したい処理
とBASIC言語では書きます。先にも書いた通りBASICでは命令や関数の途中で改行してはいけません。
つまり

PRINT "
ゴリラウホウホウッホホホ"

と書くと、エラーが出てしまうということです。 しかし、IF命令はTHENの部分で改行することができます。改行する場合、

IF 条件文 THEN
処理したい内容
ENDIF

とコードを書けばOKです。 また、複数条件がある時は

IF 条件文1 THEN
処理したい内容1
ELSEIF 条件文2 THEN
処理したい内容2
ELSE 処理したい内容3 
ENDIF

と書きます。

ラベル

数当てゲームのコード内に出てきた@MAINLOOPという謎の文字列ですが、この@から始まる文字列をラベルと言います。 BASICはプログラムの先頭から尻尾まで実行されるとプログラムが終了してしまいます。
例えば、数当てゲームのコードにあるGOTO @MAINLOOPを削除すると、数を一回入力するとプログラムが終了して数の入力ができないようになってしまいます。
今回の数当てゲームのような”特定の状況になるまでプログラムを実行させ続けたい”とい場合、このラベルをうまく作ってループ(ルーチン)を作ってあげる必要があります。そこで役に立つのがGOTO命令です。

GOTO @GORILLA

で実行するプログラムを強制的にラベルGORILLA以下のものにジャンプさせることができます。 以下の例で詳しく説明します。

A = 1
GOTO @HOGE
A = 2
@HOGE
PRINT A 'PRINT 変数名 で変数を表示できます。

実行結果

1

BASIC言語では、プログラムは先頭から1行ずつ実行されます。 つまり、

  • 1.変数Aに1を代入
  • 2.ラベルHOGEにジャンプ
  • 3.変数Aを表示
    の順番で実行されているということです。(A=2の行はスキップされている) これをうまく使うとループを作れるのです。
    もう一度、数当てゲームのコードを見てみましょう。

    '数当てゲーム('でコメントアウトできます)
    '変数を初期化する
    ACLS '画面に表示されているものすべてを削除する
    COUNT = 0
    ANSWER = RND(100)+1     ' RND(MAX)で0からMAX-1までの乱数を取得できます。
    @MAINLOOP
    INPUT "数を入力してね ", MYANSWER
    IF MYANSWER > ANSWER THEN
    PRINT"数が大きいです!"
    ELSEIF   MYANSWER < ANSWER THEN
    PRINT"数が小さいです!"
    ELSE 
     PRINT"正解!"
     IF COUNT <10 THEN PRINT "君は天才!秀才!神!!!!!"
     END ’END命令でプログラムを終了させられます。
    ENDIF
    GOTO @MAINLOOP
    

    このプログラムの@MAINLOOP以降の実行順は以下のようになります。

  • 1.INPUT命令でで数の入力受付

  • 2.入力された数を判定(正解ならEND命令でプログラムが終了)

  • 3.GOTO @MAINLOOPで@MAINLOOPにジャンプ(つまり1の手順に戻っている)
    これで、正解の数が入力されるまでプログラムを実行し続けたままにできました。やったね!!

    終わりに

    BASIC言語はクラスとか色々難しい訳分からんやつはそんなにありません。めちゃくちゃ簡単です。 というわけで、皆さんもプチコン4を買ってNintendo Switchでコーディングして遊ぼうね!!
    おしまい。

SHARE THIS POST