トピック
Ki.Hibiki Hibiki.2323

あきとさんとZEXさんへ 他の人が回答して下さっても良いです。

あきとさんとZEXさんへ»この間はDATA文でBGを表示について教えて下さり、誠に有難う御座いました。まだ解決していないので教えて下さい。(トピックを閉じた理由は僕の「試して見れば出来るだろう」と言う自己満足な考えで閉じてしまいました。ごめんなさい!今後はしっかりと解決するまで閉じない様にします!) あきとさんとZEXさんが言う通りにFOR文を使い、READ・BGPUTしました。(右側にコメントで定義番号を書いておきました。)それで、ZEXさんの様に定義番号を指定し、BGと文字列を同じ意味にしたいのですが、良く分からないです。どうやれば良いか教えて下さい! 画像のプログラムに変な所が沢山有ると思いますが、御了承下さい。
1そうだね
プレイ済み
返信[1]
親投稿
くつねこ mamimusu
他の人ですいません。 READ A$のあとに IF A$=="■" THEN BG=559 とやって、そのあとに BGPUT 0,BY,BX,BG とやればできると思いますよ!
0そうだね
プレイ済み
返信[2]
親投稿
********** itd12d
トピックすぐ閉じて「一応」謝ってるけど一向に改善されてないんだよなあ… A$でREADしてそのままだとBGPUTできません。 MID$で1文字だけ取り出し、IF文でBGPUTする必要があります。
2そうだね
プレイ済み
返信[3]
親投稿
Ki.Hibiki Hibiki.2323
パペット様»うぅ、ごめんなさい(涙) お二人方»しっかり教えて下さり有難う御座います♪試して来ます!
0そうだね
プレイ済み
返信[4]
親投稿
くつねこ mamimusu
BGPUT 0,0,0,A$だとずっと同じ場所にBGを置いてしまいますよ! FOR BY=0 TO 14 FOR BX=0 TO 24 READ A$ B=0 IF A$=”■“ THEN B=410 BGPUT 0,BX,BY,B でできるはずですよ!
0そうだね
プレイ済み
返信[5]
親投稿
********** itd12d
いや、みさりんさんの方法だとできない。 もしみさりんさんの方法でやりたいなら、DATAの文字を1文字ずつカンマ区切りする必要があります。
1そうだね
プレイ済み
返信[6]
親投稿
くつねこ mamimusu
あ、ほんとだ区切ってない。 ごめんなさい
0そうだね
プレイ済み
返信[7]
親投稿
********** itd12d
こういうのもありです。 少しデータは見にくくなりますが…
1そうだね
プレイ済み
返信[8]
親投稿
Ki.Hibiki Hibiki.2323
自分なりにお二人方のアドバイスを参考に書いて見ました。が...、エラーが出てしまいます。うーん...、一体どうすれば...。
0そうだね
プレイ済み
返信[9]
親投稿
********** itd12d
BGPUTのレイヤー指定がないやんけ bgput 0,x,y,b
3そうだね
プレイ済み
返信[10]
親投稿
突っ込みどころがたくさんあってなかなか難しい…。 プログラムの形だけじゃなくて命令の内容もちゃんと理解しているかな? 一つ一つコツコツと理解を深めていくのが大事です〜
3そうだね
プレイ済み
返信[11]
親投稿
Ki.Hibiki Hibiki.2323
パペットさん»確かにそうでした!ごめんなさい!でも、実行するとまだエラーが...。 でんぺんさん»どんどん指摘して下さい!全て指摘して欲しいです。こちらも勉強になりますから!
0そうだね
プレイ済み
返信[12]
親投稿
********** itd12d
あとありえるとしたらout of dataかな ちゃんとデータ26個ありますか? あとforループの変数を片方jに変えてみてください
0そうだね
プレイ済み
返信[13]
親投稿
Ki.Hibiki Hibiki.2323
エラーが out of range で、BGPUTの行に出て居ます。後、FORのループ変数をJに変えときました。
0そうだね
プレイ済み
返信[14]
親投稿
こう subwars
1.FOR文を縦列分だけ回す  (この時回数をカウントする) 2.FOR文を横〃  (〃) 3.文字を一文字分取得する 4.もし3の文字が"0"(データがない)なら2へ戻る 5.文字を取得し、ループ数分のxy座標へ  BGPUTする(SPならループ×16の座標) 6.戻る コピペですまんね
0そうだね
プレイ済み
返信[15]
親投稿
********** itd12d
bgputでout of rangeが出るならx,yのオーバーですね xscreen 0,120,120 をプログラム中のbgputより前に入れてください
0そうだね
プレイ済み
返信[16]
親投稿
say sayer.exe
ちょとまてーい! read x,y,a$ ってなんだよ Out of rangeのエラーが解決したとしても、思い通りには動かんよ
0そうだね
プレイ済み
返信[17]
親投稿
********** itd12d
read x,y,a$は特に問題ないのでは? 各dataに数値,数値,文字列が含まれていたら動くのでは?
1そうだね
プレイ済み
返信[18]
親投稿
くつねこ mamimusu
BGの座標はXは0から24、Yは0から14ですよ!
0そうだね
プレイ済み
返信[19]
親投稿
Ki.Hibiki Hibiki.2323
sayさん»僕もパペットさんの言う通り問題ないと思います。sayさんはどの様なエラーが発生すると思われて居るのですか? パペットさん»XSCREEN 0,120,120とやると、またしても out of range が...!
0そうだね
プレイ済み
返信[20]
親投稿
say sayer.exe
パペさん> BGPUT 0,x,y,b ここがまずい つか、そもそもJループの中にread文があるのもまずい 更に、A$を一文字づつ分けてる処理がないのもまずい
0そうだね
プレイ済み
返信[21]
親投稿
Ki.Hibiki Hibiki.2323
ちなみに、XSCREENが無いとBGの"将棋の銀"が縦に出ます
0そうだね
プレイ済み
返信[22]
親投稿
くつねこ mamimusu
1週ごとに1列ロードしていたら変数Iはいらないのでは?
0そうだね
プレイ済み
返信[23]
親投稿
こう subwars
data文から数値を消す READ A$ にする BGPUT I、Jにする
0そうだね
プレイ済み
返信[24]
親投稿
Ki.Hibiki Hibiki.2323
sayさん»Jの中にREADがあるのがまずいと言うのは、これで良いですかね?
0そうだね
プレイ済み
返信[25]
親投稿
********** itd12d
xscreenじゃなかったすまぬ bgscreen 0,120,120 ですね あとmid$も必須ね
0そうだね
プレイ済み
返信[26]
親投稿
GRS grs8001
プログラム的に複数の地雷を抱えているので 部分的に指摘しても他の地雷をふんで混乱するから(ココを直せと直したがまだエラーが出るから指摘の意味がわかんないよ~的な) 答えを見ながら、問題を解決した方が理解しやすいと思います。 (基本的にDATAを正解として作成しているので難ありですが(^^;)
0そうだね
プレイ済み
返信[27]
親投稿
Ki.Hibiki Hibiki.2323
パペットさん»全然大丈夫ですよ!! 皆さん»つ、ついに出来ました!!! まずはプログラムから投稿します!
0そうだね
プレイ済み
返信[28]
親投稿
Ki.Hibiki Hibiki.2323
成功画像です!! 皆さん、お疲れ様でした!!!
0そうだね
プレイ済み
返信[29]
親投稿
say sayer.exe
待て待て待てーい! ここからがはじまりだよ! 切らずに問題だった点を洗い出してみよう
1そうだね
プレイ済み
返信[30]
親投稿
Ki.Hibiki Hibiki.2323
sayさん»本当に、待て待て待てーい!ですね!!! ちょっと間違えた部分を見て来ますので少々お待ち下さい!
0そうだね
プレイ済み
返信[31]
親投稿
Ki.Hibiki Hibiki.2323
間違えて居たら言って下さい! 最初の僕が書いたプログラムと最終的に出来たプログラムを元に言います。 えーと...、まず一点目は、最終的に出来たプログラムの画像の174行目のFOR文ですね。READする文字列は14行なのに、FORの終了値を15と13のどちらかにしていて、 out of range,out of dataが何回も出てきた訳です。皆さんごめんなさい! まず一点目はこれですかね?
1そうだね
プレイ済み
返信[32]
親投稿
Ki.Hibiki Hibiki.2323
2点目はREADが最初のFORの中に無かった事です。これじゃあ、次のFORの終了値までをREADで読み込む事になるので、out of data が出てくる訳です。 2つ目もこれで良いですかね?
1そうだね
プレイ済み
返信[33]
親投稿
Ki.Hibiki Hibiki.2323
3つ目は、C$に文字列を入れて、開始位置を指定しなかった事ですね。これじゃあ、A$==何々 とやっても、何処から調べれば良いか分からないので、プチコン側が認識してくれませんね。 3つ目はこれで良いですかね? 大ざっぱで申し訳有りません!間違えた所は以上かな?
1そうだね
プレイ済み
返信[34]
親投稿
Ki.Hibiki Hibiki.2323
もし間違えた所が合っていたらコメント下さい!
0そうだね
プレイ済み
返信[35]
親投稿
say sayer.exe
待ってりょ こっちもコメントしたいんだりゃ 少々お待ち下さい
1そうだね
プレイ済み
返信[36]
親投稿
say sayer.exe
自己分析こそ大切だと思います 一点目ですが、ごめんなさいそこまで気付きませんでした  そういう条件漏れはおいらもしょっちゅうやってるんで  ☆ちなみにおいらのプロフ画像のコードはもろに条件漏れしてます 二点目は、そのままで、三つ前くらいのコード(「エラーが outo of range…」のところ)では、26*16の量DATA文が必要になります  これが、初っ端にみさりんさんの記述したデータパターンであれば  問題ないはずです 三つ目は、一番大事な部分だと思います  …まず字数が足らないので次に回します
1そうだね
プレイ済み
返信[37]
親投稿
say sayer.exe
「Iループ、Jループへの処理」を理解してないことが挙げられます 「IループはDATA文を読み込むためのものだよーん」 「JループはIで読み込んだ内容を加工するんだな」 と、個々のループのやる仕事を分ける事が必要です Jループの仕事は「A$を加工する仕事」なので、 「A$を一文字ごとに分割します」 →c$=mid$(a$,j,1) 「分割したものを内容に応じて設定し直します」 →if ~(省略) 「加工した内容を表示する」 →bgput 0,x,y,b (ここはここで別の問題があるが、これはまたいつか) ということをさせなければなりません
1そうだね
プレイ済み
返信[38]
親投稿
Ki.Hibiki Hibiki.2323
sayさん»一つ一つに解説有難う御座います! 皆さん»本当に勉強になりました!有難う御座いました!!!
1そうだね
プレイ済み
返信[39]
親投稿
ΖΕΧ ZEX256
0そうだね
プレイ済み
返信[40]
親投稿
say sayer.exe
更に重要な点があるのですが、マジでおいら学がないので説明ができなくてめっさもどかしいもんがあります あなたの(完成前)コードではループ変数はI,Jを使ってます GRSさんのコードではループ変数はY,Xを使ってます 変数名が違うだけなんですが、中の処理の bgput 0,x,y,b が、いっこあることで、「あいあむ変数名でっせー」が「私はこのために存在する」と、性格?が付与されるような??? ごめんなさい 説明できません 「変数に(俺が)性格付けして、演じさせるように(俺が)書く」のが大事なんだと
1そうだね
プレイ済み
返信[41]
親投稿
あきと SideBurnsM
皆さん優しい方々かりで素敵です
0そうだね
プレイ済み
返信[42]
親投稿
GRS grs8001
sayさんの言いたいことは判ります。 『文字列 A$ の何番目を MID$ で抜き出すのを明確にする』 でも、DATA文の見た目並びを 『BGPUT レイヤー,X,Y,スクリーンデータ』の X,Y座標と重ね合わせて考えたほうが今回の場合簡単と思いました。 今回は3つの大きな地雷を方法は何であれ撤去できた事が重要で、自信は次のステップへの大きな力となると思います。
1そうだね
プレイ済み
返信[43]
親投稿
Ki.Hibiki Hibiki.2323
あきとさんとZEXさん»わざわざ来て下さり有難う御座いました! 他の質問をしたいのでコメントを受付終了させて頂きます!
1そうだね
プレイ済み