すぅぃった その6

サンプルRPG(ファイルを分割して書く)

僕はHSPの良い所の一つが
ファイルを分割して書かなくて良いことだと思います
いくつものファイルに分割してあると
ファイル同士の関連がよくわからないからです
そのため、すぅぃった その5では
大きめのファイルを一つのファイルに全部書き込みましたが
そうはいっても僕も大きめのファイルに全部書く事はしません
僕もアウトラインプロセッサを使って分割して書いて
全部連結して出力して実行します
本当はアウトラインプロセッサのような仕組みで
ホームページに書き込みたいところですが、そんなことはできません
なのでファイルを分割して書きます
それによってファイル内の内容が少しは理解しやすくなることでしょう
でも本当はすぅぃった その5 と その6 を
見比べながら読んで頂けると嬉しいです
ちなみにスクリプトはHSP2.61です
(3.0使うと保守しないといけないですからね)

メインとなるスクリプト
RPG_TEST03_u_main.as

主人公の各種ステータスの変数宣言と初期設定
RPG_TEST03_u_status.as

//	RPG_TEST03_u_status.as
//	主人公の各種ステータスの変数宣言と初期設定

player_name	="冒険者"
player_lv	=1
player_mhp	=30
player_hp	=30
player_atack	=5
player_exp	=0
player_next_exp	=25
player_gold	=100
own_poshon_lv1	=0
own_poshon_lv2	=0
own_poshon_lv3	=0
own_poshon_lv4	=0
own_poshon_lv5	=0

//	ダンジョンで戦闘時に使用するモンスターの名前,mhp,hp,at,exp,gp
//	ダンジョンLV選択時に代入する
ene_name=""
ene_atp=0
ene_mhp=0
ene_hpp=0
ene_exp=0
ene_gpp=0

//	ここからはボタン関係の変数
//	これらの変数の中身をobjprmに代入する
btstr_1=""
btstr_2=""
btstr_3=""
btstr_4=""
btstr_5=""
btstr_6=""

//	ボタンが押された時にこれらの変数をselected_btnextに代入して
//	メインルーチンにジャンプする
btnext_1=""
btnext_2=""
btnext_3=""
btnext_4=""
btnext_5=""
btnext_6=""

使用する関数とサブルーチン
RPG_TEST03_u_func.as

//	RPG_TEST03_u_func.as
//	使用する関数とサブルーチン

//	関数と命令の回避
goto *@f

//	モンスターの名前と各種ステータスを代入する関数
#deffunc monster_st_set int
mref monster_lv,0
switch monster_lv
case 1
	ene_name="ゴブリン"
	ene_mhp=15
	ene_hpp=ene_mhp
	ene_atp=10
	ene_exp=25
	ene_gpp=50
	swbreak
case 2
	ene_name="スケルトン"
	ene_mhp=30
	ene_hpp=ene_mhp
	ene_atp=20
	ene_exp=50
	ene_gpp=90
	swbreak
case 3
	ene_name="ジャイアント"
	ene_mhp=60
	ene_hpp=ene_mhp
	ene_atp=40
	ene_exp=100
	ene_gpp=160
	swbreak
case 4
	ene_name="ヒドラ"
	ene_mhp=120
	ene_hpp=ene_mhp
	ene_atp=80
	ene_exp=200
	ene_gpp=280
	swbreak
case 5
	ene_name="ドラゴン"
	ene_mhp=240
	ene_hpp=ene_mhp
	ene_atp=160
	ene_exp=0
	ene_gpp=0
	swbreak
swend
return
//	レベルアップによって変更されるPlayerのステータス
#deffunc player_st_set int
mref player_up_lv,0
switch player_lv
case 1
	player_lv	=2
	player_mhp	=60
	player_atack	=10
	player_next_exp	=100
	swbreak
case 2
	player_lv	=3
	player_mhp	=120
	player_atack	=20
	player_next_exp	=300
	swbreak
case 3
	player_lv	=4
	player_mhp	=240
	player_atack	=40
	player_next_exp	=800
	swbreak
case 4
	player_lv	=5
	player_mhp	=480
	player_atack	=80
	player_next_exp	=0
	swbreak
swend
return

//	プレイヤーのステータスを表示するサブルーチン
*show_player_status
	mes ""
	mes "冒険者"
	mes "LV"+player_lv+"    Next"+player_next_exp+"("+player_exp+")"
	mes "HP   "+player_hp+"/"+player_mhp
	mes "攻撃力 "+player_atack
	mes "所持金 "+player_gold
	mes "ポーション "+own_poshon_lv1+"/"+own_poshon_lv2+"/"+own_poshon_lv3+"/"+own_poshon_lv4+"/"+own_poshon_lv5
return

*ステータス初期化
	player_name	="冒険者"
	player_lv	=1
	player_mhp	=30
	player_hp	=30
	player_atack	=5
	player_exp	=0
	player_next_exp	=25
	player_gold	=100
	own_poshon_lv1	=0
	own_poshon_lv2	=0
	own_poshon_lv3	=0
	own_poshon_lv4	=0
	own_poshon_lv5	=0
	selected_btnext="OP"
return

*ポーション詳細表示
	mes {"ポーションLV1 5GP    回復量 30
	ポーションLV2 10GP   回復量 60
	ポーションLV3 20GP   回復量 120
	ポーションLV4 40GP   回復量 240
	ポーションLV5 80GP   回復量 480"}
return

*@

セーブとロードのサブルーチン
RPG_TEST03_u_SL.as

//	RPG_TEST03_u_SL.as
//	セーブとロードのサブルーチン

goto *@f
//	プレイヤーのステータスを保存するサブルーチン
*player_dat_save
	dim to_save,20
	to_save.0=	player_lv
	to_save.1=	player_mhp
	to_save.2=	player_hp
	to_save.3=	player_atack
	to_save.4=	player_exp
	to_save.5=	player_next_exp
	to_save.6=	player_gold
	to_save.7=	own_poshon_lv1
	to_save.8=	own_poshon_lv2
	to_save.9=	own_poshon_lv3
	to_save.10=	own_poshon_lv4
	to_save.11=	own_poshon_lv5

	bsave "testdt.dat",to_save,160
return

//	プレイヤーのステータスを読み込むサブルーチン
*player_dat_load
	dim to_load,20
	bload "testdt.dat",to_load,160
	player_lv	=to_load.0
	player_mhp	=to_load.1
	player_hp	=to_load.2
	player_atack	=to_load.3
	player_exp	=to_load.4
	player_next_exp	=to_load.5
	player_gold	=to_load.6
	own_poshon_lv1	=to_load.7
	own_poshon_lv2	=to_load.8
	own_poshon_lv3	=to_load.9
	own_poshon_lv4	=to_load.10
	own_poshon_lv5	=to_load.11
return

*@

ボタン関係のサブルーチン
RPG_TEST03_u_bt.as

//	RPG_TEST03_u_bt.as
//	ボタン関係のサブルーチン

//	サブルーチン回避
goto *@f

//	ボタンを一つ表示してbtstrの中身をボタンに代入する
*one_bt
	cls 0
	pos 0,0
	objsize 120,24
	button btstr_1,*selected1
return

//	ボタンを二つ表示してbtstrの中身をボタンに代入する
*two_bt
	cls 0
	pos 0,0
	objsize 120,24
	button btstr_1,*selected1
	button btstr_2,*selected2
return

//	ボタンを三つ表示してbtstrの中身をボタンに代入する
*three_bt
	cls 0
	pos 0,0
	objsize 120,24
	button btstr_1,*selected1
	button btstr_2,*selected2
	button btstr_3,*selected3
return

//	ボタンを四つ表示してbtstrの中身をボタンに代入する
*four_bt
	cls 0
	pos 0,0
	objsize 120,24
	button btstr_1,*selected1
	button btstr_2,*selected2
	button btstr_3,*selected3
	button btstr_4,*selected4
return

//	ボタンを五つ表示してbtstrの中身をボタンに代入する
*five_bt
	cls 0
	pos 0,0
	objsize 120,24
	button btstr_1,*selected1
	button btstr_2,*selected2
	button btstr_3,*selected3
	button btstr_4,*selected4
	button btstr_5,*selected5
return

//	ボタンを六つ表示してbtstrの中身をボタンに代入する
*six_bt
	cls 0
	pos 0,0
	objsize 120,24
	button btstr_1,*selected1
	button btstr_2,*selected2
	button btstr_3,*selected3
	button btstr_4,*selected4
	button btstr_5,*selected5
	button btstr_6,*selected6
return

//	ID0のボタンが押された時にselected_btnextにbtnext_1の中身を代入して
//	メインルーチンにジャンプ
*selected1
	selected_btnext=btnext_1
	goto *bt_selected_gomain

//	ID1のボタンが押された時にselected_btnextにbtnext_2の中身を代入して
//	メインルーチンにジャンプ
*selected2
	selected_btnext=btnext_2
	goto *bt_selected_gomain

//	ID2のボタンが押された時にselected_btnextにbtnext_3の中身を代入して
//	メインルーチンにジャンプ
*selected3
	selected_btnext=btnext_3
	goto *bt_selected_gomain

//	ID3のボタンが押された時にselected_btnextにbtnext_4の中身を代入して
//	メインルーチンにジャンプ
*selected4
	selected_btnext=btnext_4
	goto *bt_selected_gomain

//	ID4のボタンが押された時にselected_btnextにbtnext_5の中身を代入して
//	メインルーチンにジャンプ
*selected5
	selected_btnext=btnext_5
	goto *bt_selected_gomain

//	ID5のボタンが押された時にselected_btnextにbtnext_6の中身を代入して
//	メインルーチンにジャンプ
*selected6
	selected_btnext=btnext_6
	goto *bt_selected_gomain
*@

こちらにサンプルあります
RPG_TEST102