今回は、Orange pico(Orangino)でキーボードからの入力について説明します。最初に、定番の数あてゲームを作ってみます。
多くのBASICでは、キーボードからの入力用の命令としてinputが用意されています。Orange BASICでもinput命令がありますので、まずはこれを使って数値を入力してみましょう。inputの後に入力した値を入れる変数を指定します。入力した値を表示するプログラムは、以下のようになります。
10 input n
20 print n
runと入力し、実行してください。行の先頭に?マークが表示され、その後にカーソルが点滅します。この状態がキーボードからの入力待ちになります。数値を入れたら、リターンキーを押します。入力した数値が表示されます。
なお、間違って文字列を入れてしまうと、0が表示されます。文字列を入力してもエラーで停止しません。
なお、nは整数値しか扱えませんので、入力時に2.15と入れても表示されるのは2になります。小数点以下も処理したい場合は、文字列変数に入れてから変換する必要があります。
10 input n$
20 print val(n$)
inputでは入力時に文字を表示することができます。(プロンプト表示)以下のようにすると、Your name? の文字が表示され、そのすぐ右側でカーソルが点滅し、入力待ち状態になります。
10 input "Your name?",name$
20 print name$
それではinputを使って、数当てゲームを作ってみましょう。最初に1〜10までの乱数を発生させ変数に入れます。inputで入力した数と一致しているか調べます。一致している場合は、Goodの文字を表示します。そうでない場合はMissの文字を表示します。
10 a=rnd(10)+1
20 input "Number?",n
30 if a<>n then print "Miss":goto 20
40 print "Good"
ifはelseを使って条件を満たさなかった時の処理を書くことができます。上記のプログラムは、以下のように書くこともできます。
10 a=rnd(10)+1
20 input "Number?",n
30 if a<>n then print "Miss" else print "Good":end
40 goto 20
なお、:(コロン)を使うと複数の命令をつなげて書くことができますが、期待通り動かないことがあります。リファレンスにそう書いてあるので、なるべく1行に1命令を書くようにした方がよさそうです。
Orange BASICには、条件付きで繰り返すwhile〜wendがあります。これを使って書くと以下のようになります。whileの後に条件式を書きます。この条件が成立している間は、無限に繰り返します。
10 a=rnd(10)+1
20 while a<>n
30 input "Number?",n
40 if a<>n then print "Miss"
50 wend
60 print "Good"
whileの繰り返しから強制的に抜けることもできます。この場合、break whileを使います。上記のプログラムを、break whileを使ったものに書き換えると、以下のようになります。
10 a=rnd(10)+1
20 while 1
30 input "Number?",n
40 if a=n then break while
50 print "Miss"
60 wend
70 print "Good"
ちなみに、whileに戻るcontinue whileという命令もあります。
【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/
今月28日にようやくInDesign自動化本が発売されました。自動化本の経緯については次回のデジクリで。
・InDesign自動化サンプルプログラム
https://www.amazon.co.jp/dp/4844379070
今年は長雨で農作業が一か月間ほどできず、スケジュールがどんどん詰まってしまうという何ともな状態に。まあ、今年に限らず最近は天気がおかしいので、まともに作業できる方が珍しいのかもしれませんが。
一か月前に終わってるはずの作業が未だに終わってなくて、いろいろ詰まり気味。でも、幸い(?)コロナウイルスの影響で、各種イベント・講座、撮影関係が中止になっているので、その点、楽と言えば楽。なんにせよ、イベントがないと人間的な生活ができて快適です。
・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram
・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/
・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/