トピック
nobu divine-creator

いくつか発生した疑問について

まず最初に、SPCHRについての疑問ですが、SPCHR 変数,番号の「すでに変数に入っている数字」と番号が同じだとエラーになる…ということがありますか?(エラーの理由がそれしか思いつかないんですけど…(´・ω・`)。)
2そうだね
プレイ済み
返信[1]
親投稿
くつねこ mamimusu
こうゆうことですか?
0そうだね
プレイ済み
返信[2]
親投稿
nobu divine-creator
例のSP数が少な過ぎですけど、内容的にはそんな感じです。 SPDEF 0,以下略:SPSET 0,0※略した部分は間違っていません! SPDEF 1,以下略:SPSET 1,1 SPDEF 2,以下略:SPSET 2,2 HENSUU=0 ←初期番号が入力済みになっています! WHILE 1 TOUCH TM,TX,TY IF タッチ範囲を指定 THEN SPCHR HENSUU,0:BREAK IF タッチ範囲を指定 THEN SPCHR HENSUU,1:BREAK IF タッチ範囲を指定 THEN SPCHR HENSUU,2:BREAK VSYNC WEND 上のような形式になっていますが、場合によってはHENSUUに入っている数字と変化後の数字が同じになってしまうことがあります…。 それが理由で、シンタックスエラーになってしまう場合があるんですかね?
1そうだね
プレイ済み
返信[3]
親投稿
くつねこ mamimusu
HENSUUの中身は変わらないのですか?
0そうだね
プレイ済み
返信[4]
親投稿
nobu divine-creator
中身?SPCHRは元々、変数を使わない場合には、 SPCHR 0,1 SPCHR 0,2 SPCHR 0,1 という感じに入力して、SPを0から1に、1から2に、2から1に変化させる命令です! なので、変数の部分は変化しませんが、後の数字のSPに変わることになります♪ しかし、タッチ操作でプレイヤーに選んでもらうと、変更前と同じ数字を使っている箇所を選んでしまうことがあります。(一部同じSP番号にしている所があるので…。) エラーの原因がハッキリしていないので、別の原因かもしれませんが、同じ数字になる所でエラーになったため、それが原因なのか?と考えました。
1そうだね
プレイ済み
返信[5]
親投稿
みむ*mim hidemimtp
変数の内容によってシンタックスエラーは出ません。 シンタックスは文法そのものが間違っています。
0そうだね
プレイ済み
返信[6]
親投稿
nobu divine-creator
そうなんですよね…。他のエラーもいろいろあって、それがシンタックスだったのか?現在は確認できない状態なのですけど、似ている変数が間違って処理される…ということはありますか?(普通はないと思いますが…。) HAIRという変数とHAIR_Bという変数を使っているのですけど、この2つが混同されてしまっている気がするのは、気のせいでしょうか?
0そうだね
プレイ済み
返信[7]
親投稿
みむ*mim hidemimtp
プチコンもシステムにたまーにバグがあったりもしますが、 とりあえずそれは抜きで考えた方がいいと思いますよ~。 おかしい時はとにかく LOCATE 0,0 ?HAIR,HAIR_B,SPCHR(0),SPCHR(1),SPCHR(2) などして画面に表示してみたり、DIALOGで下画面に変数の内容を表示して止めてみたり、STOP・CONTしてみたり、原因をつぶす技は色々あります。 分かれば「なんで俺こんな事に気付かないんだ・・・」と思うもんです(笑)
2そうだね
プレイ済み
返信[8]
親投稿
nobu divine-creator
あれ?!何故かHAIRの前のSPCHRが無い箇所がありました!ずっと忘れていたのか?どこかを書き換えた際に間違って消してしまったのか?どちらだか分かりませんけど、シンタックスエラーの1つはそれが原因ですね…。 ところで、座標が重なるSPを表示した場合、後から表示したほうが上にくるだけで、位置がズレたりはしませんよね? 元のSPを拡大しているので、大きさが4倍になっていることを計算して位置を決めたのですが、何故か表示される位置が違っています…(´・ω・`)。 座標の計算は間違っていないはずなのですが、何が理由でズレてしまっていると考えられますか?
1そうだね
プレイ済み
返信[9]
親投稿
みむ*mim hidemimtp
ズレは、スプライト定義ごとに原点位置が違うからでは? SPHOME 0 OUT X,Y などで原点位置が取れるので、?X,Yで確認を。
1そうだね
プレイ済み
返信[10]
親投稿
nobu divine-creator
原点は左上で統一しているのでズレていないのですけど、SPOFSの数値が勘違いな状態になっていたのが原因だったようです…(´・ω・`)。 SPDEFの並びとタッチ操作するBGの並びを合わせていたのですが、何故かSPOFSの所で数値の順番が変わっていたのが見つかりました|д゚)! エラーが発生した箇所のプログラムをよく確認して、どこかが違っていないか?見つけ出して、エラーがゼロになるまで繰り返すしかないですね…。 また何か、解決できない問題が発生したら質問したいと思いますので、回答をよろしくお願いします!
1そうだね
プレイ済み
返信[11]
親投稿
nobu divine-creator
何とか、複数発生していたエラーの原因を自力でつきとめ、解決していくことができました♪それは良かったのですが、新たな疑問が発生しました! 画像の一部をコピーするにはGCOPYを使えば良いのだと思いますが、説明を読んでもよく分からない…というか、貼り付ける範囲の指定は画面の外にはできないのでしょうか?また、同じグラフィック面にしかコピーできないのですか?それと、コピーする画像を縮小する方法はありませんか? どれか一つでも分かることがあったら、教えてください!もし、しばらく待っても回答が無ければ、別のトピックとして質問し直そうと思います。
0そうだね
プレイ済み
返信[12]
親投稿
みむ*mim hidemimtp
画面外貼り付けは、できます。マイナスでもOK GCOPYは、1番目のパラメータで指定したGRPから、GPAGEで指定しているページにコピーします。省略時はGPAGEの同じページからコピー。 拡大・縮小はありません。自分で書く必要があります。
1そうだね
プレイ済み
返信[13]
親投稿
nobu divine-creator
回答ありがとうございます♪ やはり、拡大や縮小はできないんですか…。だからこそ、この前まげさんが画像を縮小するツールを作っていたのですね! SPSCALEで拡大した複数のSPを1つの画像にしたいと思ったのですが、拡大したままではなく、縮小できたら良いと思ったんですけどね…。 SPSCALEで戻したSPを並べるしかないのであれば、GCOPYを使う必要は無くなりますね…。 あるいは、縮小しないで画像をGCOPYして、後からまげさんのツールで縮小すれば、SPSCALEで戻した状態と同じになるのでしょうかね?
0そうだね
プレイ済み
返信[14]
親投稿
みむ*mim hidemimtp
拡大・縮小ロジックを考えて組んでみるのも楽しいと思いますよ。 中間色を使用しない、SPSCALEと同じ縮小方法なら座標の小数点以下を四捨五入してその整数座標の色を取得するだけだし、中間色を入れてきれいに縮小したいなら、例えば計算した座標が「3.25」だったとすると、座標3の色を75%、座標4の色を25%の割合で混ぜればいいわけです。 細かいことを加味しだすとややこしいですが、基本的な部分は大して難しくないですよ。
0そうだね
プレイ済み
返信[15]
親投稿
nobu divine-creator
とりあえず、拡大・縮小は後回しにして完成を目指していますが、何か不思議な現象が起きたので、質問したいと思いました。 WIDTHを初めて使ってみたのですが、それを使った後にスプライトの表示が変な感じになってしまいました! コンソール文字の大きさを変更したことが、スプライトの位置などに影響するってことはあるのでしょうか? ちなみに、その命令を追加する前は正常に表示されていて、たぶんそのせいいじゃないかと感じているのですけど、別の理由が考えられますか? 文字の大きさを変更するのは途中で、その後に元の大きさに戻しているのですけど、スプライトへの影響は残ったままになっていました…(´・ω・`)。
0そうだね
プレイ済み
返信[16]
親投稿
みむ*mim hidemimtp
コンソールだけの変化なので影響はないと思いますが、何がどうなったのか書かれていないので試しようがありません。 その「途中」のWIDTH 16を消してみて、消す前と消した後でスプライトに何か影響したのであれば、システム的な原因も考えられますねー。
0そうだね
プレイ済み
返信[17]
親投稿
nobu divine-creator
済みません!おかしなミスを見落としていただけのようでした…。WIDTHのせいではなく、変な所に「,」を付けてしまっていたのが主な原因でした! プログラムの一部をコピーしていたら、範囲指定をミスしてしまっていたようです…。 あとは、スプライトのサイズを勘違いしていた所もあり、そのせいでSPOFSの数値にズレが生じてしまっていたみたいです…。 原因が分かったため、何とか修正できました♪お騒がせして済みませんでした…。 これで何とか完成できそうです♪
1そうだね
プレイ済み
返信[18]
親投稿
nobu divine-creator
一応、一通りのミスを修正して、正常にエンディングにたどり着けるようになりましたが、MAIN_LOOPに戻りそのまま2周目を開始すると、一部の変数が違っていたり、スプライトの位置が変わってしまったりするという現象が発生しました! でも、一時的におかしく表示されますが、普通に操作をしていると自然に修正されるので、原因が不明なのは問題ですけど、深刻なエラーという感じでもないような微妙な状態です…。 MAIN_LOOPに戻った時に、入力された変数が残っているせいで発生しているみたいですけど、その後に変数の再入力が行われて元に戻るという感じです。 でも、一部のスプライトの位置が変わるのも変数のせいなのでしょうか?別の位置設定の変数が一時的に誤入力されてしまうんですかね…? 害は少なく、自然に直るものの、よく分からない現象が発生するのは気味が悪いですね…(´・ω・`)。
1そうだね
プレイ済み
返信[19]
親投稿
みむ*mim hidemimtp
ゲームオーバー後などに再プレイすると最初と違う、ってのは、あるあるです。初期化忘れが主な原因ですね。。。 そうならないように、作りながら、初期化が必要そうな変数はゲーム再スタート時に初期化ロジックを書いておくなどしておかないと、出来上がってからおかしいと追うのが大変です。 可能性のある変数をPRINTで表示したりDIALOGで止めながらつぶしていくしかないですよー。
1そうだね
プレイ済み
返信[20]
親投稿
nobu divine-creator
ゲームオーバーがあるわけではないので、ただ単に終わりまで進んだら最初のほうに戻って、再スタートするだけなんですけどね~。 2周目を始めると、1周目で選んだパーツがそのまま再表示されるのですけど、それは特に問題がないのです♪そのままでOKなので、エラーというわけでもありません! 問題になっているのは、そうして再表示されたスプライトの位置がおかしくなっているものがあることで、それも他のパーツを選べば正しい状態に戻ります♪ 変数をデフォルトに戻すと、引き継がれなくなるので、2周目に変数が引き継がれること自体は悪くない…というか、むしろそのほうが良いという感じです! とりあえず、どのパーツがおかしくなるのか?特定したり、いろいろと調べてみようと思っていますが、残り日数が少ないのが困りますね…。 何とか早く解決したいです!
2そうだね
プレイ済み
返信[21]
親投稿
nobu divine-creator
ところで、変数って新しく入力されると入れ替わるはずですよね?! MAIN_LOOPに戻った後で、変数を最初に入力した部分を通過するのですが、その時に再入力されないんですかね? すでに入力されていても、最初に入力した場所を再び通れば、新しい数値に変わると覚えていたのですけど、2周目からは通過しても無視されてしまうのでしょうか?
1そうだね
プレイ済み
返信[22]
親投稿
みむ*mim hidemimtp
んー、何やら度々、バグだとか無視されるとかいう言葉が出ますが、バグはほぼ100%自分のミスなので、冷静に原因を探しましょう。 プログラムを見てないので分かりませんが、大筋は、 @初期設定 @プレイ初期設定 @メインループ  (GOTO @ゲームオーバー) GOTO @メインループ @ゲームオーバー GOTO@プレイ初期設定 です。 初期設定は一回で済むもの(SPDEFやBGファイル読込みなど)、 プレイ初期設定は、やり直すときに初期化するもの(自機の初期座標、スコア=0など) そしてメインループです。メインループには、座標の移動などがありますが、初期座標の指定などはメインループの前にしているはずです。
1そうだね
プレイ済み
返信[23]
親投稿
nobu divine-creator
どうやら、最後に入力されたスプライトの番号が、最初に戻った時にそのまま残っていると不都合が生じる場合があったため、最初に戻る直前にデフォルトとして設定した番号に入れ替えるようにすることで、問題が起こらないようにしました! そして、無事に応募することができましたので、このトピックを終了します。
1そうだね
プレイ済み