プチコン3号 SmileBASIC コミュニティトピック受付中たくみ somsss2017/04/02 13:18:23質問譜面を流す太鼓の達人のようなゲームを作っています。 譜面を流したいのですが、どうすればよいですか?1そうだね 72返信プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿しょぼーん sin52382017/4/2 15:14譜面を改編しやすくなるのでその方がいいかと。 あとREADも必要ですね。1そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿たくみ somsss2017/4/2 15:50Read って読むだけに使う訳じゃないんですね。 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿たくみ somsss2017/4/2 15:59どんな使い方をしますか? 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿しょぼーん sin52382017/4/2 21:49READはDATAとセットで使います。 このようにREADはDATAの値を読み取ってくれます。 ACLS WHILE 1 READ D$ IF D$==""THEN END ?D$ WEND DATA "データ1","でーた2","DATA3","次でおわるよ",""0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿たくみ somsss2017/4/2 22:02できました。 でもこれでどうやって、譜面を作り動かすのですか?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿たくみ somsss2017/4/2 22:11一応、あるゲームと同じ形で書いてます。できればこれ使いたいです。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿たくみ somsss2017/4/3 9:20はい。さいたま2000安定しないので、練習用に。 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿たくみ somsss2017/4/3 13:23もしかしてscrollつかう?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[11]親投稿しょぼーん sin52382017/4/3 13:35SCROOLは全体が動いてしまうので、文字列でPRINTするのが自分はいいですね。 まず譜面データをひとつの文字列変数に連結して、そのあとMID$()を使って画面に表示するぶんだけとって、PRINT&LOCATEで表示という感じです。 自分の中では。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[12]親投稿しょぼーん sin52382017/4/3 13:38補足 MID$を使ってというのは、 PRINT MID$(譜面データ,経過時間,画面に表示する分の文字数) ということです。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[13]親投稿たくみ somsss2017/4/3 13:39文字データをsprite にして流したいのですが、その場合も同様ですか?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[14]親投稿しょぼーん sin52382017/4/3 13:49コンソールだと思っていました。すみません。 スプライトの場合は話が違います。 まずデータをひとつの文字列変数に入れ(ここは同じ)、文字列変数の(経過時間)文字目を取得して、それがドンかカッだったら、SPUSED()を使いSPSETし、画面外から流れるようにSPANIMをするばいいはずです。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[15]親投稿たくみ somsss2017/4/3 13:54すみません文字列変数に入れるとか経過時間とかがよくわかりません。 分かりやすく説明していただけませんか?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[16]親投稿たくみ somsss2017/4/3 13:55データを文字列変数に入れるのは read a$ でokですか?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[17]親投稿しょぼーん sin52382017/4/4 12:50分かりにくい説明ごめんなさい。 それは、DATA "(譜面データ)"を連ねて書いていたら、その複数のデータを全てまとめて一つの文字列変数(なんちゃら$)に事前に入れるということです。 そのあとメインループを作り、まずデータのn文字目を取得します。(NOTE$=A$[I] INC I みたいに。) ちなみにA$[n]とすると、A$のn文字目が取得できます。 その文字がドンとカッのどっちかをIFで判断して、SPSET ドンかカッの定義番号 OUT 管理番号 とすれば自動的に未使用のSPを定義してくれます。 そして、SPANIMを右の画面外から左に流れていくようにすれば出来ます。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[18]親投稿しょぼーん sin52382017/4/4 12:54補足です。 経過時間というのは、ループの中に1づつ増えていく変数を指しています。 I=I+1とかINC TIMEとか変数名は分かりやすい方でどうぞ。 分からないことがあったら質問どうぞ。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[19]親投稿たくみ somsss2017/4/4 13:28データをなんちゃら$に入れるのは、readを使いますよね?1そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[20]親投稿たくみ somsss2017/4/4 13:54エラーになってしまいますがどこがダメなのか分かりません。Subscript out of rangeです。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[21]親投稿しょぼーん sin52382017/4/7 20:12すみません少し抜けていました。 そのエラーはLが文字列の文字数を越えてしまったからです。 なので、譜面を終了するプログラムが必要です。 なので、データの最後にお好きな文字をいれ、IF文で終わらせましょう。 あと、それだと曲が一瞬で終わってしまうので、待つプログラムも必要でした。 それはFORとVSYNCを使えばできます。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[22]親投稿たくみ somsss2017/4/7 21:23同じエラーが起きてしまうのですが、どこが違うのでしょうか?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[23]親投稿しょぼーん sin52382017/4/8 20:07同じエラーは出ないはずですが…。 自分ではわかりません。すみません。 とりあえず IF NOTE$=="E" THEN END を IF NOTE$=="E"THEN END か IF NOTE$=="E"THEN END ENDIF としましょう。 それではENDIFが無く、エラーになります。 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[24]親投稿たくみ somsss2017/4/8 20:23ENDIFの位置をかえて、あと色々やりました。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[25]親投稿たくみ somsss2017/4/8 20:28最初のデータの行しか読み込めないのですが、何故でしょう?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[26]親投稿たくみ somsss2017/4/8 20:33最初の方で繰り返しREADしているのですが...0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[27]親投稿しょぼーん sin52382017/4/9 10:11RESTONEをループの外に置くようにしてください。 RESTONEはあくまでデータの場所を指定する命令なので、ループの中に置くと、データの先頭しか読み取れません。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[28]親投稿たくみ somsss2017/4/9 13:34直しました。先端しか読み取れないのは直ったのですが、 今度は最後の音符しか流れてくれません... 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[29]親投稿しょぼーん sin52382017/4/9 19:28説明不足でした。すみません。 READはデータを読み取るだけで文字列をくっつけるのはしてくれないので、 READ A$のところを READ 好きな変数$ A$=A$+好きな変数$ とすれば大丈夫です。 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[30]親投稿たくみ somsss2017/4/9 20:36ありがとうございます。流せました! 申し訳ないのですが、もう少し付き合っていただけますか? 今僕がやっているのは、gosubでサブルーチンを呼び出して、そこで譜面を流しているのですが、譜面を流している間にボタンの判定ができません。どうすればよいでしょうか?(多分曲がすぐに終わってしまわないようにVSYNC ループを置いているせいだと思います。)0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[31]親投稿しょぼーん sin52382017/4/9 20:39VSYNCループの中でボタンを取得すればいいと思います。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[32]親投稿たくみ somsss2017/4/9 20:41あと、工夫して複数の音符を一度に出せるようにしたのですが、すぐエラーになります。out of ringe だったような気がします。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[33]親投稿たくみ somsss2017/4/9 20:45やっぱりそうなりますかー。もっと省略したいのですがねー。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[34]親投稿しょぼーん sin52382017/4/9 20:45SPSET 定義番号 OUT 変数 とすれば、自動で使っていない番号のSPを出してくれます。 変数には管理番号が入ります。 これをFORで活用すれば大丈夫です。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[35]親投稿たくみ somsss2017/4/9 20:59あれ...すみません。FORで、活用が分からなかったので、とりあえず、変えてみました。エラーが起きました。 すみません! また教えてください。何度もすみません!0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[36]親投稿しょぼーん sin52382017/4/10 18:32それは多分SPの数がいっぱいになったからでしょう。 なので使い終わったSPを消していくようにすればいいのです。 SPUSEDとSPCLRとSPCHR()を使ってできます。 SPCHR()はアニメーション状態を取得する関数ですが、簡単にいうとその番号のSPが動いてるか動いてないか答えてくれるものです。 位置を変えているのであれば、SPCHR(管理番号)==#CHRXYで判断できます。 SPUSED()はそのSPを使っているかを答えてくれるものです。 SPCLRはSPを消してくれるものです。 これらとFORで全SPを調べていけばいいのです。 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[37]親投稿たくみ somsss2017/4/10 20:17すみません!プログラムに変えていただけませんか? #CHRXY のとことかがネットで調べてもわかりません!0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[38]親投稿しょぼーん sin52382017/4/10 20:56 FOR I=0 TO 255 ***** IF SPUSED(I)==1THEN IF SPCHR(I)!=#CHRXY THEN SPCLR I EMDIF ENDIF NEXT これに流れるSP以外にSPを使っていたら、 IF I==(使っているSPの管理番号) THEN CONTENUE を*****に置いて下さい。 複数ある場合は、 I==(1つめのSPの管理番号)に&&I==(2つめのSPの管理番号)&&I==(3つめ)……… をつけて下さい。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[39]親投稿たくみ somsss2017/4/10 21:20If spchr(l)!=#CHRXY then の行でシステムエラーが起きるのですがなぜでしょうか? ()のなかはLですよね... 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[41]親投稿しょぼーん sin52382017/4/10 21:47おおっと思いっきりいろいろと間違えてました。 正しくはSPCHR()ではなく、 IF SPCHK() != #CHKXY THEN~です。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[42]親投稿しょぼーん sin52382017/4/10 21:49ミス。 SPCHK()の中にl(エル)を入れてSPCHK(l)としてください。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[43]親投稿たくみ somsss2017/4/11 5:39エラーは直ったのですが、画像の通り、ドンがずっと流れていってます。これはSPが「動いていない」とすぐに判断して消しているせいですか?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[44]親投稿たくみ somsss2017/4/11 5:57Dataの最初の音符をドンからカッに変えたら、最初の音符はカッに変わったのですが、次からの音符は変えてみても、変わりませんでした。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[45]親投稿たくみ somsss2017/4/11 5:57譜面を読み込めていないのでしょうか?0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[46]親投稿しょぼーん sin52382017/4/11 21:00そう思ったら確認するのが吉です。 ?NOTE$などをし、しっかり譜面が読み込めてるか確認することが重要です。 これに限らず、思った動きをしないときは、変数を表示したり、IF文で音を鳴らしたりするのは、かなり大事です。 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[47]親投稿たくみ somsss2017/4/12 6:01?a$ではありませんか? ?a$でやると、全部の譜面が出ました。 ということは流す方に問題ありと言うことですね?1そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[48]親投稿たくみ somsss2017/4/12 7:23しょぼーんさんから教えてくださったfor l=0 to 255~next の文を抜くと、sprite の数が一杯になってしまう代わりに、譜面がちゃんと流れるようになりました。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[49]親投稿しょぼーん sin52382017/4/12 17:30IをFOR~NEXT以外に使っていませんか? 使っていたら、変数の値が変わってしまうので、別の変数名にしましょう。 自分が過去にIを使ったプログラムをアドバイスしていたら、すみませんでした。こちらのミスです。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[50]親投稿たくみ somsss2017/4/12 18:48できました。ありがとうございます。 あの、何度もすみませんがもう少しお願いします。 この前、ボタンを押しても反応しないときがあるといったと思うのですが、 VSYNC ループにボタンの判定をいれてもなおりません。 今回の「同じlを使っていた...」みたいなミスがありそうなことはありませんか? 同じようにfor ~next の文を消しただけでは直りません。 0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[51]親投稿しょぼーん sin52382017/4/13 20:34ボタンの取得だけでなく、処理も入れてますか? VSYNCループはメインループと思って下さい。0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[52]親投稿たくみ somsss2017/4/13 21:43処理とは何ですか? 無知ですみません.0そうだね プレイ済み2017/11/03 17:27:38に取得
プチコン3号 SmileBASIC コミュニティ返信[53]親投稿しょぼーん sin52382017/4/14 19:55要はプログラムや動作のことです。 IF文やFOR~NEXTもPRINTも全部処理です。 SPを処理するプログラム、処理が出来ていない、のように使います。 ちなみにプログラム全体をソースといいます。 間違っていたらすみません。 0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[54]親投稿たくみ somsss2017/4/29 21:50入れてました。遅れてしまいすみません。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[55]親投稿たくみ somsss2017/5/21 6:25入れていたのですが、なぜ出来ないんでしょうか?0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[56]親投稿たくみ somsss2017/5/21 6:32多分譜面を流すループのvicic?が、ボタンを押すタイミングと合っているのではないでしょうか? visicを取るとドンとカッの幅が極端に狭くなってしまいました。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[58]親投稿しょぼーん sin52382017/5/21 9:58恐らくそれだと思います。 なので、MAINCNTというものを使います。 MAINCNTというシステム変数(最初から値が決まっている変数)は、現在のフレーム数を取得できるのですが、簡単にいうと、プチコン起動してどれぐらい1/10秒が経ったかを表すものです。 これを使えば、 IF (MAINCNT MOD 60)==0THEN ~~~ で、1秒毎に処理を行うことができます。 これを曲のテンポに合わせて60のところを変え、GOSUB @FUMENをつければいいのです。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[59]親投稿たくみ somsss2017/5/26 21:43これであってますかね? どうなったら正解なのかもよくわかりません。すみません。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[60]親投稿しょぼーん sin52382017/5/26 22:03そこはテンポと何分音符刻みかで違ってきます。 x=テンポ/60/(何分/4) 例えばテンポが120で32分音符刻みでしたら、 x=120/60/(32/4)*60 x=2/8*60 x=15 なので、MOD 16とすればいいのです。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[61]親投稿たくみ somsss2017/7/16 18:18返信が遅れてほんとにすみません! なぜ、x=15でmod 16となるのですか?0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[62]親投稿しょぼーん sin52382017/7/16 21:09あ、多分誤字ってますね。 本当にすみません。 MOD 15が正しいと思われます。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[63]親投稿たくみ somsss2017/7/17 17:02あ、すみません。32分刻みって何でしょうか?0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[64]親投稿たくみ somsss2017/7/17 17:04ドンの間隔から16分かなと思い、やってみたのですが、それだと本家よりももっと遅いです。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[65]親投稿たくみ somsss2017/7/17 17:22● ● ● ● ● ● ● ● ● 4分 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● 8分 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 16分0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[66]親投稿しょぼーん sin52382017/7/17 20:36説明足りずすみません。 32分刻みというのは32分音符での数え方ということです。 1小節を32分に分け、音符を並べるということです。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[67]親投稿たくみ somsss2017/7/20 21:57あれ?16分だから16入れたら、遅すぎる!何で? 0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[68]親投稿しょぼーん sin52382017/7/21 7:47どこに16を入れましたか? あと、テンポが本家より遅いかもしれません。 googleとかで曲のテンポを調べてはどうでしょうか。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[69]親投稿たくみ somsss2017/7/31 21:56Modの後に入れました。多分200ですね。1そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[70]親投稿たくみ somsss2017/8/1 6:05間違いました。120/60/(□/4)*60 で□のところに入れました。0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[71]親投稿しょぼーん sin52382017/8/1 11:0016はそこであっています。 なので、テンポが遅いのかもしれません。 120の所をいじってはみてはどうですか?0そうだね プレイ済み2017/11/03 17:27:36に取得
プチコン3号 SmileBASIC コミュニティ返信[72]親投稿たくみ somsss2017/8/1 19:3450ですね。 50だと遅すぎる!0そうだね プレイ済み2017/11/03 17:27:36に取得