説明書29「サウンド命令」の「音階を鳴らす…BGMPLAY命令」を参考にして、音楽の授業で習った楽譜の音符などを、MMLに変換して、BGMPLAY命令に引数に指定すれば、鳴らすことが出来ます。MML文字列の説明は、BGMPLAYのヘルプの2/2ページにも書いてあります。なお、わからないMML命令は、とりあえず気にしなくてもいいと思います。音階のの対応と音長、オクターブの変更、テンポがわかれば間に合うと思います。
0そうだね プレイ済み
「変数の型が一致しない」と言うエラーです。(説明書36)
プチコンがエラーを検出した318行のプログラムを見ないと断定は出来ませんが、通常は命令や関数で、1)文字列を使うところに数値を使ったり、2)逆に数値を使うところに文字列を使った場合に発生します。
0そうだね プレイ済み
作成途中の、インターバルトレーニングやサーキットトレーニングを一人でする時に、合図出しをするためのプログラムです。昔、mkII用に作った物を移植中です。繰返し回数と時間、合図の指定しかできないので、プチコンをやっている人には、直接書いた方が良いかもしれませんが、DATA文を書き換えて自分に会った練習メニューを作ってみてください。(N348Y34X)
1そうだね プレイ済み
けいさんが提供されているバックアップツールを使ってみてはいかがでしょうか。
0そうだね プレイ済み
ishさんへ
私は、DEFにOUT引数を増やしたときに、VAR宣言から削除するのを忘れて、よく発生させています。
0そうだね プレイ済み
出来ないことは無いかもしれませんが、実行時にチェックする方がインタプリタらしいような気がします。
0そうだね プレイ済み
最近、DEF~ENDで少しわかりにくいエラーに遭遇しました。わかってしまえば、どうと言うことは無いのですが、わかるまで、かなり悩みました。
それは、入力と出力に同じ引数を指定した為に、Type mismatchと呼び出し側でエラーが表示されるものです。
以下の方法で回避できます。
1)定義側で、引数に別の名前を付け、出力の変数に代入する。
2)呼び出し側で、同一の変数を指定する。
もともと、INOUTのパラメータを使うことは少ないため、問題になることは少ないと思います。なお、配列変数の場合は、参照渡しのためこの問題は発生しません。
2そうだね プレイ済み
努力の結果が一瞬で消えて無くなるのは、つらいですね。
私は、「作品を見る」から実行してエラーになった時のために。プログラムの最初の方に、セーブ命令を書いておくようにしています。そして
1)セーブ命令をコピーする
2)ダイレクトモードに切り替える
3)ペーストしてエンターする
のように少しでも、手抜きできるようにしています。
0そうだね プレイ済み
ダイアログとは、考えていませんでした。
確かに、プログラムの画面を乱さない点で優れていますね。
数値を文字列に変換するのに、一手間必要ですが、魅力的な方法ですね。
2そうだね プレイ済み
説明書を読んでみてはどうでしょうか。わからないことは読み飛ばしてかまいません。あとで必要になって読み返すときに、このあたりにこんな事があったような気がする程度の理解で十分です。17からは入力例がありますので、実際に入力して試すことで感じがつかめてくると思います。公式ページにある簡易電子説明書を見ながらの方が、やりやすいかもしれません。
0そうだね プレイ済み
PRINT文挿入の方が良い場合もあるので、場合によって使い分けています。
0そうだね プレイ済み
ねこはちさんのコメントを補足します。
「作品を見る」から実行して、実行結果を確認したいと言う意味であれば、プログラムの最後に
WAIT 120
を入れると約2秒終わるのを遅らせることが出来ます。
また、プログラムの最後に
PRINT "ナニカ ボタンヲ オシテクダサイ"
REPEAT:WAIT:UNTIL BUTTON(2)
とすれば、何かボタンを押すまで終了を待つことが出来ます。
2そうだね プレイ済み
以下の手順で出来ると思います。
1)十字キーを押されたことを検出する。
2)前にプリントしたものを消す。
3)移動先にプリントする。
4)1へ
0そうだね プレイ済み
私もよく使います。
思い通りに動かないとき、怪しいところにいくつかSTOP命令を入れて、止まったら、値を確認したり、仮の値を入れたりして、CONTでその後の振る舞いの確認したりします。
2そうだね プレイ済み
日付がスクロールしている原因は、31,32で最終行で時間を表示したとき、改行しているために発生しています。
TIME$の後に”;(セミコロン)”をつけることで改行を抑止できます。
0そうだね プレイ済み
3行目のENDIFは、不要です。ENDIFは、IFの条件が真のときに実行する処理が複数行のとき、THENのすぐ後で改行して、処理を書き、IF文の終わりをプチコンに指示するためのものです。
0そうだね プレイ済み
基本的な考え方は合っていると思います。
BUTTON関数の2つ目の引数は、ほかの3DSのボタン状態を調べるものなので、この場合は、指定する必要はありません。
BUTTON関数はユーザがボタンを押すまで待つ機能はありません。そのため、プログラムで待ち合わせをする必要があります。たとえば、以下のようにします。
REPEAT ' 無限ループの最初
WAIT '1フレーム待つ(VSYNCでも可)
BA=BUTTON(2) ' ボタン情報読み取り
IF BA AND 16 THEN BREAK ' Aボタンが押されたらループを抜ける
UNTIL FALSE ' 無限ループの最後(TRUEにならないので抜けられず無限ループになる)
PRINT "Aボタンが押されました"
0そうだね プレイ済み
SAVE命令は、必ずダイアログが表示されます。したがって、該当箇所を実行していないと思われます。呼び出し元を確認してみては、いかがでしょうか。
0そうだね プレイ済み