2006年03月11日

画像埋め込み実行ファイルが作れない時

実行ファイルを作るときに画像を埋め込める。
手順どおりにやってみましたが、出来上がった実行ファイルを他の場所に移して実行すると

内部エラー(13)(画像がありません)

がでてしまう。
いろいろ調べても試してもできません。壁にぶち当たりました。

悩んでわかったことは、おそらく画像ファイル名をつける際に、隠れた?制約があることです。
画像ファイル名は半角11文字以内に収めないとダメみたいです。


それを踏まえた上で、以下に画像を含めた実行ファイルの作りかたを書きます。

1.start.axを作成する。
2.packfile編集
3.start.axを追加、あとは必要な画像ファイルを追加
4.exeファイルを作る。

以上でOKです。

HSP3には実行ファイル自動生成があります。
これは自動に実行ファイルを生成してくれますが、画像ファイルなどは含めてくれません。
なので、自分で作ったプログラムの一番先頭に

#pack"ファイル名.bmp"
と書かなくちゃいけません。ファイル名は11文字以下です。

そして、実行ファイル自動生成を行うと実行ファイルが出来上がるので
これで正常に動くはずです。


線引いてある上記のやり方だとめんどくさいこと限りないので上に書いた方法のほうが楽です。
posted by BS びーえす | ☁ | Comment(0) | TrackBack(0) | 一歩進んだHSPのお話 | このブログの読者になる | 更新情報をチェックする

2006年03月10日

ゲームで残り時間 制限時間を作る場合HSPではどうするか?

HSPでタイピングソフトなどゲームを作るときにぶち当たる壁だと思います。(ここ数日自分がぶち当たってました)
gettimeという命令は確かにHSPにはありますが、これをどうやったらゲーム中の残り時間をカウントできるんだろう?

現時点でわかっている答えは時間と分を秒にしてあげることです。


;------------------------------------
;基本部分
t1_h =gettime(4);現在の時間を取得
t1_m =gettime(5);現在の分を取得
t1_s =gettime(6);現在の秒を取得

;時間と分を、秒に変換して秒と足す
t1 = (t1_h*3600) + (t1_m*60) + t1_s

mes t1

;------------------------------------
;ここから先はHSPの処理が終了するまでの時間をはかります。

;試しに1秒経過させてみます
wait 100

*owari
t2_h=gettime(4)
t2_m=gettime(5)
t2_s=gettime(6) ;// 変更
t2 = (t2_h*3600) + (t2_m*60 ) + t2_s
t3 = t2 - t1;// 変更
dialog "所要時間"+t3+"秒"

mes t2
mes t3
stop


以上です。

WindowsAPI等ですと、パソコンを起動してからの時間を取得できるのでそこから計算すればいいのですが、HSPの標準命令だとそういったものは見当たりませんので、上記のようになります。
HSPのdirectXを使えるやつだと起動してからの時刻を取得する命令があるみたいですけど・・・。
まだまだ勉強不足ですね。あせあせ(飛び散る汗)
posted by BS びーえす | ☁ | Comment(0) | TrackBack(0) | 一歩進んだHSPのお話 | このブログの読者になる | 更新情報をチェックする

2006年02月11日

モジュールのお話(HSPで自作関数作成)

HSPではモジュールが自分で作成できます。

モジュールが作成できると、
・処理の効率化
・作業の分散化
ができます。

モジュールはある決まった処理を返す部品です。
例えば足し算の結果を教えてくれるモジュールとか引き算の結果を教えてくれるモジュールとかです。
これができると、何人かで共同作業ができます。

例えば、
「お前は当たり判定の結果を返すモジュールを作ってくれ。俺はキャラ画像を決まった方向に動かしてくれるモジュールを作る」
みたいな感じでしょうか。

ちょっとわかりにくいかもしれませんが絵で書いてみます。

モジュール.jpg

メインプログラムから必要に応じてモジュールを呼び出すわけです。

では実際HSPでのモジュールの作り方なんですが
基本の書き方はこうです。

#module "モジュール名"
;ここに動作(自作関数)を書きます。
#global


例として二つの数字を受け取って足してくれる関数を作ります。

ファイル名sum.hsp
#module "足し算"
#defcfunc tasu int a,int b ;自作関数の宣言です。C言語風だとtasu(int a,int b)
return a+b
#global


メインプログラムから呼び出します。
ファイル名main.hsp

;モジュールを読み込みます。
#include "sum.hsp"
;モジュールの自作関数を呼び出します
mes tasu(2,3)
;こういう風にも使えます。
c=tasu(2,3)
mes c


以上です。
module.zip
posted by BS びーえす | ☀ | Comment(0) | TrackBack(0) | 一歩進んだHSPのお話 | このブログの読者になる | 更新情報をチェックする