プレイ日記
ネタバレ
【マミモンバグレポート】プレイ開始日などが消える。原因:変数に何も入れていない。
7そうだね
プレイ済み
返信[1]
親投稿
(保存リスト機能を使ったので単独書き込みになりました) SAVE$の生成箇所が2箇所(はじめから用と普通のレポート)あって、それぞれ違うっていうまず~い設計になってるんだよね。
0そうだね
プレイ済み
返信[2]
親投稿
「基本システム」っちゅうやつは基本DEFないしはサブルーチンで組み立てていかないとあとさき不整合でうぎゃーってなる
0そうだね
プレイ済み
返信[3]
親投稿
ちなみに画像のような場合FORMAT$()整形がよかったりする
0そうだね
プレイ済み
返信[4]
親投稿
今まで覚えてきた命令と全く違う感じの命令で今苦戦している
1そうだね
プレイ済み
返信[5]
親投稿
関数の中にまた「独自のコマンド」があるっていうイメージ。 % 揃える桁数 種類 %8D 「整数」を「8桁」にそろえる コマンド以外の文字列はそのまま出ます
0そうだね
プレイ済み
返信[6]
親投稿
今説明したのが書式文字列 桁数省くと無駄のない長さで出てくる FORMAT$("100*33=%D",100*33) "100*33=%D" のうち、%Dが後ろに書いた100*33の数に置き換わる
0そうだね
プレイ済み
返信[7]
親投稿
セーブで使うのは「数や文字列をコンマで並べるんだよね」 実際のイメージとしてはこんな感じになるね FORMAT$("%D,%F",HP,NAME$) 数や文字列を混ぜにしてくっつけられる便利な関数 STR$だらけになるのを防げる
0そうだね
プレイ済み
返信[8]
親投稿
%Fで「文字列を出す」
0そうだね
プレイ済み
返信[9]
親投稿
こんなんかな…?
1そうだね
プレイ済み
返信[10]
親投稿
ごめん。FじゃなくてSだったね。 合ってるけど1項目ずつじゃなくて1まとめにできる
0そうだね
プレイ済み
返信[11]
親投稿
つまりこうですか ("%S",A$,B$,"%F"…っていう風な感じか…!
0そうだね
プレイ済み
返信[12]
親投稿
惜しい ・書式文字列は1つにまとめる ・変数の数だけ %何とか を書く(足りなかった分の変数は反映されない) ("%S %S",A$,B$)
0そうだね
プレイ済み
返信[13]
親投稿
{  FORMAT$("%D,%F",HP,NAME$);  みたいな書き方に;  ものすごく見覚えがある私;  /*流行に便乗してみました。*/ }
1そうだね
プレイ済み
返信[14]
親投稿
つまりこうかな
0そうだね
プレイ済み
返信[15]
親投稿
「,」も入れなきゃかな
0そうだね
プレイ済み
返信[16]
親投稿
変わらない部分は書式文字列に入れていいのだ "%S,%S"
0そうだね
プレイ済み
返信[17]
親投稿
とりあえず今書き込まれるものを全てぶちこむ ↓ マップなどは正常に読まれる KDTK$とかはまた前みたいにINSTRの連続で読み込む…?
1そうだね
プレイ済み
返信[18]
親投稿
XとかYはわざわざSTR$しなくても%Dでいけるか
1そうだね
プレイ済み
返信[19]
親投稿
そう、数値変換込みがメリット 逆にばらす命令があったら便利だよねー ユーザー命令は可変引数できんからなぁ
0そうだね
プレイ済み
返信[20]
親投稿
とりあえずKDTK$が読めるようになった。 だがこのINSTRの連続というのはどう考えても何か省略方法がある気がする。。。 尚、この方法(INSTR)ならわかったのでいろいろできます。
1そうだね
プレイ済み
返信[21]
親投稿
X$にあらかじめスペースを入れなくても INC X$で1文字ずつ増やせるんじゃね
0そうだね
プレイ済み
返信[22]
親投稿
S05=INSTR(ほにゃらら) (略) NEXT ここら辺DEFにできる気がする
0そうだね
プレイ済み
返信[23]
親投稿
INC ○○$はType mismuch 最初は開始位置が0、後から文字数がバラバラだからINCだとできない しかも入れる変数も違うから…?…?
0そうだね
プレイ済み
返信[24]
親投稿
INC X$,足すもの だけど
0そうだね
プレイ済み
返信[25]
親投稿
INC X$ INC X$,X INC X$,1 ↑全部Type mismuch
0そうだね
プレイ済み
返信[26]
親投稿
… 文字に足せるのは文字だけじゃ INC A$,STR$(X) とか?
0そうだね
プレイ済み
返信[27]
親投稿
微妙に伝わってない気がする NAME$=" "*S01みたいのをなくして NAME$[I]=SAVE$[I]をINC NAME$,SAVE$[I]*1みたいにする
0そうだね
プレイ済み
返信[28]
親投稿
*1は参照を吹っ飛ばすための呪文ね
0そうだね
プレイ済み
返信[29]
親投稿
NAME$は正常に読まれた。 すると、0をINCしていって別のも読んでく感じか…?
1そうだね
プレイ済み
返信[30]
親投稿
×INCを0していく ○0をINCにする 0ずつ足して何が変わるねん
1そうだね
プレイ済み
返信[31]
親投稿
うむ、そこの0は「前見つけた位置+1」に変える。 そうしないと同じ , を検索してしまうからね。 もう一つのやり方でSAVE$を1文字ずつ削っていく方法もあるんだけどね
0そうだね
プレイ済み
返信[32]
親投稿
0そうだね
プレイ済み
返信[33]
親投稿
S02=INSTR(S01+1,略 みたいな感じ
0そうだね
プレイ済み
返信[34]
親投稿
それって前やってた方法と同じ? DEF化するなら文字をINCする…?
1そうだね
プレイ済み
返信[35]
親投稿
S=INSTR$(毎回変わる開始位置,使う文字列変数,探す文字(「,」)) FOR I=0 THEN S-1(,を見つけた位置から-1、つまりNAME$) をNAME$に入れる 的なプログラム? だとしたら毎回変わる開始位置はどうすれば?
1そうだね
プレイ済み
返信[36]
親投稿
あーFORよりWHILEがいいかも案件 ○○まで繰り返す、にはWHILE便利なのよね。 「次の,まで繰り返す」だからね あれ…INSTRの意味が無くなってきた?
0そうだね
プレイ済み
返信[37]
親投稿
(考えてたらMIKIさんのVFILERっぽくなってきた)
1そうだね
プレイ済み
返信[38]
親投稿
話戻って DEFにするなら引数に書いてもらうのが良さそうだけど DEF BUNKAI(SAVE$,位置)みたいな?
0そうだね
プレイ済み
返信[39]
親投稿
DEF BUNKAI$(SAVE$,位置) 中身 RETURN 取り出した文字列 END こんな感じかな
0そうだね
プレイ済み
返信[40]
親投稿
DEFとWHILEだとどちらがいいのか 正直今のところつばさ☆さん流INSTR法しか理解できてないけど
1そうだね
プレイ済み
返信[41]
親投稿
(DEFは使うよ、繰り返しをFORにするかWHILEにするか)
0そうだね
プレイ済み
返信[42]
親投稿
こうかな…? 使い方 Sって一体何入れるんだ…
0そうだね
プレイ済み
返信[43]
親投稿
あ、そうだ。IとNAME$はローカルやね (DEFの真下にVAR I,NAME$)
0そうだね
プレイ済み
返信[44]
親投稿
WHILE-WENDとSHIFT()を使う方式もあるよね DEF BUNKAI(SAVE$)  VAR NAME$,S$  WHILE SAVE$[0]!=","   INC NAME$,SHIFT(SAVE$)  WEND  IF LEN(SAVE$) THEN S$=SHIFT(SAVE$) END S$の役目は,を捨てるために1文字捨てること この場合、BUNKAI()を呼ぶたび1項目を返し、その分SAVE$が削られてやがて0文字になる
0そうだね
プレイ済み
返信[45]
親投稿
FOR方式の場合はINSTR()で,を探すことになるはず
0そうだね
プレイ済み
返信[46]
親投稿
呼び出し方は BUNKAI()? BUNKAI(取り出したい文字列)? BUNKAI? BUNKAI(SAVE$)? BUNKAI(数値)? まぁどれもエラーだったが
0そうだね
プレイ済み
返信[47]
親投稿
BUNKAI(SAVE$) でいいはずだけど、何エラー?
0そうだね
プレイ済み
返信[48]
親投稿
あーもしかしてout of rangeかな 空文字対策が甘かったかな DEF BUNKAI(SAVE$)  VAR NAME$,S$  WHILE LEN(SAVE$)   S$=SHIFT(SAVE$)   IF S$[0]=="," THEN    BREAK   ELSE    INC NAME$,S$   ENDIF  WEND END この方がいいかなぁ
0そうだね
プレイ済み
返信[49]
親投稿
ちょっとミス DEF BUNKAI(SAVE$)  VAR NAME$,S$  WHILE LEN(SAVE$)   S$=SHIFT(SAVE$)   IF S$=="," THEN    BREAK   ELSE    INC NAME$,S$   ENDIF  WEND END
0そうだね
プレイ済み
返信[50]
親投稿
いや、これだけど
0そうだね
プレイ済み
返信[51]
親投稿
関数だから変数に入れないとダメ NAME$=BUNKAI(SAVE$)
0そうだね
プレイ済み
返信[52]
親投稿
DEF BUNKAI(SAVE$)  VAR NAME$,S$  WHILE LEN(SAVE$)   S$=SHIFT(SAVE$)   IF S$=="," THEN    BREAK   ELSE    INC NAME$,S$   ENDIF  WEND  RETURN NAME$ END (値の返し忘れ修正)
0そうだね
プレイ済み
返信[53]
親投稿
つまりこれでいいですかね? テストプレイしたところ正常に読んでるっぽい ありがとうございました。 さて、これで自由にセーブデータに色々追加できるようになったから、モンスターやアイテムのゲット情報をセーブさせて、モンスターのHPやPPなどを作ったらライバルとのバトルを作り、その後野生とのバトルと捕獲システムを作ればマミモンの基礎システムはほぼ完成…?
1そうだね
プレイ済み
返信[54]
親投稿
使い方OK X$やY$を使わずに X=VAL(BUNKAI(SAVE$)) こうできるよ
0そうだね
プレイ済み
返信[55]
親投稿
自分で書いといてアレだけど ※WHILE-WENDの外はそのままで良い  WHILE LEN(SAVE$)   S$=SHIFT(SAVE$)   IF S$=="," THEN BREAK   INC NAME$,S$  WEND こんな感じで短縮できるのでサイズが気になる場合はどうぞ
0そうだね
プレイ済み
返信[56]
親投稿
関係ないけどプレイヤーIDってアルファベット込みの方がいいか数字だけの方がいいか 友達コードと間違えられないように12ケタの数字にはしないが 数字だけか英も入れるか迷った ちなみに今は数字8桁(公開キーの数字だけ版?)
0そうだね
プレイ済み