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


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

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



1 名前:名前は開発中のものです。 mailto:sage [2010/10/04(月) 17:24:47 ID:zBoueRHu]
Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
homepage2.nifty.com/natupaji/DxLib/

【過去スレ】
DXライブラリ 総合スレッド
pc11.2ch.net/test/read.cgi/gamedev/1197468399/
DXライブラリ 総合スレッド 2008
pc11.2ch.net/test/read.cgi/gamedev/1224923873/
DXライブラリ 総合スレッド その3
pc11.2ch.net/test/read.cgi/gamedev/1238429676/
DXライブラリ 総合スレッド その4
pc11.2ch.net/test/read.cgi/gamedev/1249822550/
DXライブラリ 総合スレッド その5
pc11.2ch.net/test/read.cgi/gamedev/1259912953/
DXライブラリ 総合スレッド その6
hibari.2ch.net/test/read.cgi/gamedev/1267108154/

931 名前:名前は開発中のものです。 [2011/03/14(月) 22:40:22.44 ID:gNx4XTy2]
流れぶったぎったうえに初心者で申し訳ないんですが、質問させてください。

アクションゲームを作ろうと思っているんですが、
CheckHitKey関数でキー情報を取得→ベクトルで座標計算
という風にすると左キーと右キーを同時押しした時に
右と左に同時に座標が計算されて、キャラが静止してしまいます。
これを回避するにはどうすればいいでしょうか?
まだポインタも理解していない程なので理解力が低いかもしれませんが、
よろしくお願いします。

932 名前:名前は開発中のものです。 mailto:sage [2011/03/14(月) 22:45:54.96 ID:UnZDECUY]
静止しちゃまずいのか?
どう動いて欲しいのかを書かない限り「どのコードも正しい」

933 名前:名前は開発中のものです。 [2011/03/14(月) 22:55:43.30 ID:gNx4XTy2]
>>932
すいません、言葉足らずでした。
反対方向のキーを押した場合、
後から押した方のみを計算したいんです。
(右を押しながら左を押すと左に行くみたいな)
GetNowCount関数を使って時間差で比べようと思いましたが、
どうにも上手く書けなくて…
出来れば教えて頂くのは考え方だけで、
ソースは自分で頑張りたいと思います。

934 名前:名前は開発中のものです。 mailto:sage [2011/03/14(月) 23:06:54.10 ID:TbizatYE]
前のフレームの状態を覚えておくんだよ
それを現在の状態と比較すれば、押されたキーや離されたキーがわかる

935 名前:名前は開発中のものです。 [2011/03/14(月) 23:13:39.89 ID:gNx4XTy2]
>>934
アドバイスありがとうございます。
秒じゃなくてフレームじゃないと駄目だったんですね。
…そりゃそうか。
完成できるよう頑張ります!

936 名前: [―{}@{}@{}-] 名前は開発中のものです。 mailto:sage [2011/03/14(月) 23:21:23.20 ID:E5S/TLVJ]
while(1)
{
  old_left_key_state = left_key_state;
  old_right_key_state = right_key_state;

  if(CheckHitKey(LEFT_KEY)){ left_key_state = PUSH; }
  else{ left_key_state = RELEASE; }
  
  if(CheckHitKey(RIGHT_KEY)){ right_key_state = PUSH; }
  else{ right_key_state = RELEASE; }

  if(left_key_state == PUSH && right_key_state == RELEASE){ press_key = LEFT_KEY; }
  if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
  if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }

  if(left_key_state == PUSH && right_key_state == PUSH){
    if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
    if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
  }
}

937 名前:名前は開発中のものです。 [2011/03/14(月) 23:54:12.21 ID:gNx4XTy2]
>>936
コードありがとうございます。
自分で作るとか言っときながら、あっさり見てしまいました。
でも参考になりました!やっと悔いなく先に進めそうです。

938 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 00:03:07.27 ID:X3tKRN+k]
ttp://dixq.net/rp/2.html
これの値でかいほうにすりゃいんじゃね

939 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 03:26:20.84 ID:DqTTW319]
これ関係ないキーまで256回もチェックするのが気になるのだが
256回程度じゃ問題ないという考えなのか

あとその上の奴は4塊目
普通
else if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
else if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }
入れるもんじゃないのか

もしそうするとその次の
if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう

それとその後の
    if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
    if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
だが
left_key_state == PUSH && 、right_key_state == PUSH && いるかね
こまけえこたあいいんだよ?




940 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 06:05:58.86 ID:xbXr2Nkf]
>>939
「これ」とか「その」とかってなんだよ、ちゃんとどこか安価でもしろよ
答える方に探せってか?
幸いレスが近いから>>936のことだろうって分かるけどよ
あと4塊目ってなんだよ、そんな言葉初めて聞いたよ

簡単な例示のプログラムなんだから
こまけぇこたあいいんだよでおkだろ
おまえの言ってることはあってるけど、動作的には同じだろ?
条件を明示的にわざと条件を冗長に書いて
コードの可読性を上げるという意味はある
nに1〜4までしか入らないswitch文でも
switch(n){
case 1: break;
case 2: break;
case 3: break;
default: break;
}
とは書かんだろ?

>これ関係ないキーまで256回もチェックするのが気になるのだが
全部のキーを調べないと汎用性がないだろ
もし、使いたいキーが増えたらその都度増やすのか?
べつにそれでもいいけどさ
あと、普通はGetHitKeyStateAll使うだろ

941 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:09:53.01 ID:DqTTW319]
普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ

あと安価付けるの照れ臭いんだ
察してくれよw

4塊目ってのは言い方が思い付かなかったんだから分かるだろと思って俺が勝手に作ったんだよ
分かるだろ?w
まあ何か言い方はあるんだろうけどすぐに思いつかなかった
まあそれだけのことだw

明示的にわざと書いてとは言うがこの場合は書かなくても分かると思ったんだよ
まあ人それぞれだろうが

全部のキーを使わないと汎用性ないだろとは言うがだからといって256個も使うわけねえだろって思ってw
大体方向キーとボタン数個だけだろ、使うとは言っても
いくら汎用性がないとはいえ調べる必要ない奴の方が圧倒的に多いのに256個もチェックする必要があるかねって思っただけw


942 名前:名前は開発中のものです。 [2011/03/15(火) 09:12:40.30 ID:gnI9eXa6]


943 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:14:29.72 ID:DqTTW319]
だから
> if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう
は置いといてもだ

>     if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
>     if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }

> left_key_state == PUSH && 、right_key_state == PUSH &&
はすぐ上に同じ条件があるんだからいるかね?って思っただけ

まあ別に大した問題ではないんだけどねw
それでも細かい俺は気になったの
細かいこと気にし過ぎ?w

944 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:23:09.01 ID:7Ujss6hx]
まぁ情報が少なくて困るよりは、
教科書どおりの良い情報と、流し見でいい発展情報とがあるほうが、いいんでないかい

教科書と発展とが混ざってわからなくなると困るけど、そこはみんな
鋭くツッコミ入れてくれるところだしな

945 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:34:29.08 ID:xbXr2Nkf]
>>943
気にしすぎ
あとイチイチ語尾に芝はやすのうざい
真面目にレスする気なくす

>普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ
言えよ

>あと安価付けるの照れ臭いんだ
>察してくれよw
ムリ

あとはコーディング規約をどうするかって話だけだ
そこは人と場合それぞれで明確な解答はない
以上、もうお前にはレスしない

946 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 09:47:22.67 ID:LRL3QteV]
bool Input::KeyDown(BYTE key)
{
return (m_keyInput[key] & ~m_keyInputPrev[key]) == 1? true:false;
}
俺は上みたいにしてるよ
前フレームのをmemcpyで配列毎コピーすれば良いと思う

947 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 10:12:36.70 ID:DqTTW319]
>>945
今回は敢えて言う必要ないかなと思っただけだよ
レスしねえなら最初っからすんじゃねえカス

948 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 10:35:06.21 ID:sVXS+gQF]
相手からの反論がないならと安心して罵倒か
カスはお前だろw

949 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 10:47:54.36 ID:xUaeA1H3]
>あと安価付けるの照れ臭いんだ
>察してくれよw

無茶言うなw



950 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 16:58:39.83 ID:18Xm69u5]
プリコンパイル済みヘッダって、DxLibくらいじゃ効果薄いよね?

951 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 17:11:32.96 ID:KXScCzgE]
とある人の受け売りだけど、VCにてビルドを超高速化する方法

自作のヘッダファイルにはインクルードガードを施す

cppファイルを1つを除いて全部「ビルドから除外」する

そして、その1つのcppファイルにそれら「ビルドから除外」したcppファイルを全部インクルードする

ビルドする

サラマンダーよりはやーい

プリコンパイル済みヘッダはシラネ

952 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 17:14:05.00 ID:fAuDpb2f]
>>951
最後なんなんだよ。
俺とやる気か?あ?

953 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 18:01:11.55 ID:nteT3Zz7]
>>950
めっちゃ早くなってるよ
アホだから設定苦戦したけど。

954 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 19:05:01.55 ID:QQAoE1bu]
>>951
それって1ファイル書き換えただけで全部の.h/.cppをコンパイルし直すことにならないか?

955 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 19:44:40.83 ID:KXScCzgE]
>>954
よっぽどの量でない限り、一つのファイルのコンパイル速度はコード量に左右されないよ
ビルドで時間使ってるのはプリプロセスやobjのリンクで、それをすっ飛ばせるとかなり早くなる
cppが多いプロジェクトを書き換えると感動すると思うよホント
正直今まで人に教えるのを勿体無いと思ってたレベル

956 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 20:12:52.73 ID:Q7+nM0HN]
つうか、普通にそういうのオフに出来るオプションあるんじゃないの?
いや、詳しくは知らんけど。

957 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 20:32:14.80 ID:xbXr2Nkf]
>>951
includeの順番間違えて
ビルド出来るようにするまでちょっと戸惑ったけど
むっちゃくちゃ速くなった、ありがとう


958 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 20:38:02.64 ID:hTtiuP+j]
#includeでcppか……違和感はあるな

959 名前:名前は開発中のものです。 mailto:sage [2011/03/15(火) 21:01:01.48 ID:44jcDk3e]
LL系言語のloadfileみたいだなw



960 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 15:22:41.05 ID:ywftU18L]
理に適ってるかどうかは置いといて、非合理的ではある

961 名前:名前は開発中のものです。 [2011/03/16(水) 16:22:15.68 ID:zS54Nj1q]
なぜ非合理的なのでしょうか?

962 名前:名前は開発中のものです。 [2011/03/16(水) 16:25:58.79 ID:zS54Nj1q]
つか、理にかなってないかわからないけど
非合理的って矛盾してね?

963 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 16:26:24.95 ID:do/XMJJp]
合理的かどうかは知らんが、スピードを優先するために何かを犠牲にするって話だよね
何かってのは例えば>>957がたどったような手間とか

964 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 18:52:54.43 ID:UW09KiLI]
>>963
オレがその>>957だが、ビルド出来るようにする手間より
ビルドにかかる時間の短縮のほうがでかかったよ
すげ〜得した
>>955の言うとおりcppファイルが沢山あるプロジェクトほど効果はデカイ
>>960のレスこそ非合理的って話だな

965 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 18:53:19.02 ID:gTLtkOfi]
まぁぶっ飛んだ裏技的やり方だからね
C++の仕様を理解できてコードの依存関係を頭の中でちゃんとイメージ出来る人だけ
楽する手段としてつかって欲しい感じ

966 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:07:37.43 ID:BjnjOb1q]
このやり方を支援するプラグインがあればいいのにな

967 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:17:41.84 ID:i6gMh4cT]
てか、俺からしたらそんなにビルドに時間がかかるほどのゲームを作ってる人がいるのに驚きだ。
しかもDXライブラリを使って? いったいどんな規模のゲームなんだ。

968 名前:名前は開発中のものです。 [2011/03/16(水) 19:17:48.09 ID:BC+pXFRw]
デフォでオフだけど並列でビルドするオプションがある
すごく早くなる

969 名前: [―{}@{}@{}-] 名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:31:14.46 ID:wm2Br6SF]
// main.cpp
#include <stdio.h>

#include "sub_1.cpp"
#include "sub_2.cpp"

extern int get_sub_1_val(void);
extern int get_sub_2_val(void);

int main(void)
{
  printf("sub_1_val: %d\n", get_sub_1_val());
  printf("sub_2_val: %d\n", get_sub_2_val());
  return 0;
}

// sub_1.cpp
static int val = 10;
int get_sub_1_val(void){ return val; }

// sub_2.cpp
static int val = 20;
int get_sub_2_val(void){ return val; }

sub_2.cpp(1) : error C2370: 'val' : 再定義 ; 異なるストレージ クラスです。
sub_1.cpp(1) : 'val' の宣言を確認してください。




970 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:47:41.09 ID:zS54Nj1q]
なるほどね
Cだと駄目だね
無名空間とかもそうなるのかな?

971 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 19:50:17.06 ID:gTLtkOfi]
>>967
そんな大規模じゃなくてもcppファイルが多くて…… STGなんだけど、
自作計算関数、自作システム関数、保存データ管理関数、敵クラス、弾クラス、その他オブジェクトクラス、
ゲームシーンクラス、メニューシーンクラス、リソース定義……とか
全体の行数はたった6000行ちょい(空改行除く)

>>969
extern宣言してないグローバル変数の衝突は仕方ない……
てか考えると思ったよりも問題の出るケース多そうね……

972 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 20:02:03.60 ID:1Ae82QgD]
>>968
教えてくれてサンクス
一瞬で終わって驚いた

973 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 21:19:17.62 ID:tAHP0ur9]
全体の行数ってどうやったら数えられるんだっけ?

974 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 21:19:47.26 ID:tAHP0ur9]
書き忘れた、もちろんVCの話で…

975 名前:名前は開発中のものです。 mailto:sage [2011/03/16(水) 23:33:53.97 ID:do/XMJJp]
行数カウントツールが、フリーソフトページにあるよね

並列ビルドはぐぐったけど見つからなかった
複数プロジェクトを同時ビルドってのは初期値が2で最大値が32みたいだけど、これは違うよねきっと

976 名前:名前は開発中のものです。 [2011/03/17(木) 01:14:09.79 ID:jlNSzrqd]
VCに「複数プロセッサによるコンパイル」という項目がある

977 名前:名前は開発中のものです。 mailto:sage [2011/03/17(木) 04:33:38.84 ID:FsTg2Syb]
プロジェクトのプロパティ>構成プロパティ>C/C++>全般>複数プロセッサによるコンパイル
だな
VC++2010にはあるけど、VC++2008には無いみたいだな

978 名前:名前は開発中のものです。 mailto:sage [2011/03/17(木) 21:28:02.94 ID:USLN5jlJ]
2008なら/MPオプションを直接与えればいい






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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