プチコン3号 SmileBASIC コミュニティプレイ日記ケイン KEIN.HORGAN2015/11/04 23:38:28シンプルRPG製作日記 17日目 主人公のブルドーザー化を治す 「CHR$:CHKCHR() やASC() で取得した数値を文字に戻す」2そうだね 3返信プレイ済み2017/11/03 15:17:51に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿ケイン KEIN.HORGAN2015/11/4 23:38前回は、主人公の歩いたところが全部道になってしまう状態で終了しました。 自ら道を作る主人公っていうのは悪くないんですが、物理的にそれをやられると困るので、今回はそれを修正します。 今回の流れは次のようになります。 1.主人公のいる場所の地形を覚えておく 2.主人公がいる場所を、空白ではなく地形で上書きする 3.主人公の移動先を「主人公がいる場所」として記憶する(次回移動時に使う) 4.主人公を移動先に表示する0そうだね プレイ済み2017/11/03 15:17:51に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿ケイン KEIN.HORGAN2015/11/4 23:08そうですねー マップ情報を文字列配列に読み込んだらそれで判定ができるかと思います。 最終的にREAD/DATA 命令を使用した場合は文字列配列に読み込む事になると思いますので、その時はその方法を使う事になると思われます。0そうだね プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティ返信[15]親投稿ケイン KEIN.HORGAN2015/11/4 23:06なるほど、確かめてみました。 とりあえず、PRINT した段階ではスクロールしなかったですね。 その後、続けてPRINT を実行した時にスクロールしました。 だから、一応大丈夫なようです。0そうだね プレイ済み2017/11/03 15:19:12に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿ケイン KEIN.HORGAN2015/11/3 23:57そして最後に、71行目でチェックした結果を反映しています。 IF !F_MOVE THEN ~ というのは、「もし、F_MOVE が 0 なら」という意味です。 F_MOVE が0 、つまり、先ほどのループで TRUE にならずにFALSE のままだったなら、今回移動しようとした場所は、移動できる地形ではなかった、という事なので…… NX と NY の値を、移動前の元の座標に戻してあげます。こうする事で、移動をキャンセルする事が出来ました。 さて、次回ですが…… 今のままだと、主人公が平原や森を歩くと、道になってしまいます。 それをどうにかしようと思います。 ※あと、タイトルに誤字がありました。「~ CKHKCHR() と ASC() について~」ではなくて、 「~ CHKCHR() と ASC() について~」でした(汗1そうだね プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿ケイン KEIN.HORGAN2015/11/3 23:52次の行からは、移動先の地形が、「移動できる地形」かどうかをチェックしています。 移動できる地形は3種類あるので、FOR ループで3回ループさせています。 C(移動先の地形)と、MOVABLE_TILE[0](移動できる地形の1種類目)が同じなら、 F_MOVE = TRUE にして(TRUE とは、数値で1の事です) そしてループを抜ける という処理です。 ※THEN の後に書いた命令の後に : を使うと、追加でTHEN の時に行う命令が書けます もしC が「移動できる地形」3種類のうち、どれか一つと同じ地形なら、F_MOVE が TRUE になり、もし C が移動できる地形の3種類のどれかでなかった場合は、F_MOVE は FALSE のまま、と言うことになります。0そうだね プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿ケイン KEIN.HORGAN2015/11/3 23:43実際に使うときは、65行目からのようにします。 65行目の C という変数は、「これから移動する場所の地形」の数値が代入されます。 ※NX,NY というのは、59~62行目で出てくる変数で、「これから移動しようとする場所の座標」の事です。 66行目の F_MOVE という変数は、「この先、移動出来るかどうか?」の変数です。 初期値は FALSE とします。 (FALSE は、数値の0の事です。主に「正しくない」という意味で使います)0そうだね プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿ケイン KEIN.HORGAN2015/11/3 23:32まあ、呼び名は今は関係ないので話を元に戻すと…… 「山は57859 でいいとしても、じゃあ森とか道とかはどうなるの?」 となります。 これを求めるのが、ASC() 関数です。 45行目からを見てください。 これは、「移動できる地形のリスト」を作っているところです。 MOVABLE_TILE[0] ~ MOVABLE_TILE[2] までの配列を作成して、この1つ1つに「移動できる地形」をセットしていきます。 例えば46行目は、MOVABLE_TILE[0] に、ASC(" ") を入れています。 前回作成したマップでは、道の部分を" "(空白文字です)にしているので、こうなるわけです。 同様に、47,48行目では平原,森を指定しています。 今回は、道と平原、そして森を移動可能な地形としてみました。0そうだね プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿ケイン KEIN.HORGAN2015/11/3 23:291.移動しようとしている場所に何があるかを調べる これには、CHKCHR() 関数が使えます。使い方は、次の通りです。 C=CHKCHR(X,Y) ' C は、数値型変数。X,Y は、調べたい場所の座標 こうすると、調べた場所にある物に応じた値がCに代入されます。 例えば、もし山(のつもりで配置したそれっぽい記号)があった場合、C=57859 になります。 これが、森っぽい記号だとか、道のつもりで配置した空白文字だとかなら、また違う値になるわけです。 ……はい、山っぽい記号が57859 だとかすぐには意味が分からないですね。 どうして山っぽい記号が57859 になるのかは、どこかの偉い人が決めたルールがあるからで、そのルールに従って文字を数値で表したものを「UTF-16」コードと呼びます。0そうだね プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿ケイン KEIN.HORGAN2015/11/3 23:27さて、この判定ですが…… プチコンには専用命令はないので、コンソール画面で行う場合、次のように手動で判定する流れになります。 1.移動しようとしている場所に何があるかを調べる ↓ 2.もし何もない(または、何かあっても歩くのに問題ない場合)なら、現状通り。 もし歩くのに邪魔な物があるなら、移動をキャンセルする。 ↓ 3.キー入力待ちに戻る0そうだね プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿ケイン KEIN.HORGAN2015/11/3 23:26前回の続きです。 といいつつ、前回「次は下移動時のバグの不具合と~」と言った気がしますが、その説明は前回のプレイ日記コメントで済ませちゃいました。 ので、今日はもう一つの予定である「当たり判定」からやります。 (もっと正確に言うならば「移動出来るかどうかの判定」ですね) ※この当たり判定、もしかしたら使わなくなるかもしれないですが…… まあ、覚えていても損はないので、気にしない事にします。 (使わなくなる=キャラクターを移動させるのではなく、マップをスクロールさせる形式にした場合の話)0そうだね プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティプレイ日記ケイン KEIN.HORGAN2015/11/03 23:24:10シンプルRPG製作日記 16日目 当たり判定をつける(コンソール画面版) ~ CKHKCHR() と ASC() について~1そうだね 9返信プレイ済み2017/11/03 15:18:18に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿ケイン KEIN.HORGAN2015/11/3 16:57PRINT "HELLO WORLD!!" とすると、画面に"HELLO WORLD!!" と表示されるよ!(伝統的回答) または、EDIT モードで XSCREEN 3 DISPLAY 1 SPSET 0,0 WHILE TRUE TOUCH OUT TM,TX,TY SPOFS 0,TX,TY WEND とした後、DIRECT モードでSTART すると、いちごをタッチで動かせるよ!(ちょっと進んだ回答) こんな感じでどうでしょうか?0そうだね プレイ済み2017/11/03 19:21:27に取得
プチコン3号 SmileBASIC コミュニティ返信[27]親投稿ケイン KEIN.HORGAN2015/11/3 16:41ありちゃんさんはプログラムを組んでみた事は無いですか? プログラムじゃないにしても、小説を書いてみたりとかでもいいです。 小説に例えて言えば、「話のネタを考えてみたはいいけど、途中で力尽きちゃうんだよね(すごい大雑把な意訳)」というような感じです。 プチコン3号は、遊ぶだけじゃなくて、ソフトを作る事も出来るので、こういう話題も出たりします。2そうだね プレイ済み2017/11/03 18:38:02に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿ケイン KEIN.HORGAN2015/11/3 16:37まんじゅうRPGっていうくらいだから、まんじゅうを書くお絵かきプログラムは必要かなぁ。 ……えーと、こういう事が聞きたいわけでは無いと思うので適当に答えますが、メニューからいけるWEB のプチコン講座とか、サンプルプログラムとかを眺めてみて、意味が分からない命令があったら、それを調べるなり聞いてみるなりするといいと思います。0そうだね プレイ済み2017/11/03 15:18:43に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿ケイン KEIN.HORGAN2015/11/3 10:59マップを作る、と一口に言っても、やり方はいくつかあるので、それがはっきりしないと答えようがないかも。 コンソールでいいなら答えられますが…… 後は、そもそも「マップの作り方」と「当たり判定」は全然別の作業になるので、どっちが分からないのかが分かりません。 マップ自体は出来ているのでしょうか?2そうだね プレイ済み2017/11/03 18:37:59に取得
プチコン3号 SmileBASIC コミュニティ返信[12]親投稿ケイン KEIN.HORGAN2015/11/3 9:24> みきさん そうなんですよね。 自分も特に疑問に思わず、いつも「文字キャラクターを移動させるならこんな感じ」と思ってたんですが、実際にやってみると思わぬ不具合が、って奴です。 折角だからちゃんと説明すると、 「キャラクター移動と言っても、使っているのはPRINT文。 PRINT文を使う場合、通常使用だと自動改行するが、最下行で自動改行された場合は画面がスクロールする」 というのが問題の原因です。 まあ、大体のコンソールゲームの場合、キャラクターが最下行を移動する、というようなケースは稀だと思うので(大体は最下行は枠か何かの為の表示位置になってる)あんまり気にしなくてもいい部分なのかもしれませんけどね。0そうだね プレイ済み2017/11/03 15:19:12に取得
プチコン3号 SmileBASIC コミュニティ返信[11]親投稿ケイン KEIN.HORGAN2015/11/2 23:50いや、それは別に変なこだわりでも何でもないと思いますー QSPやOSP程度の小さなプログラムだとか、使いきりのちょっとしたプログラムでもない限りは、そういうのって巡りめぐって楽になる事も多いですし。1そうだね プレイ済み2017/11/03 18:38:02に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿ケイン KEIN.HORGAN2015/11/2 23:14プチコンで(そして自分の余力的に)どこまで出来るのかいまいち分かってないから、あんまり細かく考えることはしないかなぁ(ぇ だって考えたアイデアがそもそも実現出来ないようなのだとがっかりするし…… (実装するには年単位でかかります、だとか、プチコン3号じゃ物理的に無理です、だとかそういう意味で) 色々プログラムをたくさん作って、「プチコンで、また自分の実力的に」どういう機能なら実装できるか、をちゃんと把握したら、もしかしたら細かく考えるかも?1そうだね プレイ済み2017/11/03 18:38:02に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿ケイン KEIN.HORGAN2015/11/2 22:56困っている原因が「変数が分からなくなる」「何をしようと思っていたのか忘れる」とかなら、単純に紙に書いておくとかしかないんじゃないでしょうか?2そうだね プレイ済み2017/11/03 18:38:02に取得