トピック

SPを同時に複数表示するには?

座標X,Yがあったとします、二点(例えば、X,Y X+10,Y+10) にSPを置く場合のプログラムのヒントについて、教えて下さい。 また、RNDの中から特定(例えば、20と45と67と99と86)などを取り出したい場合はどうすればいいのかも、ヒントを下さい<(_ _)>
3そうだね
プレイ済み
返信[1]
親投稿
ちなみに今、こんな感じです。
0そうだね
プレイ済み
返信[2]
親投稿
だにえる haru2016nen
番号0のSPと同じ絵を使いたいってことなら SPSET 1,0 と SPOFS 1,10+X,10+Y でよくない?
2そうだね
プレイ済み
返信[3]
親投稿
yosni16720 koyuki-16720sub
SPOFS 1,X+10,Y+10 でいいと思います^^ 求めてる答えと違ったらすいません
2そうだね
プレイ済み
返信[4]
親投稿
だにえる haru2016nen
RNDを使って 「20、45、67…」の内から どれか1つをピックアップしたいって ことかな? 例1: DIM D[3] COPY D,@L @L:DATA 20,45,67 ?D[RND(3)]
2そうだね
プレイ済み
返信[5]
親投稿
だにえる haru2016nen
例2: ?MID$("204567",RND(3)*2,2) このとき、数値で扱いたい場合は VAL()を使えばいい。
1そうだね
プレイ済み
返信[6]
親投稿
やってみました。けど、エラー4が発生します。原因が分かりません!(><)
0そうだね
プレイ済み
返信[7]
親投稿
謎のPRINT ?D[RND(6)] ↑これ
3そうだね
プレイ済み
返信[8]
親投稿
だにえる haru2016nen
「?」はPRINTと全く同じ効果ね。
2そうだね
プレイ済み
返信[9]
親投稿
スー thanks_0u0
30,31行目のDIMを[3]でなく[6]にしてみてください( ´ u ` ) 配列が3つ分しか用意されていないのにRND(6)を使っているので配列の存在しない部分を指定しちゃってるんだと思いますー。
1そうだね
プレイ済み
返信[10]
親投稿
スー thanks_0u0
あ、ホントだ「?」付いてるー。確かにそれは外さないとですね。 多分?を外してDIMを直せば動くような気もするのですが、COPYやSPSETがループに入っちゃってるー。しかもFOR〜NEXTがループに混じってるー(・д・) プログラムの流れは一度確認してみた方が良いかもしれません。
1そうだね
プレイ済み
返信[11]
親投稿
わぁ~!たくさんの指摘ありがとうございます!一応なおしてみましたが…これでいいんですか? あと、AをおしたらSPが表示され、別のところで押したらさっきのが残っていてもうひとつ表示される というプログラムの作り方のヒントを下さい!
0そうだね
プレイ済み
返信[12]
親投稿
BlackSoft BlackSoft.mkII3g
こんなイメージですか? ID=0 WHILE 1  REPEAT   VSYNC  UNTIL BUTTON(2)  SPSET ID,RND(50)  SPOFS ID,RND(384),RND(224)  ID=(ID+1)MOD 512 WEND
0そうだね
プレイ済み
返信[13]
親投稿
Black soft s>>いつも回答ありがとうございます<(_ _)>そうです、そんな感じです。あとは、好きな座標(36個)に好きなSPを出したいのですが...
0そうだね
プレイ済み
返信[14]
親投稿
BlackSoft BlackSoft.mkII3g
・DATA からの読み込み、配列への格納 ・36回のループ処理(ヒント:FOR制御) ・FORのループ変数を使用した、配列からのデータ読み出し あとは、↑に書いたサンプルのボタン入力待ち処理を使えば、意図した動作になると思いますよ。 どんな複雑なゲームも、基本的な処理の組み合わせで出来ています。頑張ってくださいね!
0そうだね
プレイ済み
返信[15]
親投稿
アドバイスありがとうございます! …でも、やっぱり出来ません(><)Aを押したら指定した座標に表示し、なおかつ残して別の場所で押したいんです。が…間違っている行があったら教えて下さい<(_ _)>
0そうだね
プレイ済み
返信[16]
親投稿
キルル2 kiruru2
SPSETに関してですが、 管理番号を指定せずに SPSET キャラ番号 OUT 変数 と書くと、使われていない管理番号を探して、そこにSPSETしてくれます 変数には、何番にセットされたかが入ります(全てのスプライトが使われていた場合、SPSETは実行されず、変数には-1が入る) これを使ってみてはいかがでしょうか?
0そうだね
プレイ済み
返信[17]
親投稿
BlackSoft BlackSoft.mkII3g
今のままだと、61~68行目を無限にループしてしまいます。前に提示したプログラムはただのサンプルなので、そのまま自分のプログラムに組み込んでも正しく動きません。 まずは全体の構造を見直してみた方が良いでしょう。 前もって設定しておくべき内容(初期化)と、ループ(メイン処理)内で実行する内容に分けてください。
0そうだね
プレイ済み
返信[18]
親投稿
一旦ここまで戻しました。 あとは置いたSPを表示したままに出来るといいのですが…
0そうだね
プレイ済み
返信[19]
親投稿
矢印の所で押すと今ある花がやっぱり消えてしまう… 難しい。けど、その分燃えます(^∀^)
0そうだね
プレイ済み
返信[20]
親投稿
スー thanks_0u0
今は、47行目がSPOFS 2,〜〜ってなってるので、毎回2番のSPを置いています。これだと2回目に置いたときに元いた2番が消えてしまいます。 元いた2番を消さないためには2番じゃないSPを置かないといけません。 まずは、SPOFS ID,〜〜、という感じで番号の部分を変数にします。すると違う番号に置けるようになります。 そして、SPを置く前か後に変数IDを増やします。ループに入る前にIDの初期値を設定しておくのも忘れずに。 そんな感じでやってみてください(・u・)
0そうだね
プレイ済み
返信[21]
親投稿
複数表示出来ました! でも、数が足りないです…今から画像を見せますので、また指摘お願いします<(_ _)>
0そうだね
プレイ済み
返信[22]
親投稿
ここまでしか表示できません! エラーの範囲が足りないとはどういうことですか?
0そうだね
プレイ済み
返信[23]
親投稿
恐らく34行目で1秒間に60回というものすごいスピードでスプライトを表示しているからだと思います。 なので、ボタンを押したときだけスプライトを表示すればいいので、 34行目を消して、 41行目あたりの IF (B AND 16) THEN SPOFS EC,X-5,Y+5 を IF (B AND 16)==16 THEN SPSET 1 OUT EC SPOFS EC,X-5,Y+5 ENDIF に変えればうまくいくはずです。
0そうだね
プレイ済み
返信[24]
親投稿
ありがとうございます!できました! また疑問が出来た時に聞きます。 そしてトピを一回閉めます。 答えて下さった方、ありがとうございました(^∀^)
1そうだね
プレイ済み