お世話になっています。
今回、シューティングゲーム等で使用されているような、
得点の変化の激しいゲームの得点処理について疑問がわきました。
少し遊びで作ったのですが、
上から弾が降ってきてそれを避ける(弾がウインドウの外に出る)と1点が加算される、といったゲームで点数を表示したいと思い、
変数をLong型で定義し、弾がウインドウの外に出たら、+1をします。
また、画像描写の処理の部分にTextOut関数でStr$(点数の変数)としてやってみました。
これはマルチスレッドで、スリープは30ミリ秒です。
こうすると、画面がかくかく(処理落ち?)し、ゲームを普通にに進められません。
みなさんは、これをどのように処理しているのでしょうか。
文字列と数列両方扱える変数があったりするのでしょうか。
すいませんがご教示ください。よろしくお願いします。
ゲームの得点などの表示の処理
回答ありがとうございます
回答ありがとうございます。
そんな変数の型があるのですか。
それは知りませんでした。
しかし、「どんな型でも扱える」ってのが本当にあるとは・・・
そんな変数の型は怖くて使いたくないですね^^;
というものにするのに、Str$関数を使わないとなると・・・
と考えていましたが、char型は頭になかったです。(そもそも使った事がない)
Str$関数は動作が重くなるようなので、こういった処理落ちがおこると考えています。
それを回避しようとしているのですが、どのように回避したらいいのか・・・
で、char型はどう扱えばいいのでしょう?
Cのサイトをちらりとみるとどうも文字列を扱う型のようです。(数字も扱えるかもしれませんが)
これはByteの配列変数と同じものなのでしょうか?
ぬ?文字列と数列両方扱える変数とは、VB6.0にあるあらゆる属性を扱えるVariant型変数のことでしょうか?
そんな変数の型があるのですか。
それは知りませんでした。
しかし、「どんな型でも扱える」ってのが本当にあるとは・・・
そんな変数の型は怖くて使いたくないですね^^;
数字→文字列手間がかかりますがString型/Byte型/Char型変数を駆使することにより実現する方法しかないような気がします。
というものにするのに、Str$関数を使わないとなると・・・
と考えていましたが、char型は頭になかったです。(そもそも使った事がない)
Str$関数は動作が重くなるようなので、こういった処理落ちがおこると考えています。
それを回避しようとしているのですが、どのように回避したらいいのか・・・
で、char型はどう扱えばいいのでしょう?
Cのサイトをちらりとみるとどうも文字列を扱う型のようです。(数字も扱えるかもしれませんが)
これはByteの配列変数と同じものなのでしょうか?
Takoさんがおっしゃるとおり
Takoさんがおっしゃるとおり、
wsprintf/sprintfを利用すればよいと思います。
wsprintfはAB4/AB5ともに使用可能です。
sprintfはAB4のINCLUDE内にのsprintf関数定義がないのでそのままでは使用できませんが。
AB4の場合は以下の様にソースコードを追加してください。
Declare Function sprintf CDecl Lib "msvcrt" (buffer As LPSTR, format As LPSTR, ...) As Long
よろしくお願いします。
wsprintf/sprintfを利用すればよいと思います。
wsprintfはAB4/AB5ともに使用可能です。
sprintfはAB4のINCLUDE内にのsprintf関数定義がないのでそのままでは使用できませんが。
AB4の場合は以下の様にソースコードを追加してください。
Declare Function sprintf CDecl Lib "msvcrt" (buffer As LPSTR, format As LPSTR, ...) As Long
よろしくお願いします。
最後に編集したユーザー たかせ [ 2011年11月26日(土) 23:47 ], 累計 2 回
回答ありがとうございます
たかせ様、Tako様、回答ありがとうございます。
それでやってみようと思います。
ありがとうございました!!
printfを使用したらどうでしょう?
printf関数というものをすっかり忘れていました。wsprintf/sprintfを利用すればよいと思います。
wsprintfはAB4/AB5ともに使用可能です。
sprintfはAB4のINCLUDE内にのsprintf関数定義がないのでそのままでは使用できませんが。
それでやってみようと思います。
ありがとうございました!!