プレイ日記
スプライトから爆弾を出したいんですけど。出来ません。お教えて下さい
2そうだね
プレイ済み
返信[1]
親投稿
これが、実行したときです
0そうだね
プレイ済み
返信[2]
親投稿
SilverBlue Corei72630QM
SPDEFで爆弾の位置宣言して、SPSETで定義してSPOFSで表示
0そうだね
プレイ済み
返信[3]
親投稿
say sayer.exe
24:if b and #a then bx=mx:by=my:spshow 1 試してないけどたぶん動く 爆弾は画面上に一個だけ
0そうだね
プレイ済み
返信[4]
親投稿
sayさん、できました けど、aをもう一度押すとまたついてきます。
0そうだね
プレイ済み
返信[5]
親投稿
say sayer.exe
>けど、aをもう一度押すとまたついてきます。 「爆弾は画面上に一個だけ」 なのでね  押しっぱで再配置が繰り返され、いわゆるついてくる感じになります どのようにしたいです?
0そうだね
プレイ済み
返信[6]
親投稿
遅れてすみません。 aボタンを、押してもついてこなくて 何個か置けるようにしたいです。
0そうだね
プレイ済み
返信[7]
親投稿
say sayer.exe
何個か置けるというのであれば、配列変数が必要になりますね 配列変数はわかりますか? あと、爆弾の消えるタイミングは? 時間?起爆ボタン?接触?
0そうだね
プレイ済み
返信[8]
親投稿
配列変数は、全く分かりません。 爆弾は、時間せいです 消えるタイミングは、爆弾が爆発したときです。
0そうだね
プレイ済み
返信[9]
親投稿
say sayer.exe
おっけー ほんじゃまず、「ついてくる」から解消しましょうか 先に触れた通り「押しっぱで再配置が繰り返され、いわゆるついてくる感じに」なるので、押しっぱができんようにすればいいです 「押しっぱ」ではなく「押した時」の検知はbutton(1) つまり、 Aボタンが「押された時だけ」に反応するには 24:if b and #a then bx=mx:by=my:spshow 1 ではなく 24:if button(1) and #a then bx=mx:by=my:spshow 1 となります これで、「付いてくる」は解消できるのでお試しあれ
0そうだね
プレイ済み
返信[10]
親投稿
say sayer.exe
「ついてくる」は解消できたものの、画面上に一個(新しく配置したら古いのは消える)なのは変わりません 次は複数個(配列)と消去(フラグ変数と判定)の説明ですが、どっちがご希望で?☆興味を示す方を選んでね また、以上までの説明で疑問に思ったことがあれば質問してください 反応が遅いことより、よく理解もされずに「ありがとうございました」で逃げられる方がよっぽど腹が立つので
0そうだね
プレイ済み
返信[11]
親投稿
ついてくるは、解消されていました。 ここまでは、わからないことは、ありません。 配列は、(配列)削除のほうがいいです。
0そうだね
プレイ済み
返信[12]
親投稿
say sayer.exe
ヘイお待ち 宮仕えのキビシイところで出仕せんきゃメシが食えん しかも昨日は淀川花火大会とやらで休む暇がなかって、明けて今やっと起きたし で、えーっと爆弾の消去でしたね 時間によって爆弾が消え、また再配置可能になるとなると、タイマー用の変数が必要になります 今どんな感じにプログラムが進化したのかが想像できないので、要点だけを述べます  タイマーは毎ループごとに-1される  タイマーが0以下の時にAボタンを押すと配置される。更にタイマーを300ぐらいに設定する  タイマーが0になると爆弾が消える こんな感じ
0そうだね
プレイ済み
返信[13]
親投稿
say sayer.exe
失礼 少し前のbutton(1)ですが、正しくはbutton(2)でした
0そうだね
プレイ済み
返信[14]
親投稿
今は、こんな感じです。
0そうだね
プレイ済み
返信[15]
親投稿
上の方も。
0そうだね
プレイ済み
返信[16]
親投稿
say sayer.exe
要点をそのまま組んでみると多分動くはずです 試しに書いてみるといいですよ あんまり全部が全部を書くのも悪いですし あ、タイマーの変数はBTでお願いします
0そうだね
プレイ済み
返信[17]
親投稿
すみません。その要点が組めないんです。
0そうだね
プレイ済み
返信[18]
親投稿
マイループごとに-1は、こんな感じでしょうか?
0そうだね
プレイ済み
返信[19]
親投稿
say sayer.exe
試すことはいいこと! 正解じゃないけどそういう行動が大事 えっとね 毎ループごとにBTが1づつ減っていくのよ この場合では、毎ループごとBTを-1と設定していると言ったほうが正解です …あー 34,35行に答え書いてるわ
0そうだね
プレイ済み
返信[20]
親投稿
say sayer.exe
ちょっと 横道 変数について a=1は、変数aが1になる a=a+1は、変数aがa+1になる(元のaの値が10だったと仮定したら11になる)
0そうだね
プレイ済み
返信[21]
親投稿
できました! これであってますか?
0そうだね
プレイ済み
返信[22]
親投稿
画像
0そうだね
プレイ済み
返信[23]
親投稿
こっちが本物
0そうだね
プレイ済み
返信[24]
親投稿
say sayer.exe
正解か不正解かはむしろプチコンに聞いてくれたほうがよろしいよ てっとり早い方法は locate 5,5:print bt てっとり早くない方法は、残りの要点を打つこと 次の要点 >タイマーが0以下の時にAボタンを押すと配置される。更にタイマーを300ぐらいに設定する を打つと、(多分)5秒ほどAボタンのキーレスポンスが落ちるはず
0そうだね
プレイ済み
返信[25]
親投稿
say sayer.exe
ちなみに間違ってたら、次の要点を打った時点で、Aボタンは一度しか作用しないはず
0そうだね
プレイ済み
返信[26]
親投稿
say sayer.exe
また横道 1:@loop 2: a=a+1 3: 4:goto @loop 慣れると変数aがどのように変化しているのかわかるようになる 慣れないうちは 4:print a と変数aを表示して目に見える確認をすると良い ☆ちなみに慣れても、この「printデバッグ」はけっこう使います
0そうだね
プレイ済み
返信[27]
親投稿
ちょと前に話してくれたタイマーが0の時にaボタンを押すと配置のやり方がどうもわかりません。 どうすればいいですか? (すみません、知らないことばかりで)
0そうだね
プレイ済み
返信[28]
親投稿
say sayer.exe
真偽のおさらい プチコン上では、「真」は0以外、「偽」は0となってます if文の文法 if 条件 then 真の場合の処理 [else 偽の場合の処理]'[]は省略可能を指す
0そうだね
プレイ済み
返信[29]
親投稿
say sayer.exe
34行を見てみましょう if button(2) and #a then bx=mx:by=my:spshow 1 if文の文法に照らし合わせると、 条件は button(2) and #a 真の場合の処理は bx=mx:by=my:spshow 1 となってるのがわかるはずです
0そうだね
プレイ済み
返信[30]
親投稿
say sayer.exe
で、条件を見てみます button(2) and #a こりゃなんぞや?と言うと、端的に言うと「aボタン押されたら」と言う意味です ☆詳しく紐解こうと思ったけど、おいらにゃ無理だぁ でした 34行だけじゃなく、それより上のif文の条件も同じで、それぞれ  右ボタンが押されたら  左ボタンが押されたら  上ボタンが押されたら  下ボタンが押されたら と言う意味になります
0そうだね
プレイ済み
返信[31]
親投稿
say sayer.exe
>タイマーが0の時にaボタンを押すと配置(※1) ここに戻ります 先の34行ですが、これ自体の意味は aボタンが押されたら、今いる位置に爆弾の座標をセットし表示する  →aボタンが押されたら爆弾を置く(※2) こうなります ※1>タイマーが0の時にaボタンを押すと配置 ※2>aボタンが押されたら爆弾を置く    ↑なんか似てない?
0そうだね
プレイ済み
返信[32]
親投稿
夏休みの宿題やクラブで忙しくてできませんでした。 ちょとやってみました、これでBTが0の時Aを押すと配置?みたいな意味でしょうか。
0そうだね
プレイ済み
返信[33]
親投稿
say sayer.exe
あー 条件が二つの時の書き方は未知でしたか BTが0未満 かつ Aボタンが押された は、 (bt<0) && (b2 and #a) こう書きます
0そうだね
プレイ済み
返信[34]
親投稿
say sayer.exe
毎度おなじみの横道 けっこう重要な論理演算 先の&&は論理演算子と呼ばれるもので、他にも||、!があります さて、この論理演算、何するもんじゃというと、0か1を返すシロモノです &&は左右の数値のどっちかが0の場合0を返し、どっちの数値も0でない場合は1を返します ||は左右の数値のどっちかが0でない場合1、どっちの数値も0の場合0を返します !は後に続く数値が0の場合1、0でない場合は0を返します わかりにくいので、0でない場合「合ってる」、0の場合「違う」でもう一度説明します &&はどっちがか違う場合「違う」になり、どっちも合ってるなら「合ってる」になります ||はどっちかか合ってたら「合ってる」になり、どっちも違うなら「違う」になります !は合ってるなら「違う」、違うなら「合ってる」 余計わかりにくいか…
0そうだね
プレイ済み
返信[35]
親投稿
say sayer.exe
横道の続き 営業部に栄田(A)くんと備中(B)くんがいました 営業部副長に安藤(&&)さんと御明(||)さんがいました 安藤さんは日頃よく頑張ってる栄田くんと備中くんを呑みに誘いました ですが、二人のうちどっちかがお断りすると、呑みに誘うのを諦めます 御明さんは日頃よく(ry ですが、二人のうちどっちもがお断りすると、呑みに誘うのを諦めます 能登(!)さんと言う副長までいました 栄田くんは帰ろうとしますが、無理矢理呑みに連れて行きます 備中くんは「呑みに連れてってくださいよー」とお願いするも、さっさと帰ってしまいました どんどんわかりにくくなる;_;
0そうだね
プレイ済み
返信[36]
親投稿
これでできたんですが、質問が2つあります。1つは、タイマーを300に設定するのところです。画像では、やっていませんが。ifの所にwait 300とやりました。けどできません。
0そうだね
プレイ済み
返信[37]
親投稿
もうひとつは、&&のあとの()をどういうときに使うのかです。
0そうだね
プレイ済み
返信[38]
親投稿
say sayer.exe
まず二番目の疑問から このカッコ 実は意味がない(はず)です ただ単純に「「こっちの判定」かつ「そっちの判定」」を明示しているだけで、特に意味はありません 単にわかりやすいかな?と思って明示しているだけです あと、ぼく自身が優先順位に疎いので、保険をかけていると言う意味もあります 想定通りに動けば、カッコを外してても問題ありません(「想定通り」なら)
0そうだね
プレイ済み
返信[39]
親投稿
say sayer.exe
一番目の疑問ですが、単純にwait(またはvsync)で解決できる問題ではなく、 「時間」と「ループ」の違いがあります 例えば while 1 print "ひょー" vsyunc 60 wend こういう場合、ループは約1秒で一回繰り返されます(「約」に付いては今は考えないでね) 「なんで?」かって言うと、3行目の「vsync 60」が強制的に1秒間何もしない為です(そういう命令なので)
0そうだね
プレイ済み
返信[40]
親投稿
say sayer.exe
BTと言う変数を思い出してください 毎ループごとに-1されている変数です こいつは、単に毎ループ-1されているだけのよくわからん変数です で、ループん中にはvsyncが一個入ってるので、一回のループは約60分の1秒 60回ループしたら、60回*1/60秒=1秒で、 60回ループしたら、BTの値は?(BTのはじめの値が0として)
0そうだね
プレイ済み
返信[41]
親投稿
say sayer.exe
もし、BTが300に設定されてたとした場合、BTが0(以下)になるには、 「何ループ」かかって、それは「何秒」かかる?
0そうだね
プレイ済み
返信[42]
親投稿
5ループかかって5秒かかる? ですか?
0そうだね
プレイ済み
返信[43]
親投稿
say sayer.exe
60回ループしたら、60回*1/60秒=1秒で、 60回ループしたら、BTの値は?(BTのはじめの値が0として) もし、BTが300に設定されてたとした場合、BTが0(以下)になるには、 「何ループ」かかって、それは「何秒」かかる? 途中で切ったのがまずかったかな?
0そうだね
プレイ済み
返信[44]
親投稿
say sayer.exe
たぶん上の「例えば」で引っかかったのだと思いますが、飽くまで「例えば」なので、1ループ1秒ではあまりにも遅すぎます ちなみに、3/60秒でも、キーの入力落ちが気になりだすレベルだったりします(個人の感想)
0そうだね
プレイ済み
返信[45]
親投稿
う~ん.....やっぱりわかりません。
0そうだね
プレイ済み
返信[46]
親投稿
say sayer.exe
ごめんなさい すっかり見落としてました 答えとしては 300ループかかって5秒 いい感じで5秒の答えを出していたのですが、ちょっと惜しかった
0そうだね
プレイ済み
返信[47]
親投稿
say sayer.exe
時間の概念を出したのがまずかったです ごめんなさい 時間を忘れてください BTが0以下でない間、爆弾位置を設定できない様な処理を考えてみてください 説明が下手でごめんなさい 更に見落としてたのも、もう一度ごめんなさい
0そうだね
プレイ済み
返信[48]
親投稿
謝らなくてもいいですよ。教えてもらってる側なので。 ちょとやってみたら出来ました。0以下の時に配置。
0そうだね
プレイ済み
返信[49]
親投稿
say sayer.exe
次は配列なんですが、ちょっと時間を置きましょう ぼく自身が疲れたというのもありますが、変数の挙動をより良く自習して欲しいと言う意味もあるので 復習 ・爆弾には3つの変数が使われている  変数はX,Y,BTで、それぞれX座標、Y座標、爆発までの時間を表している ・爆発時間が0になると爆発する  爆発したあと再設置できる よっしゃわかったぜこの野郎!と思ったら、よろしくまた質問してください そしてまた、どうでもいいことでもたくさん投稿してください なんにもないコミュは嫌やし、おいらら「教えたい人ら」が腐っちまうのでね
0そうだね
プレイ済み
返信[50]
親投稿
ありがとうございました。 また、よろしくお願いします。
0そうだね
プレイ済み
返信[51]
親投稿
配列について、そろそろ教えてください。
0そうだね
プレイ済み
返信[52]
親投稿
say sayer.exe
ほい おひさし! 配列の説明の前に、またまた質問  EXCELやCalcなどの表計算ソフトは使ったことありますか?(あるならめっさ楽)  一度独習してみましたか?(なくても問題ないのですが、あるならどこらへんが引っかかったかを教えてくれると進めやすい) やはり宮仕えなので、一日ごとしかまともなレスができないので、そこらは勘弁願います
0そうだね
プレイ済み
返信[53]
親投稿
EXCELとかは、使ったことないです。独学については、特にないです。
0そうだね
プレイ済み
返信[54]
親投稿
say sayer.exe
百聞は一見にしかず まずはこれを打って試してください
0そうだね
プレイ済み
返信[55]
親投稿
やってみました、イチゴが、操作出来ました。
0そうだね
プレイ済み
返信[56]
親投稿
say sayer.exe
4,8,13,19行のコメントを外してみてください
0そうだね
プレイ済み
返信[57]
親投稿
やりました
0そうだね
プレイ済み
返信[58]
親投稿
say sayer.exe
正直ちょっと笑ったと同時に、 個々人の単語はあんまり通用しないんだろうなと思いました ぼくの言う「コメントを外せ」は「’(アポストロフィ)を消せ」の意味だったのですが、 なるほど、コメント自体を消せとも取れますね ごめんなす で、おいらの思惑は次コメで、 ついでにこの場合、  よっつのイチゴが同時に動く のを体感して欲しかったのがあります で、体感した上で、「なぜそうなるか」を自分なりに考えてほしい そういう思惑があるんでやす
0そうだね
プレイ済み
返信[59]
親投稿
say sayer.exe
おいらの思惑がこんなかたち
0そうだね
プレイ済み
返信[60]
親投稿
そう言う事だったんですね。 これじゃあプログラムが上手く出来ません。どういうことでしょう?
0そうだね
プレイ済み
返信[61]
親投稿
すみません。 最近忙しいんで、10月になってから教えてくれませんか。
0そうだね
プレイ済み
返信[62]
親投稿
say sayer.exe
ごめんなす 大人の事情でいろいろ忙しいことがあって「趣味してるヒマなんかねーぞ」に、なっております かなり自分勝手で申し訳ないんですが、配列については、他の方に師事するほうが多分早いと思います それか独力で習得できる能力は充分にあるので、独習するのも手です むしろ、人に師事するより、独習のほうが視野が広がると思います 中途半端で申し訳ないです 配列の話ですが 爆弾に使ってる変数を、「爆弾のステータス」と読み替えれば、 0番の爆弾、1番の爆弾、2番の爆弾、と、ちょっと考えやすくなると思います なかなかできない気遣いをしてくれてありがとです
0そうだね
プレイ済み
返信[63]
親投稿
こちらこそ、自分勝手ですみません。 配列は、時間があるときにしようとおもいます。 ありがとうございました。
0そうだね
プレイ済み