HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0710
HSP初心者celloadが怪しいです、ゲームのメインループがループしません10解決


HSP初心者

リンク

2016/7/10(Sun) 23:50:11|NO.76140

まずこんな関数を作りました、グラフィックロード関数です
//グラフィックロード/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*FuncLoadGraph
celload "./image/player/face0.png" , hPLAYER_FACE(0)
celload "./image/player/face.png" , hPLAYER_FACE(1)
celload "./image/player/body0.png" , hPLAYER_BODY(0)
celload "./image/player/body.png" , hPLAYER_BODY(1)
celload "./image/player/0hp.png" , hCHARA_MAKING(0)
celload "./image/player/1str.png" , hCHARA_MAKING(1)
celload "./image/player/2mstr.png" , hCHARA_MAKING(2)
celload "./image/player/3def.png" , hCHARA_MAKING(3)
celload "./image/player/4mdef.png" , hCHARA_MAKING(4)

l_str = "./image/enemy/enemyx.png"

repeat g_max_enemy, 0 : l_str = strf("./image/enemy/enemy%d.png", cnt): celload l_str, hENEMY(cnt) : loop
return


これをメインループの前に呼び出しています


//初期化/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
title "計算KING" //タイトル
//gosub *FuncLoadGraph //グラフィックロード ←ロード関数をコメントアウト
gosub *FuncInitPlayer //プレイヤー初期化
gosub *FuncInitEnemy //敵初期化

/*メインループ**************************************************************************************************************************************/
/***************************************************************************************************************************************************/
*GameMainLoop
redraw 0 //描画モード0

//分岐
if g_scene == BATTLE : gosub *FuncBattle // : else goto *my_jump //戦闘
if g_scene == CHARA_MAKING : gosub *FuncCharaMaking // : else goto *my_jump //キャラクタメイキング
if g_scene == ADV : gosub *FuncADV // : else goto *my_jump //ADVパート
if g_scene == TTITLE : gosub *FuncTitle // : else goto *my_jump //タイトル
if g_scene == ENDING : gosub *FuncEnding // : else goto *my_jump //エンディング
if g_scene == GAME_OVER : gosub *FuncGameOver // : else goto *my_jump //ゲームオーバー
if g_scene == END_GAME : end //ゲーム終了
if g_scene ! BATTLE && g_scene ! CHARA_MAKING && g_scene ! ADV && g_scene ! TTITLE && g_scene != ENDING && g_scene ! GAME_OVER && g_scene ! ENDGAME : pos 0, 0 : print "例外処理です"

redraw 1 //描画モード1

await 16 //一定時間待つ

goto *GameMainLoop




「gosub *FuncLoadGraph //グラフィックロード」
これをコメントアウトするとウインドウは閉じませんが、コメントアウトしなかったら
何故かメインループがループせず?一瞬でウインドウが閉じられてしまいます。その理由が
解りません。ご教示お願いします。

一応、DXライブラリでゲーム作ってた時期があるんですが、勝手が違って本当に解らないのです。
よろしくお願いします。ほかに理由がありそうなら、後ほどソースを全部載せますが。やめた方がいいかな。



この記事に返信する


KA

リンク

2016/7/11(Mon) 07:48:34|NO.76143

関数でもない単なる gosub で呼び出されるだけです。
それに gosub する前に実行されています。

サブルーチンコールは end や stop の後ろなど、スクリプトの最後に
まとめて記載するのが一般的です。



HSP初心者

リンク

2016/7/13(Wed) 00:11:04|NO.76169

アドバイスを聞いて色々試しましたがやっぱり解りません
HSPの文法そのものが参考書を読んでも理解できてない?
あと自分はもう随分オッサンなので適応力が…

何故、returnが弾かれるかが解らないです。
あとreturnをコメントアウトしてもオーバーフローと弾かれるのも
本当に解りません。どなたか詳しい方、ご教示頂けないでしょうか?
以下はソース全部です。分割コンパイルしてません。


//プリプロセッサ命令/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//実行ファイル
#packopt name "CalculateKING"
//グラフィック
#pack "./image/player/face0.png"
#pack "./image/player/face.png"
#pack "./image/player/body0.png"
#pack "./image/player/body.png"
#pack "./image/player/0hp.png"
#pack "./image/player/1str.png"
#pack "./image/player/2mstr.png"
#pack "./image/player/3def.png"
#pack "./image/player/4mdef.png"

#pack "./image/enemy/enemy0.png"
#pack "./image/enemy/enemy1.png"
#pack "./image/enemy/enemy2.png"
#pack "./image/enemy/enemy3.png"
#pack "./image/enemy/enemy4.png"

//シーン
#enum TTITLE = 0 //タイトル画面
#enum BATTLE //戦闘
#enum ENDING //エンディング
#enum GAME_OVER //ゲームオーバー
#enum END_GAME //ゲーム終了

//パラメータ
#enum SEED = 0 //シード
#enum MAX_HP //最大HP
#enum HP //HP
#enum HP0 //基本HP
#enum HPP //HP補正
#enum SSTR //攻撃力
#enum STR0 //基本攻撃力
#enum STRP //攻撃力補正
#enum MSTR //"カウンター攻撃力" 及び "敵魔法攻撃力"
#enum MSTR0 //"基本カウンター攻撃力" 及び "敵基本カウンター攻撃力"
#enum MSTRP //"カウンター攻撃力補正" 及び "敵魔法攻撃力補正"
#enum DEF //防御力
#enum DEF0 //基本防御力
#enum DEFP //防御力補正
#enum MDEF //魔法防御力
#enum MDEF0 //基本魔法防御力
#enum MDEFP //魔法防御力補正


//大域変数///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//グラフィックハンドル
dim hPLAYER_FACE, 2 //顔
dim hPLAYER_BODY, 2 //身体
dim hCHARA_MAKING, 5 //キャラクタメイキング

g_max_emnemy = 5 //敵の数最大値
dim hENEMY, g_max_emnemy //敵グラフィック

//シーン
g_scene = TTITLE //最初はタイトル画面

//プレイヤーパラメータ
dim g_player, 17

//敵パラメータ
dim g_enemy, g_max_emnemy, 17


//グラフィックロード/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*FuncLoadGraph
celload "./image/player/face0.png" , hPLAYER_FACE(0)
celload "./image/player/face.png" , hPLAYER_FACE(1)
celload "./image/player/body0.png" , hPLAYER_BODY(0)
celload "./image/player/body.png" , hPLAYER_BODY(1)
celload "./image/player/0hp.png" , hCHARA_MAKING(0)
celload "./image/player/1str.png" , hCHARA_MAKING(1)
celload "./image/player/2mstr.png" , hCHARA_MAKING(2)
celload "./image/player/3def.png" , hCHARA_MAKING(3)
celload "./image/player/4mdef.png" , hCHARA_MAKING(4)

l_str = "./image/enemy/enemyx.png"

repeat g_max_enemy, 0 : l_str = strf("./image/enemy/enemy%d.png", cnt): celload l_str, hENEMY(cnt) : loop
return

//プレイヤー初期化///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*FuncInitPlayer
//基本
g_player(SEED) = 100
g_player(MAX_HP) = 20
g_player(HP0) = g_player(MAX_HP)
g_player(STR0) = 20
g_player(MSTR0) = 20
g_player(DEF0) = 20
g_player(MDEF0) = 20

//補正
g_player(HPP) = 0
g_player(STRP) = 0
g_player(MSTRP) = 0
g_player(DEFP) = 0
g_player(MDEFP) = 0

//値
g_player(HP) = g_player(HP0) + g_player(HPP)
g_player(SSTR) = g_player(STR0) + g_player(STRP)
g_player(MSTR) = g_player(MSTR0) + g_player(MSTRP)
g_player(DEF) = g_player(DEF0) + g_player(DEFP)
g_player(MDEF) = g_player(MDEF0) + g_player(MDEFP)

return

//敵初期化///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*FuncInitEnemy
return

//タイトル///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*FuncTitle
pos 0, 0 : celput hPLAYER_BODY(1)
pos 0, 0 : print "Title"
pos 0, 20 : gmode 2 : celput hPLAYER_FACE(1)
return

//戦闘///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*FuncBattle
pos 0, 0 : celput hPLAYER_BODY(1)
pos 0, 0 : print "Battle"
pos 0, 20 : gmode 2 : celput hPLAYER_FACE(1)
return

//エンディング///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*FuncEnding
pos 0, 0 : celput hPLAYER_BODY(1)
pos 0, 0 : print "Ending"
pos 0, 20 : gmode 2 : celput hPLAYER_FACE(1)
return

//ゲームオーバー/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
*FuncGameOver
pos 0, 0 : celput hPLAYER_BODY(1)
pos 0, 0 : print "GameOver"
pos 0, 20 : gmode 2 : celput hPLAYER_FACE(1)
return

/*メインループ**************************************************************************************************************************************/
/***************************************************************************************************************************************************/
*GameMainLoop

//繰り返し
while

redraw 0 //描画モード0

//分岐
switch g_scene
case BATTLE //戦闘
gosub *FuncBattle
swbreak
case TTITLE //タイトル
gosub *FuncTitle
swbreak
case ENDING //エンディング
gosub *FuncEnding
swbreak
case GAME_OVER //ゲームオーバー
gosub *FuncGameOver
swbreak
case END_GAME //ゲーム終了
end
swbreak
default //例外処理
pos 0, 0 : print "例外処理です"
swbreak
swend

redraw 1 //描画モード1

await 16 //一定時間待つ

wend
return
/***************************************************************************************************************************************************/
/***************************************************************************************************************************************************/
stop

//初期化/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
title "計算KING" //タイトル
gosub *FuncLoadGraph //グラフィックロード
gosub *FuncInitPlayer //プレイヤー初期化
gosub *FuncInitEnemy //敵初期化

//メインループ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
gosub *GameMainLoop //メインループ



ぺーぺー

リンク

2016/7/13(Wed) 00:14:12|NO.76171

質問には関係ないですが、スクリプトは説明4に書いてあるタグで挟んだほうがいいですよ



motchy

リンク

2016/7/13(Wed) 00:57:59|NO.76172

>HSP初心者 さん

 HSPの振る舞いが分かっていなくて五里霧中なのでしょう。
HSPにおける「ラベル」はCやFortanにおける「関数,サブルーチン」とはちょっと違います。
HSPはランタイム起動後にコードの1行目から順に実行していきます(若干間違いがあるけど説明において致命的ではないのでこれでいく)。
インタプリタは「ラベル」に出会っても迂回したりせず、そのまま突っ込んで実行していきますから、C言語の要領でサブルーチンを冒頭に置いてしまうとお分かりの通りえらいことになります。

それと、HSPはモジュールを使わない限り全部グローバル空間になってしまいますので、サブルーチン内での変数操作には注意が必要です。
メインルーチンとサブルーチンで役割が違うくせに名前が同じの変数など作ろうものなら、これまたお分かりの通りえらいことになります。



初心者とか言いながら変数名がまともだったりするあたり、それなりのセンスと他言語経験をお持ちのようで。
オッサンとか適応力とかの問題ではなく、単にHSPの、言ってしまえばくだらんルールにハマっているだけです。



HSP初心者

リンク

2016/7/13(Wed) 06:41:29|NO.76173

お返事ありがとうございます。出直してきます。



KA

リンク

2016/7/13(Wed) 07:06:02|NO.76174

書き方がわるかったです。
サブルーチンコール部分では無くて、される部分でした。

>>HSPの文法そのものが参考書を読んでも理解できてない?
参考書でも同様に書いているはずです。
固定観念で「こうじゃろう」と決めつけるとハマりますよ。
そういう部分がいくつかあります。

サンプルやヘルプ、F1での説明にざっと目を通しましょう。



HSP初心者

リンク

2016/7/13(Wed) 22:41:30|NO.76186

試行錯誤の末、何とか解決しました。ありがとうございましたm(_ _)m

//プリプロセッサ命令///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //実行ファイル #packopt name "CalculateKING" //グラフィック #pack "./image/player/fighter.bmp" #pack "./image/player/fighter00.bmp" #pack "./image/player/fighter01.bmp" #pack "./image/player/fighter02.bmp" #pack "./image/player/fighter03.bmp" #pack "./image/player/fighter04.bmp" #pack "./image/player/fighter05.bmp" #pack "./image/player/fighter06.bmp" #pack "./image/player/fighter07.bmp" #pack "./image/enemy/enemy00.bmp" #pack "./image/enemy/enemy01.bmp" #pack "./image/enemy/enemy02.bmp" #pack "./image/enemy/enemy03.bmp" #pack "./image/enemy/enemy04.bmp"/* #pack "./image/enemy/enemy05.bmp" #pack "./image/enemy/enemy06.bmp" #pack "./image/enemy/enemy07.bmp" #pack "./image/enemy/enemy08.bmp" #pack "./image/enemy/enemy09.bmp" #pack "./image/enemy/enemy10.bmp" #pack "./image/enemy/enemy11.bmp" #pack "./image/enemy/enemy12.bmp" #pack "./image/enemy/enemy13.bmp" #pack "./image/enemy/enemy14.bmp" #pack "./image/enemy/enemy15.bmp" #pack "./image/enemy/enemy16.bmp" #pack "./image/enemy/enemy17.bmp" #pack "./image/enemy/enemy18.bmp" #pack "./image/enemy/enemy19.bmp" #pack "./image/enemy/enemy20.bmp" #pack "./image/enemy/enemy21.bmp" #pack "./image/enemy/enemy22.bmp" #pack "./image/enemy/enemy23.bmp" #pack "./image/enemy/enemy24.bmp"*/ //シーン #enum TTITLE = 0 //タイトル画面 #enum BATTLE //戦闘 #enum ENDING //エンディング #enum GAME_OVER //ゲームオーバー #enum END_GAME //ゲーム終了 //パラメータ #enum SEED = 0 //シード #enum MAX_HP //最大HP #enum HP //HP #enum HP0 //基本HP #enum HPP //HP補正 #enum SSTR //攻撃力 #enum STR0 //基本攻撃力 #enum STRP //攻撃力補正 #enum MSTR //"カウンター攻撃力" 及び "敵魔法攻撃力" #enum MSTR0 //"基本カウンター攻撃力" 及び "敵基本カウンター攻撃力" #enum MSTRP //"カウンター攻撃力補正" 及び "敵魔法攻撃力補正" #enum DEF //防御力 #enum DEF0 //基本防御力 #enum DEFP //防御力補正 #enum MDEF //魔法防御力 #enum MDEF0 //基本魔法防御力 #enum MDEFP //魔法防御力補正 //大域変数/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //シーン g_scene = TTITLE //最初はタイトル画面 //プレイヤーパラメータ dim g_player, 17 //敵パラメータ dim g_enemy, g_max_emnemy, 17 //初期化///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// title "計算KING" //タイトル gosub *FuncLoadGraph //グラフィックロード gosub *FuncInitPlayer //プレイヤー初期化 gosub *FuncInitEnemy //敵初期化 /*メインループ**************************************************************************************************************************************/ /***************************************************************************************************************************************************/ *GameMainLoop redraw 0 //描画モード0 //分岐 switch g_scene case BATTLE //戦闘 gosub *FuncBattle swbreak case TTITLE //タイトル gosub *FuncTitle swbreak case ENDING //エンディング gosub *FuncEnding swbreak case GAME_OVER //ゲームオーバー gosub *FuncGameOver swbreak case END_GAME //ゲーム終了 end swbreak default //例外処理 pos 0, 0 : print "例外処理です" swbreak swend redraw 1 //描画モード1 await 16 //一定時間待つ goto *GameMainLoop /***************************************************************************************************************************************************/ /***************************************************************************************************************************************************/ //グラフィックロード///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncLoadGraph celload "./graph/player/fighter.bmp", 1 : celdiv 1, 32, 48 celload "./graph/player/fighter00.bmp", 2 : celdiv 2, 144, 96 celload "./graph/player/fighter01.bmp", 3 : celdiv 3, 144, 96 celload "./graph/player/fighter02.bmp", 4 : celdiv 4, 144, 96 celload "./graph/player/fighter03.bmp", 5 : celdiv 5, 144, 96 celload "./graph/player/fighter04.bmp", 6 : celdiv 6, 144, 96 celload "./graph/player/fighter05.bmp", 7 : celdiv 7, 144, 96 celload "./graph/player/fighter06.bmp", 8 : celdiv 8, 144, 96 celload "./graph/player/fighter07.bmp", 9 : celdiv 9, 144, 96 dim hFIGHTER, 9 //グラフィックハンドル repeat 9, 0 : hFIGHTER(cnt) = cnt + 1 :loop celload "./graph/enemy/enemy00.bmp", 10 celload "./graph/enemy/enemy01.bmp", 11 celload "./graph/enemy/enemy02.bmp", 12 celload "./graph/enemy/enemy03.bmp", 13 celload "./graph/enemy/enemy04.bmp", 14 /* celload "./graph/enemy/enemy05.bmp", 15 celload "./graph/enemy/enemy06.bmp", 16 celload "./graph/enemy/enemy07.bmp", 17 celload "./graph/enemy/enemy08.bmp", 18 celload "./graph/enemy/enemy09.bmp", 19 celload "./graph/enemy/enemy10.bmp", 20 celload "./graph/enemy/enemy11.bmp", 21 celload "./graph/enemy/enemy12.bmp", 22 celload "./graph/enemy/enemy13.bmp", 23 celload "./graph/enemy/enemy14.bmp", 24 celload "./graph/enemy/enemy15.bmp", 25 celload "./graph/enemy/enemy16.bmp", 26 celload "./graph/enemy/enemy17.bmp", 27 celload "./graph/enemy/enemy18.bmp", 28 celload "./graph/enemy/enemy19.bmp", 29 celload "./graph/enemy/enemy20.bmp", 30 celload "./graph/enemy/enemy21.bmp", 31 celload "./graph/enemy/enemy22.bmp", 32 celload "./graph/enemy/enemy23.bmp", 33 celload "./graph/enemy/enemy24.bmp", 34*/ dim hENEMY, 5 //グラフィックハンドル repeat 5, 0 : hENEMY(cnt) = cnt + 10 :loop return //プレイヤー初期化/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncInitPlayer //基本 g_player(SEED) = 100 g_player(MAX_HP) = 20 g_player(HP0) = g_player(MAX_HP) g_player(STR0) = 20 g_player(MSTR0) = 20 g_player(DEF0) = 20 g_player(MDEF0) = 20 //補正 g_player(HPP) = 0 g_player(STRP) = 0 g_player(MSTRP) = 0 g_player(DEFP) = 0 g_player(MDEFP) = 0 //値 g_player(HP) = g_player(HP0) + g_player(HPP) g_player(SSTR) = g_player(STR0) + g_player(STRP) g_player(MSTR) = g_player(MSTR0) + g_player(MSTRP) g_player(DEF) = g_player(DEF0) + g_player(DEFP) g_player(MDEF) = g_player(MDEF0) + g_player(MDEFP) return //敵初期化/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncInitEnemy return //タイトル/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncTitle pos 0, 0 : print "Title" celput hFIGHTER(0), 0 return //戦闘/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncBattle pos 0, 0 : print "Battle" return //エンディング/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncEnding pos 0, 0 : print "Ending" return //ゲームオーバー///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncGameOver pos 0, 0 : print "GameOver" return



暇人

リンク

2016/7/13(Wed) 22:53:10|NO.76187

celloadはバッファIDを-1にした場合statに使用したバッファIDが返る
それと、ラベルには印としての意味しかないので
ラベル以下も普通に実行される
なのでstop以降等通常通らない場所に置く必要がある

修正してみた(実行はしてない)

//プリプロセッサ命令///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //実行ファイル #packopt name "CalculateKING" //グラフィック #pack "./image/player/face0.png" #pack "./image/player/face.png" #pack "./image/player/body0.png" #pack "./image/player/body.png" #pack "./image/player/0hp.png" #pack "./image/player/1str.png" #pack "./image/player/2mstr.png" #pack "./image/player/3def.png" #pack "./image/player/4mdef.png" #pack "./image/enemy/enemy0.png" #pack "./image/enemy/enemy1.png" #pack "./image/enemy/enemy2.png" #pack "./image/enemy/enemy3.png" #pack "./image/enemy/enemy4.png" //シーン #enum TTITLE = 0 //タイトル画面 #enum BATTLE //戦闘 #enum ENDING //エンディング #enum GAME_OVER //ゲームオーバー #enum END_GAME //ゲーム終了 //パラメータ #enum SEED = 0 //シード #enum MAX_HP //最大HP #enum HP //HP #enum HP0 //基本HP #enum HPP //HP補正 #enum SSTR //攻撃力 #enum STR0 //基本攻撃力 #enum STRP //攻撃力補正 #enum MSTR //"カウンター攻撃力" 及び "敵魔法攻撃力" #enum MSTR0 //"基本カウンター攻撃力" 及び "敵基本カウンター攻撃力" #enum MSTRP //"カウンター攻撃力補正" 及び "敵魔法攻撃力補正" #enum DEF //防御力 #enum DEF0 //基本防御力 #enum DEFP //防御力補正 #enum MDEF //魔法防御力 #enum MDEF0 //基本魔法防御力 #enum MDEFP //魔法防御力補正 //大域変数/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //グラフィックハンドル dim hPLAYER_FACE, 2 //顔 dim hPLAYER_BODY, 2 //身体 dim hCHARA_MAKING, 5 //キャラクタメイキング g_max_emnemy = 5 //敵の数最大値 dim hENEMY, g_max_emnemy //敵グラフィック //シーン g_scene = TTITLE //最初はタイトル画面 //プレイヤーパラメータ dim g_player, 17 //敵パラメータ dim g_enemy, g_max_emnemy, 17 //初期化///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// title "計算KING" //タイトル gosub *FuncLoadGraph //グラフィックロード gosub *FuncInitPlayer //プレイヤー初期化 gosub *FuncInitEnemy //敵初期化 //メインループ/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// gosub *GameMainLoop //メインループ stop //グラフィックロード///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncLoadGraph celload "./image/player/face0.png" ,-1 : hPLAYER_FACE(0)=stat celload "./image/player/face.png" ,-1 : hPLAYER_FACE(1)=stat celload "./image/player/body0.png" ,-1 : hPLAYER_BODY(0)=stat celload "./image/player/body.png" ,-1 : hPLAYER_BODY(1)=stat celload "./image/player/0hp.png" ,-1 : hCHARA_MAKING(0)=stat celload "./image/player/1str.png" ,-1 : hCHARA_MAKING(1)=stat celload "./image/player/2mstr.png" ,-1 : hCHARA_MAKING(2)=stat celload "./image/player/3def.png" ,-1 : hCHARA_MAKING(3)=stat celload "./image/player/4mdef.png" ,-1 : hCHARA_MAKING(4)=stat l_str = "./image/enemy/enemyx.png" repeat g_max_enemy, 0 : l_str = strf("./image/enemy/enemy%d.png", cnt): celload l_str,-1 : hENEMY(cnt)=stat : loop return //プレイヤー初期化/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncInitPlayer //基本 g_player(SEED) = 100 g_player(MAX_HP) = 20 g_player(HP0) = g_player(MAX_HP) g_player(STR0) = 20 g_player(MSTR0) = 20 g_player(DEF0) = 20 g_player(MDEF0) = 20 //補正 g_player(HPP) = 0 g_player(STRP) = 0 g_player(MSTRP) = 0 g_player(DEFP) = 0 g_player(MDEFP) = 0 //値 g_player(HP) = g_player(HP0) + g_player(HPP) g_player(SSTR) = g_player(STR0) + g_player(STRP) g_player(MSTR) = g_player(MSTR0) + g_player(MSTRP) g_player(DEF) = g_player(DEF0) + g_player(DEFP) g_player(MDEF) = g_player(MDEF0) + g_player(MDEFP) return //敵初期化/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncInitEnemy return //タイトル/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncTitle pos 0, 0 : celput hPLAYER_BODY(1) pos 0, 0 : print "Title" pos 0, 20 : gmode 2 : celput hPLAYER_FACE(1) return //戦闘/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncBattle pos 0, 0 : celput hPLAYER_BODY(1) pos 0, 0 : print "Battle" pos 0, 20 : gmode 2 : celput hPLAYER_FACE(1) return //エンディング/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncEnding pos 0, 0 : celput hPLAYER_BODY(1) pos 0, 0 : print "Ending" pos 0, 20 : gmode 2 : celput hPLAYER_FACE(1) return //ゲームオーバー///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// *FuncGameOver pos 0, 0 : celput hPLAYER_BODY(1) pos 0, 0 : print "GameOver" pos 0, 20 : gmode 2 : celput hPLAYER_FACE(1) return /*メインループ**************************************************************************************************************************************/ /***************************************************************************************************************************************************/ *GameMainLoop //繰り返し while redraw 0 //描画モード0 //分岐 switch g_scene case BATTLE //戦闘 gosub *FuncBattle swbreak case TTITLE //タイトル gosub *FuncTitle swbreak case ENDING //エンディング gosub *FuncEnding swbreak case GAME_OVER //ゲームオーバー gosub *FuncGameOver swbreak case END_GAME //ゲーム終了 end swbreak default //例外処理 pos 0, 0 : print "例外処理です" swbreak swend redraw 1 //描画モード1 await 16 //一定時間待つ wend return



暇人

リンク

2016/7/13(Wed) 22:54:29|NO.76188

あら
書き込んでる間に・・・



HSP初心者

リンク

2016/7/14(Thu) 08:00:52|NO.76192

おお!ありがとうございます!助かります!



ONION software Copyright 1997-2021(c) All rights reserved.