すぅぃった その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