投稿
ネタバレ
Daisuke 0909daiki09
プチコン初心者です。上から敵がランダムで落ちてくるプログラムを作ったんですが、上手く行きませんでした…プログラムを見せるので親切な方教えてください。
2そうだね
プレイ済み
返信[1]
親投稿
Daisuke 0909daiki09
@ENEMYからRETURNまでが問題のプログラムです…
0そうだね
プレイ済み
返信[2]
親投稿
reji Satoshi.1103
まずBY=0をメインループにいれないでVSYNC 1はVSYNC 3くらいでいいかも…しれません。
0そうだね
プレイ済み
返信[3]
親投稿
reji Satoshi.1103
他にも言いたいところが…
0そうだね
プレイ済み
返信[4]
親投稿
Daisuke 0909daiki09
あ、是非お願いしますm(_ _)m
0そうだね
プレイ済み
返信[5]
親投稿
Daisuke 0909daiki09
あの…サトシさんの前コメの通りにしたら敵が降りてくる事は出来たのですが、処理されずにそのまま残ってしまいました…
0そうだね
プレイ済み
返信[6]
親投稿
Daisuke 0909daiki09
2つ目の画像は IF BY>28 THEN BY=28 ↑28は''-''の座標 の命令も追加しました。
0そうだね
プレイ済み
返信[7]
親投稿
say sayer.exe
33行と31行を入れ替えてみましょう たぶん理想通りの処理になると思います ところで「上手く行きません」では説明不足です 「何々したい」なら助言しやすいんで、そういう感じでお願いします
1そうだね
プレイ済み
返信[8]
親投稿
Daisuke 0909daiki09
ありがとうございます!
0そうだね
プレイ済み
返信[9]
親投稿
Daisuke 0909daiki09
sayさんの言う通りにしたら敵が落ちてくるようにはなったんですが、敵がPRINT ” ”ですぐ消されて表示されません。どうすればいいですか?
0そうだね
プレイ済み
返信[10]
親投稿
say sayer.exe
消す 移動する 書く この順番でやってみてください
1そうだね
プレイ済み
返信[11]
親投稿
Daisuke 0909daiki09
sayさんの言う通りプログラムを入れ換えてみたのですが ||| ||| ↓↓↓ ↓↓↓ __________________\(^q^)/_________ こんな感じになりませんでした…
0そうだね
プレイ済み
返信[12]
親投稿
HoneyWorks CHINOMIHOKO
ちょっとプログラム考えるんで待っててください
0そうだね
プレイ済み
返信[13]
親投稿
Daisuke 0909daiki09
はい。
0そうだね
プレイ済み
返信[14]
親投稿
HoneyWorks CHINOMIHOKO
こんな感じでどう?? まあ↓↓↓↓↓が落ちてくるだけだけど いいよね? ーーーーー\(^0^)/ーーーーーーー ↑これも動いた方がよかった?? ならまた考えるけど ~宣伝~ 初心者サークルやってるんでよかったら sayさんも入ってる…はず
0そうだね
プレイ済み
返信[15]
親投稿
Daisuke 0909daiki09
ありがとうございます!
0そうだね
プレイ済み
返信[16]
親投稿
Daisuke 0909daiki09
ヤドカリさんのプログラムを参考にしてプログラムを作ったのですが上手く行かずにこんな感じに↓ ||| ↓↓↓ ___\(^q^)/_____ ここまでは上手く行ってますが次のループで ↓↓↓ ↓↓↓ ↓↓↓ ___\(^q^)/_____ なってしまいました…しかもRND命令を入れているのに左端からしか↓↓↓が落ちてきません。プログラムを見せるので問題点を教えて下さい。
0そうだね
プレイ済み
返信[17]
親投稿
Daisuke 0909daiki09
↑図を書きましたがやっぱり分かりづらいと思うので画像付けます。 最初のループ
0そうだね
プレイ済み
返信[18]
親投稿
Daisuke 0909daiki09
2回目のループ…
0そうだね
プレイ済み
返信[19]
親投稿
reji Satoshi.1103
とりあえず公開キーを公開して手直ししてもらうのはどうでしょうか?
0そうだね
プレイ済み
返信[20]
親投稿
HoneyWorks CHINOMIHOKO
↓が左になるのはLOKATEがないからと ZYとかがループ内に入ってしまっているからかな… なぜCLSを使わないのかわかんないけどループの最初にCLSはいれたほうがいいかも でIF THENでZYが0になったときだけZXを変えた方がいいと思う
0そうだね
プレイ済み
返信[21]
親投稿
Daisuke 0909daiki09
ヤドカリさん»ヤドカリさんの助言通りにLOCATEを付け足したら上手く行きました!ありがとうございます! CLSを使わないのはCLSを使うと操作する\(^q^)/が消えてしまうためです
0そうだね
プレイ済み
返信[22]
親投稿
Daisuke 0909daiki09
サトシさん»キー公開はどうやってするんですか?方法が分かりません…
0そうだね
プレイ済み
返信[23]
親投稿
Daisuke 0909daiki09
ヤドカリさん»ループの中にCLSを入れるんですか。勘違いしてました。すみません…
1そうだね
プレイ済み
返信[24]
親投稿
Daisuke 0909daiki09
もうひとつ質問があります。画像のようにくっつけると ||| ↓↓↓ _____\(^q^)/______ にならないのは何故なんですか?知っていたら教えて下さい…
0そうだね
プレイ済み
返信[25]
親投稿
Daisuke 0909daiki09
↑@FALLと@ENEMYをくっつけるでした。すみません。
0そうだね
プレイ済み
返信[26]
親投稿
say sayer.exe
うーむ… 何をどうしたいかがよくわからなくなってきました 今一度ルールから整理しますが、落ちてくる↓を避けるゲームですよね? 同時にいくつもの↓が落ちてきますか?("↓↓↓↓↓"と言う場合は一つとみなします) 落ちてくる場所はランダムですか?
0そうだね
プレイ済み
返信[27]
親投稿
say sayer.exe
想像してコードを書いてみましたが、ちょっと変だったので消しました もし、削除されましたメッセージが残ってるのなら、そういうことですんで気になさらんで下さい
0そうだね
プレイ済み
返信[28]
親投稿
Daisuke 0909daiki09
sayさん»わざわざありがとうございます! 僕の作ったのは同時ではなく一つずつ落とします。(同時に落とす方法を知らないからです…)
0そうだね
プレイ済み
返信[29]
親投稿
say sayer.exe
あ、これ30行の AX=RND(38) が毎回設定されてるわ 36行のところに書いてみて IF AY>27 THEN AY=0:AX=RND(38)
0そうだね
プレイ済み
返信[30]
親投稿
say sayer.exe
追記、訂正 30行の AX=RND(38) を消して 36行のIF文の後ろに書きます IF AY>27 THEN AY=0:AX=RND(38) 簡単に説明すると、@ENEMYは矢印が落ちるルーチンのはずです 落ちる=Y座標に+1する なのですが、呼び出すごと、その都度X座標が設定されてます X座標は矢印が落ちきったあと、つまりAY>27になった時だけ設定しなおせば良い ということになります
0そうだね
プレイ済み
返信[31]
親投稿
Daisuke 0909daiki09
なるほど…そういうことですか…ありがとうごさいます!
0そうだね
プレイ済み
返信[32]
親投稿
Daisuke 0909daiki09
次は当たり判定を付けようとしたのですが、↓×13個の判定の付け方が分かりません…↓×1個なら分かるんですが…
0そうだね
プレイ済み
返信[33]
親投稿
say sayer.exe
式がデタラメですよ…orz これじゃどう答えたらいいのか…
0そうだね
プレイ済み
返信[34]
親投稿
Daisuke 0909daiki09
すいません。見せてないのですが、フラグを立ててます。
0そうだね
プレイ済み
返信[35]
親投稿
Daisuke 0909daiki09
HIT=1になったら@GAMEOVERまで飛んでプログラムを終了させます。分かりづらくてすいませんm(_ _)m
0そうだね
プレイ済み
返信[36]
親投稿
Daisuke 0909daiki09
AY+13=Yは間違っていたのですがそのまま画像に載せてしまいました。すみません。
0そうだね
プレイ済み
返信[37]
親投稿
say sayer.exe
そこじゃないよ AX+13==Y 敵の横座標+13と自機の縦座標を比較する意図は?
0そうだね
プレイ済み
返信[38]
親投稿
say sayer.exe
なんかチャットみたいになってきた AY+13==Y これを日本語に直してみて
0そうだね
プレイ済み
返信[39]
親投稿
say sayer.exe
あ、ごめん 考え方変える まず、オワタの大きさはそのままでいいから、↓を一個にしてしてみて んで、その状態での当たり判定書いてみて!
0そうだね
プレイ済み
返信[40]
親投稿
Daisuke 0909daiki09
これでいいですか?オワタの \ にしか判定がないですけど…
0そうだね
プレイ済み
返信[41]
親投稿
say sayer.exe
おうけい よくできました では次 オワタ全体に判定を付けてみましょう
0そうだね
プレイ済み
返信[42]
親投稿
say sayer.exe
考え方は オワタ左端(X)からオワタ右端(X+7)の間のどこかに↓(AX)があれば良い
0そうだね
プレイ済み
返信[43]
親投稿
Daisuke 0909daiki09
なるほど…
0そうだね
プレイ済み
返信[44]
親投稿
Daisuke 0909daiki09
文法は違ってるんですが、考え方はあってますか?
0そうだね
プレイ済み
返信[45]
親投稿
say sayer.exe
惜しいもう一声 AXの範囲がX以上X+7以下 あと、Yなのは凡ミスですよね
0そうだね
プレイ済み
返信[46]
親投稿
Daisuke 0909daiki09
こうすればいいですか?
0そうだね
プレイ済み
返信[47]
親投稿
say sayer.exe
おみごと! ただ、式には一個の等式(または不等式)しか書けないんですよね (==,>=,<=はそれぞれで一個と見なされる) では、どうすれば良いかというと、論理演算子 というのを使います X>=AX<=X+7 これを日本語に直すと  AXはX以上X+7以下である 更に言い換えると  AXはX以上で、かつ、AXはX+7以下である  ↑これを式にします まだ論理演算子とかは知らないですか?
0そうだね
プレイ済み
返信[48]
親投稿
Daisuke 0909daiki09
よく分からないです…
0そうだね
プレイ済み
返信[49]
親投稿
Daisuke 0909daiki09
でも比較演算子なら少し分かります。
0そうだね
プレイ済み
返信[50]
親投稿
say sayer.exe
AXはX以上で、かつ、AXはX+7以下 これを式にした場合 AX>=X AND AX<=X+7 こうなります
0そうだね
プレイ済み
返信[51]
親投稿
Daisuke 0909daiki09
おお…ありがとうございます!
0そうだね
プレイ済み
返信[52]
親投稿
Daisuke 0909daiki09
AXはX以上X+7以下だけだったので下を通り抜けたらGAMEOVERになってしまいました…後何故か↓が処理されていません…
0そうだね
プレイ済み
返信[53]
親投稿
say sayer.exe
周りくどい説明に付き合ってくれてありがとうございます ↓×13個への対応は応用なんで明日でもがんばってやってみてください
0そうだね
プレイ済み
返信[54]
親投稿
Daisuke 0909daiki09
あ、↓の処理は出来ました。
0そうだね
プレイ済み
返信[55]
親投稿
Daisuke 0909daiki09
こちらこそわざわざ教えて下さってありがとうございます。また時間があったらお願いします。
0そうだね
プレイ済み
返信[56]
親投稿
say sayer.exe
あ、Y座標の比較忘れてたw これも応用ですね
0そうだね
プレイ済み
返信[57]
親投稿
Daisuke 0909daiki09
Y座標も出来ました!…が↓×13にしたら右端の当たり判定がないです…
0そうだね
プレイ済み
返信[58]
親投稿
Daisuke 0909daiki09
左端の当たり判定はあるのに…sayさん、これはsayさんの教えて下さった論理演算子の応用で出来ますか?
0そうだね
プレイ済み
返信[59]
親投稿
say sayer.exe
命中範囲の問題ですよ
0そうだね
プレイ済み
返信[60]
親投稿
Daisuke 0909daiki09
なるほど…
0そうだね
プレイ済み
返信[61]
親投稿
Daisuke 0909daiki09
上手く行きました!ありがとうごさいます!
0そうだね
プレイ済み