プレイ日記
まりを tomoyaTT88
DEFにっき 今回はこの改良をしている間に気付いてしまった欠点を挙げます。 ・『ラベルごと』という中途半端な便利さと裏腹に、セリフについての演出には例え一行であろうと別のラベルを作る必要がある。 ・何かめんどくさい その他、といった感じです。 DEFの定義において「数字入れたら反応するけど、入れなくても反応するよ」 ということは可能ですか? EVENT,LABEL$,SOUND,SOUNDWAVE←waveなんてこんなのいれなくてもいい
3そうだね
プレイ済み
返信[1]
親投稿
たしかプチコンはデフォルト引数みたいな機能がなかった(はず)なので無理かも…。 面倒だけど別命令として定義するぐらいかな…。必須なもの以外は省略できる命令としてもう一つ作る的な…。 もしくはオプション的な機能はグローバル変数にしてしまう方法もあるけど、ちょっとグローバル変数とするのは気になるところもあるので、その辺は要検討って感じかなぁ…。 1行の場合ってやつは、LABEL$にラベル名じゃなくて直接文字列を指定した場合は、その文字列を表示出来るようにするという機能をつける手もある(たぶん出来るはず…)けど、まあ割り切ればラベル名で管理もありだと思いますよ。
0そうだね
プレイ済み
返信[2]
親投稿
MIKI ifconfig
> 数字入れたら反応するけど、入れなくても反応するよ 意味不明。どうしたいの?? 特別な数値が与えられた場合分岐するってのは可能。 def 内だけで使う変数は全て var で宣言してローカル変数にしましょう。 具体的には 6行目を var y, msg$, t とする。 でないとグローバル変数と衝突して、def のありがたみも半減。 16行目 いきなりグローバル変数の x,y 参照してるけど、これは引数で与えた方がいいと思います。 def event x,y,label$, ... てな感じ。
2そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
引数を省略可能な命令を作るのは無理ですが、それっぽいものを作ることは可能です。 EVENT LABEL$,SOUND,SOUNDWAVE,SLOW ではなく EVENT "LABEL$,SOUND,SOUNDWAVE,SLOW" のように記述するわけです。この場合SOUNDWAVEの設定が不要ならば EVENT "LABEL$,SOUND,,SLOW" のように省略してもちゃんと動作するようにできます。 ただし、このような作り方にすると作るのが格段に難しくなるため注意が必要です。 関数内であってもグローバル変数の方がアクセスしやすければグローバル変数で問題ありません。(他のプログラムで再利用する場合は可能な限りグローバル変数を使わない方が良いけど) MIKIさんが口を酸っぱくして言っていますがローカル変数にしたいならばVARで宣言するのを忘れないようにしなくてはなりませんね。
1そうだね
プレイ済み
返信[4]
親投稿
たしかにせっかくDEFにしてるならDEF内のみ使われている変数にはきちんとVARをつけてローカル変数にしておいた方がいいですね。 おちゃめさんの引数全体を文字列にしてしまう方法は慣れてないと難しいとも思うので、難しそうだと思ったら今回は見送った方が無難かも? ちなみに僕が自分で作る場合は、結構グローバル変数のオプション的な変数は使っちゃう場合は多いですね。なのでわかっていれば無理に避けなくてもいいかもとも思います。ただその場合、変数名をわかりやすく(あとある程度長く)して再利用時などに他の変数名と重複しないようにしておいた方がいいかなって思います。 あとはMIKIさんも書いてますが、X,Y座標を引数に加えるなど、DEF命令を作るときは、どのぐらいの機能を引数やオプションで持たせると便利(汎用性高い)かとか考えるといいですね。過不足無いうまいDEFが作れたときは嬉しいですよ
0そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
X,Yは引数で与えなくてもDEF内の頭でローカル変数X,Yに CSRX,CSRYを代入してもいいのではないかと思います。 LOCATE命令で表示位置を指定してからユーザー定義命令を 呼び出せば同等の事ができますよ。
1そうだね
プレイ済み
返信[6]
親投稿
マギー M191246
>「数字を入れなくても反応する」? 例えば、画像の3番目の引数の 0 を 書かなくてもいい方法ということですか? 現状できるみたいですけど…。 ためしに、0を消して(,,と続ける)みて。
1そうだね
プレイ済み
返信[7]
親投稿
ish owlis1
求めている実装は、DEFの多重定義(オーバーロード)なのかなぁとか。 プチコンは同じ名称のDEFが作れないので、オーバーロードが必要な時は類似名称DEF作ってカバーしています。 添付は「たくさんの引数を持つDEF」と、「それを呼び出すだけのDEF」を書いてました。 変数名とかインデントは私の趣味で弄ってしましましたが、あまり気にされないよう(^^;
1そうだね
プレイ済み
返信[8]
親投稿
MIKI ifconfig
マギーさんの裏技知らなかった!! 省略されたってのはどうやって判定するのだろう??
1そうだね
プレイ済み
返信[9]
親投稿
マギー M191246
コメントに気づけてませんでした。 本当に、すみません! この『裏技』を使えるのは わりと前のバージョンの時から 確認してたんですけど 内部的なことは、私もよくわかりません。
0そうだね
プレイ済み
返信[10]
親投稿
MIKI ifconfig
省略された引数に普通にアクセス(評価)するとエラーになっちゃうので、省略されたことを判定できる方法があればいいですね。 isnull 関数? みたいな??
1そうだね
プレイ済み
返信[11]
親投稿
マギー M191246
上の裏技を応用すると、 それに近いことができるみたいです。 MIKIさんにならわかる気がします…。
0そうだね
プレイ済み