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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0403
mirage17hgimg3のプログラミング9解決


mirage17

リンク

2011/4/3(Sun) 21:35:57|NO.38083

HSP3でつくる3Dゲームの本の中の、自称忍者おじん 対 炎の岩石巨人
のサンプルのメイン(*main)の中に、下記のプログラムを書いて、
2面を作ろうとしたのですが、2面にきりかわった所で、スペースキーを
押すか、↑↓←→キーを押すと、hsp3hg.exeは動作を停止しました。
と表示され、終了してしまいます。1面は、カーソルキーやスペースキーも、
受け付けるのですが、2面からは、きりかわったところで、上記のキーを押すと
終了してしまいます。2面のグラフィックや音楽をかえて、ゲームを継続するには、
どういったプログラムを組めばよいのか、教えてください。

if (sc>=3600)&&(sw1==1){
; 地面モデル作成
;

hgreset
setfont 16,16,16,1 ; フォントサイズ設定
texload "data\\font.bmp" ; フォント登録
addxfile mi,"data\\ufokamae.x" ; 自キャラモデル作成(モーション付き)
addxanim mi,"data\\uforun.x" ; 走るモーションを追加
addxanim mi,"data\\ufodown.x" ; やられモーションを追加
dsloadfname "data\\shot.wav" ; 弾の発射音
dsloadfname "data\\burst.wav",1 ; 弾の炸裂音
dsloadfname "data\\explos.wav",2 ; 爆発音
dsloadfname "data\\down.wav",3 ; 自キャラやられ声

addxfile emi,"data\\kuman12s.x" ; 敵キャラモデル作成(モーション付き)

p1=OBJ_MOVE|OBJ_BORDER ; p1 ← オブジェクト属性値1
p2=p1|OBJ_FLIP ; p2 ← オブジェクト属性値2
p3=p1|OBJ_XFRONT
regobj oi,mi,p2 ; 自キャラオブジェクト作成
setcoli oi,1,8 ; コリジョン設定

texload "data\\ground2s.bmp" ; テクスチャ画像の読込
addmesh mdgr,32,32,0,1024,1024,stat ; プレート(MESH型)モデル登録

; 樹木モデル作成
;
texload "data\\tree2s.bmp" ; テクスチャ画像の読込
addplate mdtr,1,24,24,0,0,255,255,stat ; プレートモデル登録

texload "data\\sky2s.bmp" ; 背景画像を読込み
clstex stat

; 樹木を地面に配置する
;
regobj obgr,mdgr ; 地面オブジェクト作成
randomize
repeat 40
regobj obtr,mdtr,OBJ_TREE ; 樹木オブジェクト作成
x=rnd(32) :z=rnd(32) ; 座標値を乱数で決める
selpos obtr ; 座標セット
objset3 (x-16)*32+16,-12,(z-16)*32+16
loop

; 弾1モデル作成
;
texload "data\\shot1.bmp" ; テクスチャ画像の読込
addplate mdsh1,1,3,2,0,0,127,95,stat ; プレートモデル登録

; 弾2モデル作成
;
texload "data\\shot2.bmp" ; テクスチャ画像の読込
addplate mdsh2,1,8,8,0,0,79,79,stat ; プレートモデル登録

;
; 火花モデル作成
;
texload "data\\burst.bmp" ; 火花テクスチャ読込
addplate mdez,1,16,16,0,0,95,95,stat ; プレートモデル作成
;
newevent ev_brst ; 火花アニメ設定
repeat 8
event_uv ev_brst,0,96*cnt
event_wait ev_brst,2
loop
event_prmset ev_brst,PRMSET_FLAG,0 ; 自分を消去

; 爆発モデル作成
;
texload "data\\explos.bmp" ; 爆発テクスチャ読込
addplate mdex,1,80,80,0,0,79,79,stat ; プレートモデル作成
;
newevent ev_expl ; 爆発アニメ設定
repeat 12
event_uv ev_expl,0,80*cnt
event_wait ev_expl,4
loop
event_prmset ev_expl,PRMSET_FLAG,0 ; 自分を消去


; 敵を配置する
;
emx=12
dim eoi,emx :dim ehp,emx
dim erg,emx
repeat emx :c=cnt
regobj eoi(c),emi,p2 ; 敵オブジェクト作成
setcoli eoi(c),4,2 ; コリジョン設定
setscale eoi(c),2,2,2 ; スケールを2倍に
x=rnd(32) :z=rnd(32) ; 座標値を乱数で決める
setpos eoi(c),(x-16)*32+16,0,(z-16)*32+16 ; 座標セット
ehp(c)=100 ; 敵の耐久力
erg(c)=rnd(256) ; 敵の移動方向
loop

setborder 1024.0,80.0,1024.0 ; オブジェクト有効空間の設定
; カメラ設定
;


cammode CAM_MODE_LOOKAT ; カメラ注視モード


mci "stop data\\stage1.mid";音楽停止
mci "play data\\stage2.mid";音楽演奏


sw1=2

}



この記事に返信する


ひらまる

リンク

2011/4/3(Sun) 21:44:45|NO.38084

HSP3でつくる3Dゲームの本は持っておらず、スクリプトも読んでいませんが、
上下左右またはスーペースキーを押すとエラーが出るということは、
キーを押したことが原因ではなく、キーを押した先の処理が原因である可能性が高いです。
『hsp3hg.exeは動作を停止しました』のエラーの場合は、エラー行が表示されないと思うので、
ここかな?と思う場所にstop命令を入れ、
エラーが出るかエラーが出ずに動作が止まるかを見て、
どの行でエラーが起きているか突き止めます。
エラーが出ている行になにが書いてあるかわかれば、自己解決できるかもしれませんし、
より詳しい質問ができるかもしれません。
エラー行の特定を試してみてください。



mirage17

リンク

2011/4/3(Sun) 22:16:06|NO.38085

>ひらまるさん
STOP試してみました。まだ、少しだけしか試していませんが、
上記のソースの最後の方に、STOPをいれましたが、1面を表示
したまま、エラーなしで、止まりました。私には、上下左右移動など
の処理に問題があるか、私の上記のプログラム自体に問題があるか、
どちらかの気がしています。しかし、現在の私には、そのどちらで、
プログラムが途中終了するのかわかりません。hgreset命令で、
2面に書き換えている時に、なにか起きているのかもしれません。
詳しい方、さらなる情報お願いします。



f(飲酒中)

リンク

2011/4/3(Sun) 22:38:30|NO.38088

stopよりはdialog入れるほうが、動作が止まらなくて確認し易いだろう。



M

リンク

2011/4/3(Sun) 22:49:48|NO.38090

hgresetで初期化しているのが、気になります。
今のプログラムの流れが、

システムを初期化(hgini)

1面用のデータを用意

1面をプレイ

1面クリア

システムを初期化(hgreset)

2面用のデータを用意

2面をプレイ

2面クリア

となっているのなら、

システムを初期化(hgini)

すべてのステージで使うデータを、あらかじめ用意しておく

1面をプレイ

1面クリア

2面をプレイ

2面クリア

としたほうが、安定すると思います。



mirage17

リンク

2011/4/3(Sun) 23:07:10|NO.38092

>f(飲酒中)さん
dialogは便利ですね。しかしエラーの原因わからないです。

>Mさん
プログラムの流れはわかりました。しかし、全ての面の用意の仕方と、
2面の準備のプログラムがわかりません。以外に、HSP初心者なんで。
すべての面の用意の仕方と、1面から2面の流れのソースなどを
示せる方、情報お待ちしております。



f(飲酒中)

リンク

2011/4/3(Sun) 23:35:33|NO.38095

>dialogは便利ですね。しかしエラーの原因わからないです。

「ドコでとまるのか」調べるのに使え。
怪しい所に、1命令に付き1つ、入れろ。
ドコで止まるのかはっきりさせろ。


>2面の準備のプログラムがわかりません。

単純に、君には荷が重い様だ。
背伸びせず、今現在のプログラムが何をやってるのか正しく解釈するべき。

それが理解できれば自分で作れる。

背伸び自体は悪くは無かろうが、その先で結局「誰か答えをくれ」では何の意味も無い。
基礎をちゃんとやっとけ。



f3d

リンク

2011/4/3(Sun) 23:37:26|NO.38096

それかhgresetしたあとに一面のリソースにアクセスしたりしてませんか?



mirage17

リンク

2011/4/4(Mon) 00:20:39|NO.38101

>f(飲酒中)さん
もっと、今のプログラムを詳しく勉強する必要がありそうですね。荷が重いかもしれません。
このプログラムで、悩んで、時をかさねている状態ですので。

>f3dさん
一面のリソースは、*mainの外で、呼び出して、*mainの中では、移動処理
とか、全面共通のプログラムになっていて、2面になったら、2面の処理を読み込んで、
*mainに戻るようにしているのですが・・・一面のリソースのアクセス、どうで
しょうかね?hgresetで、きれいさっぱりするので、もう一度、読み直してるかもしれ
ませんね。hgresetをかけないと、動くのですが、おかしな画面になります。



mirage17

リンク

2011/4/4(Mon) 12:10:40|NO.38116

思ったよりも、難題だったようですね。まあ、こつこつやっていこうと思います。
プログラムの方は、まだ、うまくいってはいませんが、この辺で、解決としておきます。
hgresetは、過去に作ったゲームでは、有効な処理でしたが、今回は、一筋縄では、いかない
ようですね。この問題は、ここで解決としますが、なにか、いいアイデアや、こうすれば処理
できるといった、アイデアをお持ちの方は、続きに書き込んでください。多くのアドバイス
をいただき、ありがとうございました。



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