トピック

READとDATAの使い方がワカラナーイ!

今、太鼓の達人モドキを作っているのですが、音符を表示して動かすと言うプログラムを作っているのですがREADとDATAを使う所までしか分かりません、使い方だけでも教えてくださると幸いです。
2そうだね
プレイ済み
返信[1]
親投稿
HMF gunsofthemy
READはDATAを読み込むのに使います。1つのDATAにつき1つのREADが必要なので、FOR NEXT命令を使ってDATAの数だけREADするといいでしょう。また、DATAでは何項目も並列して入れることが可能です。その場合、数に適応した変数をREADにくっつけましょう。 RISTREで読み込む先を指定することも可能です。
0そうだね
プレイ済み
返信[2]
親投稿
初心者なのでもうちょっと分かりやすくお願いできますか?すいません
0そうだね
プレイ済み
返信[3]
親投稿
だにえる haru2016nen
【概要】 READはDATA文の数値や文字列を読み込み、 変数に代入する。 例 READ A,B,C,D,E DATA 3,1,4,1,5 は下と同様の処理 A=3 B=1 C=4 D=1 E=5
1そうだね
プレイ済み
返信[4]
親投稿
ほしけん Hosiken
逆質問すいませんが、配列とFOR~NEXTは分かりますか? この2つはREADとDATAよりも順序的に先に知っといた方がいいものです
3そうだね
プレイ済み
返信[5]
親投稿
FOR~NEXT命令(というか構文) 繰り返しをするための文です。 FOR I=0 TO 9 (中身) NEXT
1そうだね
プレイ済み
返信[6]
親投稿
(中身)を0から9まで1ずつ数えて「0,1,2,3,4,5,6,7,8,9」(つまり10回)繰り返します。 なお、Iは変数で、これも応用するのは基本です。 『DATAでは何項目も<並列>して入れることが可能です。』 ここでは「並べることができる」ということでしょうか。「,」を使います。 例:DATA 101,128,334 『数に<適応>した変数をREADにくっつけましょう。』 言い換えると「対応する」でしょうか。さっき「101,128,334」と3個並べたので「READ A,B,C」のように変数も3つ並べる、またはさっきの「FOR~NEXT構文」が便利です。 RESTORE命令 読み先をラベルで指定できます。
1そうだね
プレイ済み
返信[7]
親投稿
HMF gunsofthemy
あぁ、皆さんに先を越されてしまった・・・ 【画像を見て下さい】
3そうだね
プレイ済み
返信[8]
親投稿
あまさとさんの説明の中の334という数字に反応してしまった僕は重症 FOR~NEXTとDATA,READはよく組み合わせて使われる (偏見)のでFOR~NEXTを先に知った方がいいと思う
1そうだね
プレイ済み
返信[9]
親投稿
皆様ありがとうございます!試しに作ってみましたどうですか?
0そうだね
プレイ済み
返信[10]
親投稿
RESTOREを繰り返し実行する問題があります。 「FOR~NEXTの中身は、繰り返したい行動だけにする」 これ原則
0そうだね
プレイ済み
返信[11]
親投稿
改良してみました、どうですか?
0そうだね
プレイ済み
返信[12]
親投稿
この場合は、(偶然)予定通りに動く RESTOREはREADより先にやらないと意味が無いんじゃ
0そうだね
プレイ済み
返信[13]
親投稿
そうですね!直しておきます。では、表示して移動させるプログラムはどうしたらいいですかね?
1そうだね
プレイ済み
返信[14]
親投稿
表示・移動するだけでさっき書いた読み込みと同じぐらいの規模になるぞい 読み込みのプログラムはどこかに控えておいて、 まずは、WHILE~WEND構文で「終わらないプログラムを作る」ところから ちなみに、私が言う「構文」というのは、「いくつかの単語をセットに使うもの」なんだけど、わざわざ言い分ける人はあまりいないよね。
0そうだね
プレイ済み
返信[15]
親投稿
ここからどうすればいいんでしょう?
1そうだね
プレイ済み
返信[16]
親投稿
おおっと、囲むところが変だじょ 今までの後ろに空っぽのWHILE~WENDを作るだけでいいんだじょ
1そうだね
プレイ済み
返信[17]
親投稿
あ、WHILEの後ろにはスペースを空けて1と書くといいんじゃ
0そうだね
プレイ済み
返信[18]
親投稿
Soybeanman 2013niconico
WHILEの後ろに1ではなく、TRUEと書くと読みやすい。 (1だと、真偽値ではない数字だと解釈される可能性があるため) まあ、どちらでも結果は変わらないので、 どちらでもいいです。
3そうだね
プレイ済み
返信[19]
親投稿
HMF gunsofthemy
RESTOREは画像のようにREADしたくないDATAがある場合、ラベル(@Aとか@Bのこと)から指定の数だけDATAをREADします。 そのため、主さんのような画像の場合は必要ありません。でも譜面のような物なら、コレは絶対にいるのでしっかり覚えておいて下さい。
1そうだね
プレイ済み
返信[20]
親投稿
「1だと、真偽値ではない数字だと解釈される可能性があるため」 プチコンには真偽値型というものはないので、暗黙の型変換とか抜きで「TRUEは1と等しい」で覚えていいじゃないかなぁ?
3そうだね
プレイ済み
返信[21]
親投稿
こんな感じですかね?
1そうだね
プレイ済み
返信[22]
親投稿
GRS grs8001
READとDATAの基本 DATAは 変数に読み込ませたい文字や数字を用意しておく場所です。 READは DATAで準備した文字や数字を変数に代入する命令です。 RESTOREは DATAを読み込む先頭位置を決めます
2そうだね
プレイ済み
返信[23]
親投稿
GRS grs8001
①RESTORE @A ②READ A1$ ③PRINT A1$ BEEP:WAIT 60 ④READ A2$ ⑤PRINT A2$ @A ⑥DATA "あ" ⑦DATA "い"
1そうだね
プレイ済み
返信[24]
親投稿
GRS grs8001
①を実行すると@A以降のDATAを読み込む位置にします。 (なので、⑥のDATAが読み込む位置になります) ②を実行すると⑥のDATAから"あ"を文字を取り出してA1$に代入します。 ③でA1$の中身を表示するので確認できますよね。 ※ここで注意することは、READを実行終えると、DATAの読み込む位置が⑦に自動的に移動することです。(初心者はココで勘違いを起こしやすい) ④でREADを実行すると⑦の"い"をA2$に代入されます。 4行目のRESTORE @Aの位置が「なんかへんだぞ」と気づくはずです △▲ △▲ △▲ △▲ って、表示されるのは…
1そうだね
プレイ済み
返信[25]
親投稿
ほしけん Hosiken
以下はすごくかみくだいた説明です。書いてあることは他の方と同じです。 DATAは名前の通りデータであり、READは読むという意味です。データを読みます。READ A$ だと、読んだデータを変数A$に入れます。 ちなみに本を読むとき、常識的には1ページ目を読んだら2ページ目、次は3ページ目……と順番にページを読みますよね。 プチコンも常識にならって、最初は一番上にあるDATAを読みます(READします)。 次に読んだら(READしたら)2つ目のDATA、次は3つ目…と順番に進みます。 RESTOREは本で言うと何ページに移動しなさいに近いです。 RESTORE @ABC と指示してあげると、@ABCの直後にあるDATAから読みます。
1そうだね
プレイ済み
返信[26]
親投稿
ほしけん Hosiken
FOR I=0 TO 3  ○○○ NEXT FOR と NEXT の間は繰り返します。 Iを0,1,2,3と増やしながら、4回繰り返します。 READ を4回繰り返すのでデータを4つ読むはずですが この間にRESTOREを入れると、本でたとえると 1ページ目に戻る→1ページ目を読む→1ページ目に戻る→1ページ目を読む… と1ページ目を4回読むだけで4ページ目に行けません。 今したいのは4ページ目まで順番に読むことです。 なので、RESTOREは FOR の前の行に移動してください。
1そうだね
プレイ済み
返信[27]
親投稿
ほしけん Hosiken
もっと細かく言いますと ・RESTORE をしない場合、一番上のDATAから読む。 ・「@A」は一番上のDATAの直前にあるので、RESTORE @A すると、一番上の DATA から読む。 ・どちらにしろ、一番上のDATAから読む!! → というわけで、このプログラムに限っていえば、RESTOREがなくても意図通りに動きます。 でもRESTOREはいずれ使うので覚えておいて良いと思います。
1そうだね
プレイ済み
返信[28]
親投稿
WHILE 1 WEND が用意できたね。そしたら、今度は中身を詰めていくんだなぁ まずは「具を考えます」
0そうだね
プレイ済み
返信[29]
親投稿
中華巻きか、カリフォルニアロールか、なんちゃって。 和風と洋風じゃないけど、2択あるのよ。 コンソール or スプライト これを選んだら表示に進めるんだなぁ
0そうだね
プレイ済み
返信[30]
親投稿
ちなみに、いままで「PRINT」で使ったのはコンソールね。 スプライトは新しい命令を使うのだ
0そうだね
プレイ済み
返信[31]
親投稿
特徴 コンソール 1マスの大きさが決まっています。移動するのも「マス」単位です。 スプライト 大きさ自由です。移動も自由です。
1そうだね
プレイ済み
返信[32]
親投稿
スプライトの方が良いですね!
1そうだね
プレイ済み
返信[33]
親投稿
スプライトの使い方 まず「準備」します。 準備なので「WHILE~WEND」の「中ではなく手前」に書きます。 SPSET 0,496(絵は違うけどあとで変えられるからとりあえず表示してみよう)
1そうだね
プレイ済み
返信[34]
親投稿
こんな感じですかね?
0そうだね
プレイ済み
返信[35]
親投稿
yes で、実行したの?
0そうだね
プレイ済み
返信[36]
親投稿
すいません忘れてました。
2そうだね
プレイ済み
返信[37]
親投稿
ほしけん Hosiken
おっとその前にRESTOREの位置を動かしておいた方がいいと思います。 忘れないうちに。
1そうだね
プレイ済み
返信[38]
親投稿
これで良いでしょうか?(返信遅くなってすいません)
0そうだね
プレイ済み
返信[39]
親投稿
ほしけん Hosiken
だめですね。 DATA "△▲" じゃわからないのでDATAの4行を以下に変えてみてください。 DATA "1ばんめ" DATA "2ばんめ" DATA "3ばんめ" DATA "4ばんめ" それでRESTOREの位置を正しい場所に置いたら 「1ばんめ」「2ばんめ」「3ばんめ」「4ばんめ」 と4つ順番に画面に表示されるので、ちくいち聞かなくても良いかダメかわかります。 今の状態だとダメなので「1ばんめ」が4つ出ます。なんでダメかは、前の書き込みをあらためて読み直してください。(意味が分からなかったら分からない箇所を言ってOKですよ)
0そうだね
プレイ済み
返信[40]
親投稿
こんな感じですかね?(何度もすいません)
0そうだね
プレイ済み
返信[41]
親投稿
実行後
0そうだね
プレイ済み
返信[42]
親投稿
ほしけん Hosiken
はい。100点じゃないけど実行結果が正しくなったのでセーフです。 実はこのプログラムだとRESTOREがなくても結果が変わりません。動かした場所はまったく意味がない場所なので「たまたま」セーフになりました。 9行目の「@A」の前に「DATA "はずれ"」と書いて実行してみてください。 そのあと、RESTORE @A をどこの行に移動させると、「はずれ」が表示されず1~4ばんめが表示されるか探して見てください。その場所が100点の答えとなります。
0そうだね
プレイ済み
返信[43]
親投稿
これでいいでしょうか?
0そうだね
プレイ済み
返信[44]
親投稿
実行後
0そうだね
プレイ済み
返信[45]
親投稿
諸事情があり閉めなきゃならないので最新のお絵描きに移動願います!
0そうだね
プレイ済み