Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
13 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23184
次のページ(過去)
返信[3]
親投稿
スプライト同士の当たり判定ならSPHITSPを使うのがいいかな。
0そうだね
プレイ済み
返信[8]
親投稿
静電容量式と感圧式のハイブリッド液晶端末とかならいいのにな〜…
0そうだね
プレイ済み
返信[3]
親投稿
りゅうまごさんに紹介してもらいましたでんぺんです! ありがとうございます。 僕の過去の投稿だと以下の辺りが参考になるかと思います。 日付:2016/1/18 マップツール活用委員会? 様々なマップツールのセーブファイルのロード方法やロードプログラムの公開キーが載っています。 https://miiverse.nintendo.net/posts/AYMHAAACAAADVHk04rsiRg
1そうだね
プレイ済み
返信[6]
親投稿
インデントの事は後回しで考えていましたが、正しいインデントにしたいのだとしたら合ってないので再確認してみましょう。 SLOWを0にする場合、14行目のIFでのBUTTONはBUTTON(0)にした方がいいかもしれませんね。2だと押した瞬間しか判定されないのでタイミングによっては処理されません。 ただSLOWを0にする場合、一度スキップさせたら、Aボタンウエイトの後の次のメッセージでもスキップされるので、それが気になる場合はSLOWを元の値に戻すなどの工夫が必要になると思います。
0そうだね
プレイ済み
返信[1]
親投稿
テキストスキップとはテキスト表示中にボタンを押すと一気に表示される機能の事? ちなみにMSG$が””(空)の時にRETURNする処理はREAD MSG$で読み込んだ次の行ぐらいの方が流れ的にいいのではないかと思いますよ。
1そうだね
プレイ済み
返信[4]
親投稿
特殊な場合の速度優先を除き、基本は適材適所。
2そうだね
プレイ済み
返信[8]
親投稿
公開キーじゃないけど、僕の過去投稿では解説付きのサンプルを載せたりしていたので、参考になれば見てみてください。以下のような感じで載せてます。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 日付:2014/12/5 & 2014/12/9 初心者がよくトライするキャラクター移動のサンプルです。 左右に動いてAでジャンプ、Bダッシュのおまけつき。(※アニメーションはSPANIMを使っています) ソースは12/5と同様ですが12/9の投稿では詳しい解説をしています。 12/9 https://miiverse.nintendo.net/posts/AYIHAAAEAADaVHhje1QgdA
1そうだね
プレイ済み
返信[7]
親投稿
CLSの前のPRINTの部分もデバッグで表示しているわけじゃなければ不要だと思いますよ?
0そうだね
プレイ済み
返信[5]
親投稿
あとオマケ。 MID$(MSG$,T,1)のように1文字だけ抜き出す場合、MSG$[T]とやっても同じように1文字だけ取り出すことが出来ますよ。 結構便利なので覚えておくといいかも。 12〜13行目のPRINTとCLSは僕も気になっていたけど、とりあえず謎で放置してた…。何か理由があって残しているならいいけど、そうじゃなかったら消しちゃった方がいいかもね。
1そうだね
プレイ済み
返信[12]
親投稿
出来たようで良かったです。 内容もしっかり理解する事が大事なので、何故そうなるのかわからないというような事があればちゃんと質問した方がいいと思いますし、質問しないまでも自分でもしっかりと流れや内容を理解出来るように心がけてくださいね。 これからも頑張ってください!
0そうだね
プレイ済み
返信[10]
親投稿
そうですね〜。まず43行目のIF #Y THENは不要なので、その行は、 SPSET 2,1346:SPOFS 2,X+10,Y にしちゃった方がいいですね。 その上で46行にどう書けばいいのかですが、まず弾を動かすのは弾(スプライト管理番号2)が出ているときですよね? なので、その時だけ処理される部分(IF)を作ります。 そしてその内容ですが、弾の位置を移動させることです。ただこの時に、もし画面外に出てしまった場合、ちゃんと弾を消しておいた方がいいですよね。と言うことで、これを素直にプログラムしてみると、 IF SPUSED(2) THEN SPOFS 2 OUT TX,TY TX=TX+4 SPOFS 2, TX, TY IF TX>400 THEN SPCLR 2 ENDIF みたいな感じになります。まずここまでわかりますか?
0そうだね
プレイ済み
返信[2]
親投稿
あとMID$のYはそもそも間違ってると思いますよ…。 Yの位置の引数は、MID$で抜き出す文字数になります。なので単純に1と書けば1文字取り出して表示出来るはずです。
3そうだね
プレイ済み
返信[1]
親投稿
とりえあずDEFの引数はローカル変数として定義されるのでVARで定義する必要はない(定義しようとしても二重定義になる)と思いますよ。
1そうだね
プレイ済み
返信[8]
親投稿
メインループというのは、画面のプログラムだとWHILE TRUEからこの画面には映ってませんが下の方にあるはずのWENDまでの事ですね。なので、この間に弾の動作の処理を入れれば良い事になります。 プログラムを見た感じ、Yボタンを押している間しか処理されない感じになってるんで、弾が飛んでいかないんじゃないかと思います。なので実際は、弾を出す(ボタンを押した時)と弾が動く(常に)は、別に処理する必要があります。 あと47,48行目にあるIFは意味が無いですよ。46行目でボタンが押されているか判定しているので、押された時はENDIFまでの47〜49行目が実行されます。#Yは0ではないのでIF #Y THENとしても必ず実行される行にはなりますが意味は無いです。 と言うことで、 1:弾を出す(ボタンを押した時)と 2:弾を動かす は別々に考えてみてください。
0そうだね
プレイ済み
返信[4]
親投稿
たしかにせっかくDEFにしてるならDEF内のみ使われている変数にはきちんとVARをつけてローカル変数にしておいた方がいいですね。 おちゃめさんの引数全体を文字列にしてしまう方法は慣れてないと難しいとも思うので、難しそうだと思ったら今回は見送った方が無難かも? ちなみに僕が自分で作る場合は、結構グローバル変数のオプション的な変数は使っちゃう場合は多いですね。なのでわかっていれば無理に避けなくてもいいかもとも思います。ただその場合、変数名をわかりやすく(あとある程度長く)して再利用時などに他の変数名と重複しないようにしておいた方がいいかなって思います。 あとはMIKIさんも書いてますが、X,Y座標を引数に加えるなど、DEF命令を作るときは、どのぐらいの機能を引数やオプションで持たせると便利(汎用性高い)かとか考えるといいですね。過不足無いうまいDEFが作れたときは嬉しいですよ
0そうだね
プレイ済み
返信[1]
親投稿
たしかプチコンはデフォルト引数みたいな機能がなかった(はず)なので無理かも…。 面倒だけど別命令として定義するぐらいかな…。必須なもの以外は省略できる命令としてもう一つ作る的な…。 もしくはオプション的な機能はグローバル変数にしてしまう方法もあるけど、ちょっとグローバル変数とするのは気になるところもあるので、その辺は要検討って感じかなぁ…。 1行の場合ってやつは、LABEL$にラベル名じゃなくて直接文字列を指定した場合は、その文字列を表示出来るようにするという機能をつける手もある(たぶん出来るはず…)けど、まあ割り切ればラベル名で管理もありだと思いますよ。
0そうだね
プレイ済み
返信[10]
親投稿
久しぶりですね〜。 ちなみにボタン入力待ちの処理は、おちゃめさんもオススメ(?)な以下の方法の方が僕もオススメです。 REPEAT:WAIT:UNTIL BUTTON(2)==#A ※上記はAボタンが押されるまでその行でループする処理 それじゃ引き続き頑張ってください!
1そうだね
プレイ済み
返信[6]
親投稿
弾を出せたと言うことは1〜2が出来た感じですね。 なので後は3が出来ればいいことになります。SPANIMを使う方法もありますが、とりあえず自分の力(メインループ)で動かす方法(基礎)を知っておいた方がいいとも思ったので、その方がいいですね。 メインループというのはWHILE〜WENDやGOTOなどで一定の範囲を無限ループさせている部分です。 その部分で弾の座標を動かせば弾が飛ぶ(動く)事になります。 例えば弾がスプライト管理番号2番だった場合、 IF SPUSED(2) THEN SPOFS 2 OUT X,Y X=X+4 SPOFS 2,X,Y IF X > 400 THEN SPCLR 2 ENDIF みたいな感じのをメインループの間に入れれば弾が出ている間は右に動くような感じになります。(あくまで例なので自分のに合わせて調整が必要)
0そうだね
プレイ済み
返信[4]
親投稿
現在のプログラムがどうなってるかわからないので正確な事がわからないんですが、メインループがあると思うので、その中で例えばAボタンを押した時なら、 IF BUTTON(2)==#A THEN 'この中でボタンを登場させる処理をいれる ENDIF みたいな感じです。 今どうなってるのかがわかればもう少し正確に書けますが、そんな感じですね。
0そうだね
プレイ済み
返信[1]
親投稿
基本的には、 1 弾を出すタイミング(ボタン押されたとき?)に弾を出す処理をする 2 弾を出す処理は、弾用に割り当てたスプライト管理番号(空いている番号)にSPSETなどで弾を表示する。初期位置は発射元の座標と同じにする(SPOFS) 3 弾が表示されている間(SPUSEDなどでスプライトが使用されているかなどで判断する方法もある)は、弾を動かす処理をする。 弾を動かす処理は線形的な移動であればSPANIMなどを利用してアニメーションさせることも出来る。そうでない場合は、メインループの中で毎フレーム弾の座標を移動させるような処理にする。 という感じが基本かと思います。
0そうだね
プレイ済み