HSPでRPG製作「STEP2-5. テキストデータの読み込みと割り当て」を公開しました。
HSPでRPG製作「STEP2-5. テキストデータの読み込みと割り当て」を公開しました。
STEP2-4まではマップデータを直接ソースファイルに書き込んでいましたが
今回からは外部のファイルからマップデータを読み込みます。
新しく使用する命令も多くなりますが、がんばって覚えてください。
注目キーワード
・sdim命令
・notesel命令
・noteload命令
・noteget命令
・getstr命令
・strsize命令
・int命令
・sdim命令文字列型の配列変数を作成します。
マップデータを一時的に読み込むために、sdim命令で変数[ data ]を作成しました。
・notesel命令対象バッファを指定します。
バッファに変数[ data ]を指定しました。
・noteload命令指定された対象にバッファを読み込みます。
変数[ data ]にマップデータ[ map.txt ]ファイルを読み込みます。
・noteget命令指定行を読み込みます。
読み込んだデータは変数[ b.0 ]に代入しておきます。
・getstr命令バッファから文字列を読み出します。
変数[ b.0 ]にあるデータを[ , ]で区切られているとみなし、変数[ b.1 ]取り出していきます
・strsize命令読み出しバイト数を保持しています。
何バイト読み取ったかを変数[ a ]に保持しておきます。
・int命令整数値に変換します。
変数[ b.1 ]をint命令で変換し、それを変数[ map(x, y) ]に代入します。
・sample.bmp
・chr.bmp
・map.txt
※bmpファイルがアップロード出来ないので、pngファイル形式になっています
PNGファイルを一旦保存してから、BMPファイルに変換して頂くか
後に記載されているURLから[ step2-5.zip ]をダウンロードしてください
画像[ sample2.bmp ]はこちらを使います

マップファイル[ map.txt ]はこちらを使います
http://blog-imgs-26.fc2.com/p/o/k/pokopokogame/map.txt
以上2つのファイルを保存して
ソースコードのあるフォルダと同じ場所に移動してください。
ソースコードと画像のまとまったファイルはこちらです。(83.3 KB)
http://pokpokgame.huuryuu.com/rpgmake/step2-5.zip
ずいぶんとソースコードが長くなってきました、入力は大丈夫ですか?
入力出来たら、F5キーを押してください
このように表示されましたか?出来ていればOKです

このようにして外部にデータを作成しておくと、データ変更が楽になります。
ソースコードは長くなりますが、ぜひ積極的に使いたいルーチンです。
ステップ2-5.0 テキストデータの読み込みと割り当て |
---|
STEP2-4まではマップデータを直接ソースファイルに書き込んでいましたが
今回からは外部のファイルからマップデータを読み込みます。
新しく使用する命令も多くなりますが、がんばって覚えてください。
注目キーワード
・sdim命令
・notesel命令
・noteload命令
・noteget命令
・getstr命令
・strsize命令
・int命令
ステップ2-5.1 新規命令の解説 |
---|
・sdim命令文字列型の配列変数を作成します。
マップデータを一時的に読み込むために、sdim命令で変数[ data ]を作成しました。
・notesel命令対象バッファを指定します。
バッファに変数[ data ]を指定しました。
・noteload命令指定された対象にバッファを読み込みます。
変数[ data ]にマップデータ[ map.txt ]ファイルを読み込みます。
・noteget命令指定行を読み込みます。
読み込んだデータは変数[ b.0 ]に代入しておきます。
・getstr命令バッファから文字列を読み出します。
変数[ b.0 ]にあるデータを[ , ]で区切られているとみなし、変数[ b.1 ]取り出していきます
・strsize命令読み出しバイト数を保持しています。
何バイト読み取ったかを変数[ a ]に保持しておきます。
・int命令整数値に変換します。
変数[ b.1 ]をint命令で変換し、それを変数[ map(x, y) ]に代入します。
ステップ2-5.2 使用するファイル一覧 |
---|
・sample.bmp
・chr.bmp
・map.txt
※bmpファイルがアップロード出来ないので、pngファイル形式になっています
PNGファイルを一旦保存してから、BMPファイルに変換して頂くか
後に記載されているURLから[ step2-5.zip ]をダウンロードしてください
画像[ sample2.bmp ]はこちらを使います

マップファイル[ map.txt ]はこちらを使います
http://blog-imgs-26.fc2.com/p/o/k/pokopokogame/map.txt
以上2つのファイルを保存して
ソースコードのあるフォルダと同じ場所に移動してください。
ソースコードと画像のまとまったファイルはこちらです。(83.3 KB)
http://pokpokgame.huuryuu.com/rpgmake/step2-5.zip
ステップ2-5.3 ソースコードの入力 |
---|
randomize
screen 0, 400, 400
title "step2-5"
buffer 1
picload "sample2.bmp"
gsel 0
font "", 20
cx = 5 // X座標
cy = 5 // Y座標
//////////////////////////////////////////////////
// マップデータをテキストファイルから読み込み
//////////////////////////////////////////////////
sdim data
notesel data // バッファに変数[ data ]を指定する
noteload "map.txt"
// 配列変数[ マップ ]を用意する
dim map, 20, 20
// マップデータを変数[ map ]に割り当てる
x = 0
y = 0
repeat length(map)
noteget b.0, y // 読み込むデータの行
a = 0 // インデックスを0にする
repeat length2(map)
getstr b.1, b.0, a, ',' // 読み込むデータの番号
a += strsize // 次のデータ参照するためにインデックスを追加
map(x, y) = int(b.1) // int型に変換したものを代入
x += 1
loop
y += 1 : x = 0
loop
dim data // メモリ解放
//////////////////////////////////////////////////
// メインルーチン
*main
redraw 0
wait 5
// 背景を塗りつぶし
color 255, 255, 255
boxf
color 0, 0, 0
gosub *draw_map
gosub *draw_chr
gosub *check_key
redraw 1
goto *main
// マップを描写
*draw_map
mx = 0 // X座標を保持するための変数
my = 0 // Y座標を保持するための変数
repeat length(map)
repeat length2(map)
// マップデータが0の場合地面を描写
if map(mx, my) = 0 {
color 200, 200, 200
pos mx*20, my*20
gcopy 1, 20,0, 20,20
}
// マップデータが1の場合壁を描写
if map(mx, my) = 1 {
color 200, 200, 200
pos mx*20, my*20
gcopy 1, 0,0, 20,20
}
mx += 1
loop
my += 1 : mx = 0
loop
return
// キャラクター描写
*draw_chr
gmode 2
color 0, 0, 0
pos cx*20, cy*20
gcopy 1, 40,0, 20,20
return
// キー入力チェック
*check_key
stick key, 15
// 入力があった場合は移動先を調べる
if key >= 1 : gosub *check_map
// [ move ]フラグが0の時だけ移動可能です
if move = 0 {
// [ key ]という変数の状態を比較する
switch key
// 左方向に進みたい時
case 1
cx -= 1
if cx < 0 : cx = 0
swbreak
// 上方向に進みたい時
case 2
cy -= 1
if cy < 0 : cy = 0
swbreak
// 右方向に進みたい時
case 4
cx += 1
if cx >= 20 : cx = 19
swbreak
// 下方向に進みたい時
case 8
cy += 1
if cy >= 20 : cy = 19
swbreak
swend
}
return
// 壁があるか調べる
*check_map
move = 0 // 動けるか判断するフラグ
switch key
case 1 : a = cx - 1 : b = cy : swbreak// 左方向
case 2 : a = cx : b = cy - 1 : swbreak// 上方向
case 4 : a = cx + 1 : b = cy : swbreak// 右方向
case 8 : a = cx : b = cy + 1 : swbreak// 下方向
default : a = cx : b = cy : swbreak// その他のキー
swend
// 移動したい座標に壁がある場合は[ move ]に1を代入
if map(a, b) = 1 : move = 1
return
ステップ2-5.4 実行結果 |
---|
ずいぶんとソースコードが長くなってきました、入力は大丈夫ですか?
入力出来たら、F5キーを押してください
このように表示されましたか?出来ていればOKです

このようにして外部にデータを作成しておくと、データ変更が楽になります。
ソースコードは長くなりますが、ぜひ積極的に使いたいルーチンです。
スポンサーサイト
コメントの投稿
qjwkqdn@outlook.com
HSPでゲーム製作 HSPでRPG製作「STEP2-5. テキストデータの読み込みと割り当て」を公開しました。
[url=http://www.gng1m7964n812r1a4pr7cw348eke16fas.org/]ujqflqkwhtf[/url]
<a href="http://www.gng1m7964n812r1a4pr7cw348eke16fas.org/">ajqflqkwhtf</a>
jqflqkwhtf http://www.gng1m7964n812r1a4pr7cw348eke16fas.org/
[url=http://www.gng1m7964n812r1a4pr7cw348eke16fas.org/]ujqflqkwhtf[/url]
<a href="http://www.gng1m7964n812r1a4pr7cw348eke16fas.org/">ajqflqkwhtf</a>
jqflqkwhtf http://www.gng1m7964n812r1a4pr7cw348eke16fas.org/
kuvjtrq@usxpb.pa
xperiaxz2ケースブランドコピー http://www.fasfsul.com.br/index.php/galeria/noticias-fasf-sul
Digital Window Display https://www.ingscreen.com/digital-window-display/
Digital Window Display https://www.ingscreen.com/digital-window-display/
vlfdq@aeml.pr
Compressed Wipes https://www.hsnonwoven.com/compressed-wipes/
ロジェヴィヴィエ靴コピー国内発送 http://blogs.4j.lane.edu/atseugene4j/
ロジェヴィヴィエ靴コピー国内発送 http://blogs.4j.lane.edu/atseugene4j/
qizbqt@ufz.si
Side Suctions https://www.robamworld.com/side-suctions-range-hoods/
セリーヌピアスコピー激安 https://www.asociacionprogeria.com/
セリーヌピアスコピー激安 https://www.asociacionprogeria.com/
czrfthajf@matds.tm
パネライ時計コピー代引き https://perevodportugal.ru/
Fireproof Rigid Insulation https://www.beihuafactory.com/fireproof-rigid-insulation/
Fireproof Rigid Insulation https://www.beihuafactory.com/fireproof-rigid-insulation/