Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 2 3 4 5 6 7 8 9 10 11 1225
次のページ(過去)
返信[4]
親投稿
ケイン KEIN.HORGAN
今回は、試しに家マップを用意しました。 RESTORE を使わない場合(つまり前回)と違い、こうすると表示されるマップが家マップになるわけです。 ……ですが、実はこれではまだ不完全です。 一度マップを読み込んだ後に、さらにマップを読み込もうとした際に、これでは不具合が発生します。 何故なら、前回読み込んだマップをMAP$[] から削除する命令がないからです。 というわけで、次回は配列の内容をリセットするコードを作成します。 ※みてわかる通り、マップ読み込み部を自作命令化しました。 こうしておくと、31行目のように1行だけで好きなマップを読み込めるようになります。
0そうだね
プレイ済み
返信[3]
親投稿
ケイン KEIN.HORGAN
そしてこっちがRESTORE 命令の使い方です。 31行目のようにRESTORE 命令でラベルを指定すると、そのラベルの位置からデータを読み込めます。
0そうだね
プレイ済み
返信[2]
親投稿
ケイン KEIN.HORGAN
まあ、やっているうちに「ちょっとこれは無いな」となったわけで。 基本的には、こういうふうに「データを複数使いたいな」というときは「RESTORE」命令と「ラベル」を組み合わせて使います。 ラベルとは334行目のように「@ラベル名」(ラベル名には好きな名前がつかえます)とする事で、プログラムの任意の場所に名前をつける機能です。
0そうだね
プレイ済み
返信[1]
親投稿
ケイン KEIN.HORGAN
※なんだかタイトルに偽りありになりつつあるので、タイトルを変更しました。 さて、今回と次回はマップ切り替えを実装しようと思います。 以前、「マップ切り替えに新規命令は使わないけど、FADE命令を使った方がそれっぽい」みたいな事を言った記憶がありますが…… 実際にそれで(今まで説明した命令だけで)やってみると、とんでもなく面倒でした。 流れとしては、 MAP_FIELD$[0] ' フィールドマップ用の配列 MAP_HOME$[0] ' 家用の配列 だとか複数の配列を用意して、順番にマップデータを読み込んで、そしてそれをさらにマップ表示用のMAP$[]配列に「今自分がどのマップにいるか」に応じて読み込ませる形になります。
0そうだね
プレイ済み
プレイ日記
ケイン KEIN.HORGAN
シンプルRPG改め、コンソールRPG製作日記 24日目 複数のマップを使い分ける~その1~ 「データ読み込み先を指定する[RESTORE]命令とラベルについて」
4そうだね
プレイ済み
返信[10]
親投稿
ケイン KEIN.HORGAN
きっと昔の人も色々今とは比べ物にならないくらい大変な制約の中で製作したんだろうなぁ、と思うと、今の時代で良かったなぁ、と思います(ぇ 昔だったらこんな力業での実装は無理だったろうし…… (マップに色をつけてるところなんか、1文字1文字毎に色指定してるわけで、考えてみるとすごい力技)
0そうだね
プレイ済み
返信[8]
親投稿
ケイン KEIN.HORGAN
ありがとうございます。 当初の予定では、全20回程度の範囲に収めて、 「何にも分からない人が一から参考に出来るように」みたいな事を考えていたのでこんなタイトルだったんですが…… どうみてもタイトルに偽りあり、な状態になりつつあります。 どうしよう?(ぇ
0そうだね
プレイ済み
返信[6]
親投稿
ケイン KEIN.HORGAN
とりあえず今回はここまで。 次回は、マップ切り替えを実装してみようと思います。
0そうだね
プレイ済み
返信[5]
親投稿
ケイン KEIN.HORGAN
DATA でマップを作成しますが、この際、最終行に "" と空文字列を定義しています。 こうする事で、READ を行うときの終了フラグにしています。 (前述したように、READ で読み込んだデータが空文字列ならデータ読み込み終了、と判断できます) さて…… 予定としてはこれでマップを広げる事が出来るはずだったのですが、実は上手く行きませんでした。 移動部分の実装命令に不具合が潜んでいた為です。 こちらの修正は、地道に考え違いをしていたところを試行錯誤で見つけて行く作業で特に解説するような事もありません。 (なお、不具合の原因はマップサイズが13×13でないと上手く動かないようになっていただけでした。 作成した時はそんなつもりは無かったので、単純な勘違いです) ※それはそれとして、海の表現の為に色指定部の追加も行っています。
0そうだね
プレイ済み
返信[4]
親投稿
ケイン KEIN.HORGAN
そしてマップ定義部がこちら。 マップを広げるついでに、大幅に変更しました。 (このやり方でマップを作る場合、左上から作るのが楽なので……)
0そうだね
プレイ済み
返信[3]
親投稿
ケイン KEIN.HORGAN
47行目でDATA 行から1行読み込み。 48行目では、読み込んだデータが""(空文字列 = 中身が空っぽの文字列。空白文字ではありません)の場合に、マップ読み込み終了と判断して、BREAK でループを抜けます。 49行目は今回新しく使う命令のPUSH 命令です。 この命令を使うと、配列の最後に要素を追加する事ができます。 また、51行目と52行目では、マップサイズを取得しています。 こちらも今回新しく使うLEN 命令で、この命令を使うと、指定した配列のサイズを取得できます。 51行目では MAP$ 配列の要素数を。この場合はマップの高さになります。 52行目では、MAP$[0] を指定していますが…… MAP$[0] のサイズとは、先ほど読み込んだDATA の事です。つまり、マップの横幅という事になります。
0そうだね
プレイ済み
返信[2]
親投稿
ケイン KEIN.HORGAN
元々の定義方法は、31行目からのように 「READ 命令で1行ずつデータを変数 DAT$ に代入し、MAP$ 配列の各要素を指定してそこに代入」 でした。 これは、一見するとFOR ループで簡略化できるように見えますが…… FOR ループを使うには、繰り返しの数(この場合は、マップの南北方向のサイズ)が事前に分かっていないといけません。 きっちりマップを作りこんでからなら、作成したマップサイズを数えればいいのですが、残念ながらマップはまだ未完成です。 というわけで、今回は回数が不明の時に使用する WHILE ~ WEND ループを使用します。 それが46行目からです。
0そうだね
プレイ済み
返信[1]
親投稿
ケイン KEIN.HORGAN
ちょっと間が空いてしまいましたが、製作日記の続きです。 前回は、力技でデータを配列に読み込みました。 今回は、もっとすっきりとした形で読み込み、かつマップを実際に広げてみます。 そのコードがこちらです。
0そうだね
プレイ済み
プレイ日記
ケイン KEIN.HORGAN
シンプルRPG製作日記 23日目 配列の要素数を増やす「PUSH」命令 配列の要素数を取得する「LEN()」関数
9そうだね
プレイ済み
返信[8]
親投稿
ケイン KEIN.HORGAN
> なんでポケモンタイピングこんなに安いの!? 物を作るときって、大量に作った方が1個1個は安く仕上げることが出来るんですよね。 そして、ポケモンはその「大量に作って1個1個を安く仕上げる」だけの事が出来るソフトなんだと思います。 でも、プチコン3号は…… 残念ながら、ポケモンほどはたくさん売れてないんじゃないかなぁ……
1そうだね
プレイ済み
返信[2]
親投稿
ケイン KEIN.HORGAN
あ、誤解のないように念のため、 「1万円とか高すぎるので諦めました」 という結果になっています。
1そうだね
プレイ済み
返信[1]
親投稿
ケイン KEIN.HORGAN
プチコン用キーボードはすでに検討したみたいですね。 この間のファンミーティングで言ってましたが、どうも1万円くらいかかるみたいですよ? (具体的な方法は聞いてないですが、中古品と比べてはいけないでしょう)
3そうだね
プレイ済み
返信[4]
親投稿
ケイン KEIN.HORGAN
このようにすることで、前回までのように直接 MAP$[] 配列に文字列を代入していたのと同じ結果になります。 が、これではちょっと面倒に過ぎます。 FOR ループを使うことでぐっと手間が減りますが、これよりさらに楽にする方法を次回は検討します。 (具体的には、PUSH 命令を使用する事でマップサイズをプログラム上で指定しなくてもいいようにします) ※もしDATA 命令で定義されているデータと、READ 命令で指定した変数の型が異なる場合(文字列データを定義しているのに、READ 側では数値変数を指定していた、等)や、READ 命令と DATA 命令の数が一致しない場合、エラーが発生する事に注意が必要です。
1そうだね
プレイ済み
返信[3]
親投稿
ケイン KEIN.HORGAN
このプログラムでは、327行目で初めてDATA 命令が出てきますので、そこで定義されているデータが取得できるわけです。 その結果、変数DAT$ には、327行目の文字列データ、つまりマップの一番上の行が代入されます。 では、47行目はどうでしょうか? ここでは、"2回目"にREAD 命令が実行されます。 そうすると、"2回目"にDATA 命令で定義されたデータが取得できるわけです。
1そうだね
プレイ済み
返信[2]
親投稿
ケイン KEIN.HORGAN
ここで定義したデータを取得する部分が46行目~になります。 このプログラムでは、46行目で“初めて“READ命令が実行されるわけですが、この時、DATA命令で“初めて“定義されたデータが取得できます。
1そうだね
プレイ済み