ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 04:23

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2011年7月05日(火) 14:39 
オフライン

登録日時: 2009年3月29日(日) 15:45
記事: 106
お世話になっています。
今回、シューティングゲーム等で使用されているような、
得点の変化の激しいゲームの得点処理について疑問がわきました。

少し遊びで作ったのですが、
上から弾が降ってきてそれを避ける(弾がウインドウの外に出る)と1点が加算される、といったゲームで点数を表示したいと思い、
変数をLong型で定義し、弾がウインドウの外に出たら、+1をします。

また、画像描写の処理の部分にTextOut関数でStr$(点数の変数)としてやってみました。
これはマルチスレッドで、スリープは30ミリ秒です。

こうすると、画面がかくかく(処理落ち?)し、ゲームを普通にに進められません。

みなさんは、これをどのように処理しているのでしょうか。
文字列と数列両方扱える変数があったりするのでしょうか。

すいませんがご教示ください。よろしくお願いします。

_________________
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2011年7月05日(火) 21:54 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
>文字列と数列両方扱える変数があったりするのでしょうか。

文字列と数列両方扱える変数とは、VB6.0にあるあらゆる属性を扱えるVariant型変数のことでしょうか?
もしそうであれば、現在のABにVariant型変数はサポートされていません。
なので手間がかかりますがString型/Byte型/Char型変数を駆使することにより実現する方法しかないような気がします。
いかがでしょうか?
もし見当違いだったらゴメンナサイ。
よろしくお願いします。


通報する
ページトップ
投稿記事Posted: 2011年7月06日(水) 11:57 
オフライン

登録日時: 2009年3月29日(日) 15:45
記事: 106
回答ありがとうございます。
引用:
文字列と数列両方扱える変数とは、VB6.0にあるあらゆる属性を扱えるVariant型変数のことでしょうか?
ぬ?
そんな変数の型があるのですか。
それは知りませんでした。

しかし、「どんな型でも扱える」ってのが本当にあるとは・・・
そんな変数の型は怖くて使いたくないですね^^;

引用:
手間がかかりますがString型/Byte型/Char型変数を駆使することにより実現する方法しかないような気がします。
数字→文字列
というものにするのに、Str$関数を使わないとなると・・・
と考えていましたが、char型は頭になかったです。(そもそも使った事がない)

Str$関数は動作が重くなるようなので、こういった処理落ちがおこると考えています。
それを回避しようとしているのですが、どのように回避したらいいのか・・・

で、char型はどう扱えばいいのでしょう?
Cのサイトをちらりとみるとどうも文字列を扱う型のようです。(数字も扱えるかもしれませんが)
これはByteの配列変数と同じものなのでしょうか?

_________________
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2011年7月06日(水) 14:07 
途中にすみません。
見当違いかもしれませんが、

>数字→文字列
>というものにするのに、Str$関数を使わないとなると・・・

printfを使用したらどうでしょう?

AB5であれば、
コード:
Dim aaa As Long
Dim bbb(10) As SByte
aaa = 1234567890
sprintf(bbb,"%010d",aaa)
AB4ならば、WSPrintfになります。


通報する
ページトップ
   
投稿記事Posted: 2011年7月06日(水) 14:30 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
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

よろしくお願いします。


最後に編集したユーザー たかせ [ 2011年11月26日(土) 23:47 ], 累計 2 回

通報する
ページトップ
投稿記事Posted: 2011年7月08日(金) 11:38 
オフライン

登録日時: 2009年3月29日(日) 15:45
記事: 106
たかせ様、Tako様、回答ありがとうございます。
引用:
printfを使用したらどうでしょう?
引用:
wsprintf/sprintfを利用すればよいと思います。
wsprintfはAB4/AB5ともに使用可能です。
sprintfはAB4のINCLUDE内にのsprintf関数定義がないのでそのままでは使用できませんが。
printf関数というものをすっかり忘れていました。
それでやってみようと思います。
ありがとうございました!!

_________________
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Ahrefs [Bot], Bing [Bot], Google [Bot] & ゲスト[20人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean