[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/15 22:43 / Filesize : 234 KB / Number-of Response : 934
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

DXライブラリ 総合スレッド その3



1 名前:名前は開発中のものです。 [2009/03/31(火) 01:14:36 ID:IgyJcgap]
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。

DXライブラリの詳細ついては
homepage2.nifty.com/natupaji/DxLib/
を参照して頂きたい。

DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

過去スレ:DXライブラリ 総合スレッド
      pc11.2ch.net/test/read.cgi/gamedev/1197468399/
     DXライブラリ 総合スレッド 2008
      pc11.2ch.net/test/read.cgi/gamedev/1224923873/

215 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 18:54:17 ID:rCuDH3cs]
あるよ。
俺使ってるから間違いない。

216 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 19:18:26 ID:hIOF9W71]
いや頭は正常だけど終わりの部分と頭の間に微妙な空白期間があるんだけど。

217 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 20:22:30 ID:rCuDH3cs]
それはMP3自体にはまったく空白が無い状態で?

てか空白が頭なのか終わりなのか区別つくのか?

俺はoggでやってるけどそんな現象は出ていない。
oggでなくてmp3だから空白が出てるってのも考えにくいし……。


たとえば、


// 音声をループ再生する
PlaySoundMem( SoundHandle, DX_PLAYTYPE_LOOP ) ;

// キーの入力待ち
WaitKey() ;


こんな感じで音楽鳴らしてWaitKeyで待たせてるだけの状態でも空白は出る?

218 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 21:46:31 ID:a1w4zsI+]
空白をカットすれば

219 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 21:59:26 ID:CorOGe62]
MP3とかoggを直接編集できるフリーソフトとかあるから
それでまず音楽データ自体に空白が入ってないか確認するのが先かな。
(俺は古いけどspwaveっての使ってる)

220 名前:名前は開発中のものです。 mailto:sage [2009/05/10(日) 23:33:01 ID:UtduPSoD]
ゲーム開発って、ファイル分割がキチンと綺麗に出来るかどうかで難易度グッと変わるよね?

いまいちヘッダーファイルに何書けば良いのか分からん。
ヘッダーファイルに書くのって基本的に
構造体、グローバル変数、クラス

で良いんだよな?

でもグローバル変数はそのまま書くより、メインの実行処理を書いたソースでグローバル宣言して、externしたのをヘッダーに書いた方が良いのか?

中々難しい

221 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 00:02:53 ID:MkdOym7I]
ヘタレプログラマな俺は何も考えずにやってる。
必要性を感じたらやればいいなと。

222 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 00:25:28 ID:HAsszTiW]
再利用性ってのがあるだろ
他のプロジェクトで同じヘッダーを使いたいって時があるはず
stdlib.hやwindows.hなどは、頻繁に共有して使う定義をまとめてあるわけだな

ゲーム開発では、バージョンアップや拡張版を作る時に意識する
そういうのが前提になくて、ただ使い捨てのマイナープログラムを作りたいだけなら
ヘッダーに書こうがソースに書こうが大した違いにはならん

集団開発ではこういう実動的な概念を知ってないと、プロジェクトに致命的な遅れを引き起こす原因になる
読めないソース、意味のわからない変数名、再利用性の全くないヘッダー
そういうのを書く奴はとても多い
同僚から「早くクビになれ」と睨まれてるのに、大抵は自覚がない


223 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 00:37:43 ID:h5MMChCx]
mp3の仕様上、変換した時点で前後に無音部分が入るのは避けられないんじゃなかったか?
無音部分のないoggを作れば大丈夫だと思う



224 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 01:25:34 ID:SJM28vd6]
wavの状態で編集→mp3にエンコ
これでmp3にした場合だけループに空白が出来る。
でも編集ソフトでmp3ファイルを見てみても無音が入っていないので
ファイル自体じゃなくてループ再生時に無音が入っちゃってると予想してる。
>>223のような情報もあるのでwavからoggでやってみようと思います。
むしろmp3でちゃんとループしてる人がいるなら是非そのファイルをくれませんか?

225 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 01:55:23 ID:vfkeltZY]
まー、mp3使う理由なんてないだろ

226 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 10:32:30 ID:Y/ATwNUT]
>>220
グローバル変数を何の工夫もなくヘッダに書くのはありえない。
でも、1つのソースファイルからしかincludeしないなら
ヘッダの意味もないが、トラブルも出ないし好きにしたらいい。

227 名前:名前は開発中のものです。 mailto:sage [2009/05/11(月) 23:27:48 ID:+oDxJ+XL]
>ヘッダ
例のセガの人の本によれば
ヘッダファイルは、そのモジュールの顔のようなものなので、
自分からしか参照しないものはヘッダに書くな、だそうな。

228 名前:名前は開発中のものです。 mailto:sage [2009/05/12(火) 20:59:39 ID:TP6i3fOM]
OPムービーをつけたいのですが動画挿入ってできます?

229 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 00:34:03 ID:S36sOxw7]
>>228
リファレンス嫁

230 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 00:45:59 ID:Vux89+qG]
普通にありましたすみません

231 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 02:31:33 ID:SfL0C2tM]
みんなDXライブラリをなんて読んでる?
ディーエックス?デラックス?

232 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 02:39:25 ID:SMqynftr]
ディーエックスかな
てかそもそもデラックスなんて意味込められてたっけか?

233 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 04:37:24 ID:+PRxmC7L]
よし!
今度、自分用のライブラリを作る時は超合金ライブラリという名前にしよう。



234 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 04:45:57 ID:S6Vidvv6]
ぼくはダブルエックス!

235 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 05:27:57 ID:WYplVFDZ]
俺はデラックスって呼んでるな。カービィDX的なノリで

236 名前:名前は開発中のものです。 mailto:sage [2009/05/13(水) 11:01:09 ID:+PRxmC7L]
DXライブラリ…… それは裏切りを意味する言葉。

237 名前:名前は開発中のものです。 [2009/05/14(木) 23:52:26 ID:JXz6JeNm]
wav変換
www.vector.co.jp/soft/dl/win95/art/se202196.html
アドウェア臭いのついてるから本体以外キャンセル(Jwordとかプレーヤーとか)
www.vorbis.com/files/1.0/tobias/OggDS0995.exe
これインスコすればOGGをメディアプレーヤーで直再生できる

238 名前:名前は開発中のものです。 mailto:sage [2009/05/16(土) 18:21:08 ID:RrtE4NOX]
DXライブラリってProcessMessageでメッセージをひとまとめに扱ってますが
このことによって何か出来なくなる(制限される)ことってありますか? ウインドウズプログラム的に。

239 名前:名前は開発中のものです。 mailto:sage [2009/05/20(水) 18:05:19 ID:XKq5DK9V]
画像を多く使う予定なのですが、
DrawRectGraphでその都度座標を指定して描画するのと
LoadDivGraphやDerivationGraphで新しくグラを作成するのってどっちがいいとかありますか?
面倒なのですがDrawRectGraphの方が軽そうな感じがして…

240 名前:名前は開発中のものです。 mailto:sage [2009/05/20(水) 19:14:49 ID:cd8SaRtc]
後者の方が速かった気がする
実際に試してみるのが一番いいと思うけど

241 名前:名前は開発中のものです。 [2009/05/20(水) 22:50:34 ID:XKq5DK9V]
ありがとうございます。両方試して比べてみます。

242 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 01:24:36 ID:nDXZOisY]
結果の報告お待ちしております

243 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 14:53:13 ID:f26CXGR7]
いちいち画像読み込むとハードディスク使うから遅い
メモリに読み込んでハンドル返す方法は高速に描ける
速度を必要とする場面かどうか検討するといい
使い捨ての場面ならメモリに確保しない方が開発の負担が小さいし
何度も使うのならメモリに読み込んだ方が処理の負担が小さい
一般的には後者に統一することが多い

似たような話で、画像にjpgやpngを使ったり、mp3を使うのはCPUに負荷を掛けるので
通常素材にはbmp、効果音にはwavを使うのを勧める
(企業開発で形式を隠蔽したいわけでもないし)




244 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 17:07:42 ID:nDXZOisY]
大した負荷じゃないんじゃない?

245 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 17:31:35 ID:d1JBtW4A]
HDDからいちいち読み込んでるとアホみたいに遅くなるぞ

246 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 19:45:39 ID:uQ1uMZZL]
下三行への突っ込みだと思う

247 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 20:03:43 ID:PVitCZoM]
jpgやpngはロードした時点でbmpに変換されるんじゃなかったっけ。

248 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 23:37:28 ID:SY9MChf5]
pngやらはゲーム処理が遅くなるかもしれんが、
bmpを使うとゲーム容量が馬鹿デカクなる気がする

実際にどれほど処理・容量の違いがあるのかが知りたいNe!

249 名前:名前は開発中のものです。 mailto:sage [2009/05/21(木) 23:43:38 ID:Lde+nmZH]
いまどきbmpで作ったからって容量が多くなりすぎて困るって事はないと思うけどなぁ。
3Dゲームとかノベルゲームとかならまだしも。

むしろ容量食うのは音楽。

250 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 00:30:16 ID:opiwTOF8]
ある程度DL数が多かったり、自宅サーバだったりする場合は
けっこう容量も気になってくるのだそうな。

251 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 00:49:48 ID:rdJ4/1mO]
bmpじゃないと透過色が定まらない…

252 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 13:26:24 ID:Ttltxn7S]
俺はpng一択。αチャネルを1ファイルで処理できるのが便利すぎる
(bmpやjpgだとチャネル用の別画像を用意しないといけない)

ちなみに読み込みだけにCPU負荷がかかるだけで、
テクスチャになってしまえば転送速度は同じ。
bmpの場合はファイルサイズも大きくなり、読み込みに時間が逆に掛かることもあるので、適材適所が良いと思います

253 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 21:09:50 ID:opiwTOF8]
質問。
32x32の画像があって、これを2倍に拡大して表示するのと、
64x64の画像があって、これを等倍で表示するのとでは、どっちが高速?

拡大する手間がある分だけ遅くなると見るべきか、元々の画像が小さいから有利と見るべきか。
実測してみたけど、いまいちよく分からん。




254 名前:名前は開発中のものです。 mailto:sage [2009/05/22(金) 21:24:41 ID:xxFjO+BK]
実測してわからないのならどうしようもないような……。

255 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 00:55:35 ID:1QCRwyZH]
>>253
前者の方が早いでしょう
拡大表示処理はハードウェア(Direct3D)で行うので、とても高速ですよ

256 名前:239 mailto:sage [2009/05/23(土) 12:29:43 ID:A4cQi3hh]
2000*4000くらいの大きな画像や、小さい画像を1000個くらい描画してみて
DrawRectGraphとDerivationGraphの違いを検証してみましたが、
メモリ、ビデオメモリ、処理速度に目立った違いは見受けられませんでした。
なので扱いやすいDerivationGraphを使って行こうと思います。

257 名前:名前は開発中のものです。 [2009/05/23(土) 13:25:24 ID:ORU4uz0n]
自分や友人がDxLibを使って作ったゲームを俺のPCで起動させると、始めはいいんだが、しばらくしてから必ず30フレームになってしまうのはなぜかわかる人いるか?
俺のPCは「VGN-AW71JB」っていう型なんだが…。PC版のスプリンターセルはヌルヌル動き続けるし、スペックの問題ではないと思うんだが…。64bitのvistaってのがなにか影響してるのかな?


258 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 17:37:42 ID:XAnqJ6HC]
257 名前:名前は開発中のものです。[] 投稿日:2009/05/23(土) 13:25:24 ID:ORU4uz0n
自分や友人がDxLibを使って作ったゲームを俺のPCで起動させると、始めはいいんだが、しばらくしてから必ず30フレームになってしまうのはなぜかわかる人いるか?
俺のPCは「VGN-AW71JB」っていう型なんだが…。PC版のスプリンターセルはヌルヌル動き続けるし、スペックの問題ではないと思うんだが…。64bitのvistaってのがなにか影響してるのかな?

259 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 20:01:55 ID:5w7OxnoQ]
インデックスカラー方式の画像描画はどうやったらいいんでしょうか。パレットを切り替えて色を途中で変えたりしたいんですが。

260 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 20:38:13 ID:JcHBq+Qd]
一度メモリに読み込んでからパレット部分を書き換えて、グラフィックハンドルに登録する。
つまり、途中で自在に色換えはできない。

わかる、君のやりたい事はわかる。
スプライトの色変えみたいに自在にやりたいんだよな。でもできない。

261 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 22:53:41 ID:5w7OxnoQ]
PCってファミコン以下の糞環境なんですねラスタースクロールもできないし

262 名前:名前は開発中のものです。 mailto:sage [2009/05/23(土) 23:00:23 ID:KtGbScqt]
DirectXでも弄ってろよ

263 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 00:14:29 ID:wnjrF3Q2]
ラスタースクロールなんて10年ぶりに聞いた



264 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 00:17:36 ID:mQM6vOM4]
>しばらくしてから必ず30フレームになってしまうのはなぜかわかる人いるか?

処理速度が低下するような時は、メモリーリークの可能性がある、
簡単に書くと、メモリを解放せずループで使いっぱなしにすると
メモリーがどんどん不足してゆき処理速度低下として症状が現れる。

265 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 00:42:23 ID:3op8nAnx]
>>259
一色ごとに画像を抽出してそれを全部白くして、表示時に色をいじってだね・・・
コストはかかるが、あくまで自由自在に色をいじりたい奴だけそうしてみるとか

266 名前:名前は開発中のものです。 [2009/05/24(日) 04:14:52 ID:7GmmmL9x]
FilmtnとBCCつかうとコンパイルとプログラム実行一瞬でめちゃくちゃ速いな
VC2008は豪華だけど重い

267 名前:名前は開発中のものです。 [2009/05/24(日) 17:40:43 ID:seD1hHi/]
>>264
同じソースでも、友人のPCだったら落ちないという…
落ちないようにするにはどうしたらいいかな?

※と、書いてる途中でタスクマネージャーを見たら、CPU使用率が90%以上に張り付いてた。
他何も起動してないし、アプリケーションを停止したら0%に戻る。意味不明。

268 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 19:21:41 ID:e3aiszR0]
そりゃ友人のPC環境が良いだけって話にならんかね。

269 名前:名前は開発中のものです。 mailto:sage [2009/05/24(日) 20:01:22 ID:PboGdTn+]
まぁ、ソースを見ないとなんともいえないな。
文字描画するのに、毎回文字の大きさ変えて描画してるとか

270 名前:名前は開発中のものです。 [2009/05/24(日) 23:50:08 ID:seD1hHi/]
自分
CPU:Core 2 Duo 2.66GHz
RAM:4.00GB

友人
CPU:Core 2 Duo 2.40GHz
RAM:2.00GB

ソースとして挙げるなら、DxLibのホームページの、ゲーム作成講座のソース。
四角君が自分に向けて弾を撃って来るあのソースですらなりました。


271 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 00:30:41 ID:41gxgfIl]
いちいちageるなぼけ

272 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 01:34:29 ID:eHx6nkcb]
c++教室の2Dアニメーションのプログラムを書いたんだが、表示されない
何が悪いのか……


273 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 01:53:57 ID:UZHs9GNu]
それは愚痴か、質問か。

質問だったら「エスパーじゃないんだから、そんな事知らん」




274 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 02:16:31 ID:/EmhtAKe]
DirectXを最新版にしてみたら?

275 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 07:48:45 ID:qL901e+j]
指定ファイル名が違うとかダブルバッファの処理がおかしいかメモリに読み込まれてないかじゃね

276 名前:名前は開発中のものです。 mailto:sage [2009/05/25(月) 10:55:40 ID:yXpMtdiR]
俺はScreenFlipでの垂直同期周りだと予想
グラボと設定によっては同期待ちのタイミングでCPU処理に加算されとても重く「感じる」ことがある。

277 名前:名前は開発中のものです。 [2009/05/25(月) 15:09:43 ID:bb62p5Sd]
SetWaitVSyncFlag(FALSE);

でカオスになるぜ!

278 名前:名前は開発中のものです。 mailto:sage [2009/05/26(火) 17:43:21 ID:WrI50zFN]
>277
誰もが一度は通る道www

279 名前:名前は開発中のものです。 mailto:sage [2009/05/27(水) 04:36:49 ID:cQqUnwcL]
3D背景を実装するのって難しいかね

280 名前:名前は開発中のものです。 mailto:sage [2009/05/27(水) 04:47:29 ID:klPEh/z6]
あなたの実力による

281 名前:名前は開発中のものです。 mailto:sage [2009/05/29(金) 00:03:12 ID:vY9ARI7K]
チラ裏。
Dxライブラリをうまく名前空間に突っ込めないかなー、と思ったが
自前で改造しなきゃならない量を考えると挫折しそうだって愚痴。


>279
3Dで作った背景を2D画像に落として、
無理やりパターンアニメで表示させてるって作品があったような気がする。


282 名前:名前は開発中のものです。 mailto:sage [2009/05/29(金) 01:20:12 ID:4j6tq9JR]
>>279
実際にいじってないのでなんとも言えないが
ここに映像つきのサンプルあるよ。
dixq.net/rp/

283 名前:279 mailto:sage [2009/05/29(金) 06:57:39 ID:Vqjs1m4E]
>>280
ふむ…努力次第でどうにでもなるという解釈でおkかな。時間はかかりそうだがやってみないことにはわからないな

>>281
横シューのなら見たことあるwwものすごい労力の割に拡張性が無さそうでなぁ…

>>282
おお、こんな感じで動かせられるなら…


とりあえずテクスチャを簡単にくりくり動かせるような関数でもつくってみることにする



284 名前:名前は開発中のものです。 [2009/05/29(金) 21:51:58 ID:izoQPgWw]
VC2008って無意味に重いなあ
関数かいてカーソル合わせると宣言が表示されるから便利なんだけどなあ

285 名前:名前は開発中のものです。 mailto:sage [2009/05/29(金) 23:04:59 ID:ATWupmEU]
ツール→オプション→環境→自動バックアップ→自動バックアップの実行間隔→60分ごと

286 名前:名前は開発中のものです。 [2009/05/30(土) 23:32:29 ID:3JWvpnu4]
>3Dで作った背景を2D画像に落として、
>無理やりパターンアニメで表示させてるって作品があったような気がする。

いいねこれメガテンの3Dダンジョンみたいなのに使えるな

287 名前:名前は開発中のものです。 [2009/05/31(日) 03:54:51 ID:/tj3gvKS]
int state = 0;
swith(state){
case 0:
if(CheckHitKey(KEY_INPUT_RETURN)){
文字表示
state++;
}
case 1:
if(CheckHitKey(KEY_INPUT_RETURN)){
文字表示
state++;
}
case 2:
if(CheckHitKey(KEY_INPUT_RETURN)){
文字表示
}
}

という風にすると、全部一気にキー判定されて、同時にすべての文字が表示されます。
WaitKeyとかWaitTimerを使う以外で、エンターを押すごとに順番に表示させるにはどうすればいいでしょう?

288 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 04:07:26 ID:WdCW0LKP]
>>287 コンパイルしてないから、実際に動くかは知らんが、
enterが押しっぱなしの時は、flagを0にシナイので、
enterが離されて、再度flagが0になってからswitch文の実行が行われる。ように改造すれば
望みの結果が得られると思う。

int state = 0;
int flag =0;
if(flag == 0){
switch(state){
case 0:
if(CheckHitKey(KEY_INPUT_RETURN)){
flag =100;
文字表示
state++;
}
case 1:
if(CheckHitKey(KEY_INPUT_RETURN)){
flag =100;
文字表示
state++;
}
case 2:
if(CheckHitKey(KEY_INPUT_RETURN)){
flag =100;
文字表示
}
}
}else if(flag != 0)
{f( !CheckHitKey(KEY_INPUT_RETURN) ){
flag =0;
}


289 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 04:49:59 ID:j4yiAyL2]
/*>>287 の意図する動作かどうかわからんが、俺がいつも使ってる方式
キーバッファを設けることによって、押された瞬間を判定することができる*/
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1) {return -1;}
SetDrawScreen(DX_SCREEN_BACK);
char key_buffer[2][256]; // キーバッファ
int state = 0;
while (ProcessMessage() != -1) {
ClearDrawScreen();
// 前のフレームの入力状態を保持
for (int i = 0; i < 256; i++) {
key_buffer[1][i] = key_buffer[0][i];
}
// 現在のフレームの入力状態を取得
GetHitKeyStateAll(key_buffer[0]);
// 「現在のフレームで押されている」かつ「前のフレームで押されていない」ならば
if (key_buffer[0][KEY_INPUT_RETURN] && !key_buffer[1][KEY_INPUT_RETURN]) {
state++; // 次の状態へ
}
// state の値によって分岐するなり何なり
DrawString(0, 0, "Press enter key!", GetColor(255, 255, 255));
DrawFormatString(0, 20, GetColor(255, 255, 255), "状態%d", state);
// 適当なところで終了
if (state == 10) {break;}
ScreenFlip();
WaitTimer(10);
}
DxLib_End();
return 0;
}

290 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 05:11:01 ID:YoqdwaI9]
とりあえずbreakしようぜ

291 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 08:31:50 ID:JGIiJgnT]
if((CheckHitKey(KEY_INPUT_RETURN))&&LeftFlag==0){
LeftFlag=999;
文字表示}else LeftFlag=0;
押したときだけ処理するようにすればいけそう?

292 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 08:46:00 ID:P4ttxSKS]
static
break

293 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 15:21:06 ID:jTyG44wW]
if(CheckHitKey(KEY_INPUT_RETURN)){
if(enter_cnt<100){enter_cnt++;}
}else{
enter_cnt=0;
}

if(enter_cnt)//押している間
if(enter_cnt==1)//押された瞬間



294 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 15:22:27 ID:jTyG44wW]
if(CheckHitKey(KEY_INPUT_RETURN)){
 if(enter_cnt<100){enter_cnt++;}
}else{
 enter_cnt=0;
}
半角消えるのか

295 名前:名前は開発中のものです。 mailto:sage [2009/05/31(日) 20:06:14 ID:kvaGbtb9]
>>286
DOGA最盛期にうんざりするほどあったよそういうの

296 名前:名前は開発中のものです。 [2009/06/01(月) 03:53:44 ID:ojIQArFl]
CheckHitKeyで押された回数を数えるにはどうしたらいいでしょう?

297 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 03:59:15 ID:YGv3z7sb]
>296
if文とインクリメント


298 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 04:02:48 ID:7hVJjQOF]
>>296
今話題の押された瞬間を数えて適当な変数に保存しときゃいいんでね?

299 名前:名前は開発中のものです。 [2009/06/01(月) 04:12:11 ID:ojIQArFl]
下のプログラムを改良して、エンター押すごとにA,B,C,Dを表示させていくにはどうしますか。
下のままだと、ABCDっていっきに表示されます。

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;

int col1 = GetColor(255, 255, 255);
char input[4];
int i = 0;



300 名前:名前は開発中のものです。 [2009/06/01(月) 04:13:52 ID:ojIQArFl]
>>299続き
while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
if(CheckHitKey(KEY_INPUT_RETURN)){
switch(i){
case 0:
input[i] = 'A';
break;
case 1:
input[i] = 'B';
break;
case 2:
input[i] = 'C';
break;
case 3:
input[i] = 'D';
break;
}
i++;
}
if(CheckHitKey(KEY_INPUT_SPACE)){
ClearDrawScreen();
DrawString(0, 0, input, col1);
}
ScreenFlip();
}

DxLib_End();
return 0;
}


301 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 08:41:57 ID:7hVJjQOF]
キーを1回押されるごとに処理したい場合の
あるごりずむ体操

(ループはじめ)
    ↓
<前回キーが押されていたか?> YES→ (ループおわり)
    ↓ NO
<キーが押されているか?>    NO → (ループおわり)
    ↓ YES
[キーが押された時の処理]
    ↓
(ループおわり)

302 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 08:43:59 ID:OkPmCHq7]
iの値も0に戻してあげようね

303 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 09:36:50 ID:hCSvJ7Y8]
リアルタイム処理でないのならScreenFlipのあとにでも↓を追加しときゃいいんじゃね?


while( ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0 && CheckHitKey(KEY_INPUT_RETURN) == 1 ){
Sleep(16) ;
}




304 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 10:52:22 ID:YGv3z7sb]
>>301
昔、組み込みプログラムでやったな、そういう処理。


305 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 16:12:49 ID:rm5/xw9E]
クラス化するとか
class Key {
private:
int keyCode, state;
public:
Key( int KeyCode ) : keyCode( KeyCode ), state( 0 ) {}
int CheckHit() { int tmp = state; state = CheckHitKey( keyCode ); return tmp ? 0 : state; }
};

//WinMain
...
Key enter( KEY_INPUT_RETURN );
if(enter.CheckHit()){
...

306 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 21:33:29 ID:lE2okL9b]
無駄すぎ糞ワロタ

307 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 22:14:20 ID:MR6y8v2X]
そこで無駄のないソースの登場ですね。

308 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 22:52:38 ID:aqGzCF5U]
俺もクラス化してるから、簡潔な方法があるなら教えて欲しい。

309 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 22:57:02 ID:eaj8yaj9]
そもそもこのプログラムはスペースを押さないと表示させないようにしてるのかな
それはともかく言われたように押してくごとにABCD表示させようと思ったら
>>300を変更するとしたら
int returnOn = 0;  // ←
while(ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE)==0){
if(CheckHitKey(KEY_INPUT_RETURN) && !returnOn){  // ←
switch(i){
case 0:
input[i] = 'A';
break;
case 1:
input[i] = 'B';
break;
case 2:
input[i] = 'C';
break;
case 3:
input[i] = 'D';
break;
}
i++;
returnOn = 1;  // ←
}
if( !CheckHitKey(KEY_INPUT_RETURN)) returnOn = 0;  // ←
        (以下略)

とかやるとか


310 名前:名前は開発中のものです。 mailto:sage [2009/06/01(月) 23:27:38 ID:FdTrWJbB]
static変数のフラグ使うのが一番単純だと思うなあ

311 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 09:36:41 ID:9M4SMxHr]
hsp時代にも散々似たような処理書いたなぁ…

なんかゲームのメインループ()


if((Aボタン==1)&&(Aボタンバッファ==0))

   なんか押された瞬間だけ1回やりたい処理


Aボタンバッファ=Aボタン



最初からKEY_DOWN、KEY_UP的なものがライブラリに有れば楽なんだが
ゲームじゃしょっちゅう使うし

312 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 09:48:11 ID:fOpSnwq/]
32ビットか64ビットの整数をバッファにしてビット演算で書き込み、取り出しが一般的だろ
そのバッファに生でアクセスすることはあまりないが、
かといってキーごとにオブジェクト化するのもありえない

313 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 11:07:30 ID:lqyt4myq]
299にいきなりそんな話してもわかんないでしょ。



314 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 11:08:32 ID:fOpSnwq/]
抜けてたが、
上の例の場合、バッファは二つ以上ないとあまり意味ない
キーがマッピングしきれないって人はchar配列とか使えばいい

よりこだわる人はRawInputで

315 名前:名前は開発中のものです。 mailto:sage [2009/06/02(火) 21:23:19 ID:CgQN485t]
>キー入力

自分が使ってるルーチンのコードを記事にまとめました
d.hatena.ne.jp/kokarage/20090602/p2






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef