11/03/14 22:55:43.30 gNx4XTy2
>>932
すいません、言葉足らずでした。
反対方向のキーを押した場合、
後から押した方のみを計算したいんです。
(右を押しながら左を押すと左に行くみたいな)
GetNowCount関数を使って時間差で比べようと思いましたが、
どうにも上手く書けなくて…
出来れば教えて頂くのは考え方だけで、
ソースは自分で頑張りたいと思います。
934:名前は開発中のものです。
11/03/14 23:06:54.10 TbizatYE
前のフレームの状態を覚えておくんだよ
それを現在の状態と比較すれば、押されたキーや離されたキーがわかる
935:名前は開発中のものです。
11/03/14 23:13:39.89 gNx4XTy2
>>934
アドバイスありがとうございます。
秒じゃなくてフレームじゃないと駄目だったんですね。
…そりゃそうか。
完成できるよう頑張ります!
936: [―{}@{}@{}-] 名前は開発中のものです。
11/03/14 23:21:23.20 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:名前は開発中のものです。
11/03/14 23:54:12.21 gNx4XTy2
>>936
コードありがとうございます。
自分で作るとか言っときながら、あっさり見てしまいました。
でも参考になりました!やっと悔いなく先に進めそうです。
938:名前は開発中のものです。
11/03/15 00:03:07.27 X3tKRN+k
URLリンク(dixq.net)
これの値でかいほうにすりゃいんじゃね
939:名前は開発中のものです。
11/03/15 03:26:20.84 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:名前は開発中のものです。
11/03/15 06:05:58.86 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:名前は開発中のものです。
11/03/15 09:09:53.01 DqTTW319
普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ
あと安価付けるの照れ臭いんだ
察してくれよw
4塊目ってのは言い方が思い付かなかったんだから分かるだろと思って俺が勝手に作ったんだよ
分かるだろ?w
まあ何か言い方はあるんだろうけどすぐに思いつかなかった
まあそれだけのことだw
明示的にわざと書いてとは言うがこの場合は書かなくても分かると思ったんだよ
まあ人それぞれだろうが
全部のキーを使わないと汎用性ないだろとは言うがだからといって256個も使うわけねえだろって思ってw
大体方向キーとボタン数個だけだろ、使うとは言っても
いくら汎用性がないとはいえ調べる必要ない奴の方が圧倒的に多いのに256個もチェックする必要があるかねって思っただけw
942:名前は開発中のものです。
11/03/15 09:12:40.30 gnI9eXa6
芝
943:名前は開発中のものです。
11/03/15 09:14:29.72 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:名前は開発中のものです。
11/03/15 09:23:09.01 7Ujss6hx
まぁ情報が少なくて困るよりは、
教科書どおりの良い情報と、流し見でいい発展情報とがあるほうが、いいんでないかい
教科書と発展とが混ざってわからなくなると困るけど、そこはみんな
鋭くツッコミ入れてくれるところだしな
945:名前は開発中のものです。
11/03/15 09:34:29.08 xbXr2Nkf
>>943
気にしすぎ
あとイチイチ語尾に芝はやすのうざい
真面目にレスする気なくす
>普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ
言えよ
>あと安価付けるの照れ臭いんだ
>察してくれよw
ムリ
あとはコーディング規約をどうするかって話だけだ
そこは人と場合それぞれで明確な解答はない
以上、もうお前にはレスしない
946:名前は開発中のものです。
11/03/15 09:47:22.67 LRL3QteV
bool Input::KeyDown(BYTE key)
{
return (m_keyInput[key] & ~m_keyInputPrev[key]) == 1? true:false;
}
俺は上みたいにしてるよ
前フレームのをmemcpyで配列毎コピーすれば良いと思う
947:名前は開発中のものです。
11/03/15 10:12:36.70 DqTTW319
>>945
今回は敢えて言う必要ないかなと思っただけだよ
レスしねえなら最初っからすんじゃねえカス
948:名前は開発中のものです。
11/03/15 10:35:06.21 sVXS+gQF
相手からの反論がないならと安心して罵倒か
カスはお前だろw
949:名前は開発中のものです。
11/03/15 10:47:54.36 xUaeA1H3
>あと安価付けるの照れ臭いんだ
>察してくれよw
無茶言うなw
950:名前は開発中のものです。
11/03/15 16:58:39.83 18Xm69u5
プリコンパイル済みヘッダって、DxLibくらいじゃ効果薄いよね?
951:名前は開発中のものです。
11/03/15 17:11:32.96 KXScCzgE
とある人の受け売りだけど、VCにてビルドを超高速化する方法
自作のヘッダファイルにはインクルードガードを施す
↓
cppファイルを1つを除いて全部「ビルドから除外」する
↓
そして、その1つのcppファイルにそれら「ビルドから除外」したcppファイルを全部インクルードする
↓
ビルドする
↓
サラマンダーよりはやーい
プリコンパイル済みヘッダはシラネ
952:名前は開発中のものです。
11/03/15 17:14:05.00 fAuDpb2f
>>951
最後なんなんだよ。
俺とやる気か?あ?
953:名前は開発中のものです。
11/03/15 18:01:11.55 nteT3Zz7
>>950
めっちゃ早くなってるよ
アホだから設定苦戦したけど。
954:名前は開発中のものです。
11/03/15 19:05:01.55 QQAoE1bu
>>951
それって1ファイル書き換えただけで全部の.h/.cppをコンパイルし直すことにならないか?
955:名前は開発中のものです。
11/03/15 19:44:40.83 KXScCzgE
>>954
よっぽどの量でない限り、一つのファイルのコンパイル速度はコード量に左右されないよ
ビルドで時間使ってるのはプリプロセスやobjのリンクで、それをすっ飛ばせるとかなり早くなる
cppが多いプロジェクトを書き換えると感動すると思うよホント
正直今まで人に教えるのを勿体無いと思ってたレベル
956:名前は開発中のものです。
11/03/15 20:12:52.73 Q7+nM0HN
つうか、普通にそういうのオフに出来るオプションあるんじゃないの?
いや、詳しくは知らんけど。
957:名前は開発中のものです。
11/03/15 20:32:14.80 xbXr2Nkf
>>951
includeの順番間違えて
ビルド出来るようにするまでちょっと戸惑ったけど
むっちゃくちゃ速くなった、ありがとう
958:名前は開発中のものです。
11/03/15 20:38:02.64 hTtiuP+j
#includeでcppか……違和感はあるな
959:名前は開発中のものです。
11/03/15 21:01:01.48 44jcDk3e
LL系言語のloadfileみたいだなw
960:名前は開発中のものです。
11/03/16 15:22:41.05 ywftU18L
理に適ってるかどうかは置いといて、非合理的ではある
961:名前は開発中のものです。
11/03/16 16:22:15.68 zS54Nj1q
なぜ非合理的なのでしょうか?
962:名前は開発中のものです。
11/03/16 16:25:58.79 zS54Nj1q
つか、理にかなってないかわからないけど
非合理的って矛盾してね?
963:名前は開発中のものです。
11/03/16 16:26:24.95 do/XMJJp
合理的かどうかは知らんが、スピードを優先するために何かを犠牲にするって話だよね
何かってのは例えば>>957がたどったような手間とか
964:名前は開発中のものです。
11/03/16 18:52:54.43 UW09KiLI
>>963
オレがその>>957だが、ビルド出来るようにする手間より
ビルドにかかる時間の短縮のほうがでかかったよ
すげ~得した
>>955の言うとおりcppファイルが沢山あるプロジェクトほど効果はデカイ
>>960のレスこそ非合理的って話だな
965:名前は開発中のものです。
11/03/16 18:53:19.02 gTLtkOfi
まぁぶっ飛んだ裏技的やり方だからね
C++の仕様を理解できてコードの依存関係を頭の中でちゃんとイメージ出来る人だけ
楽する手段としてつかって欲しい感じ
966:名前は開発中のものです。
11/03/16 19:07:37.43 BjnjOb1q
このやり方を支援するプラグインがあればいいのにな
967:名前は開発中のものです。
11/03/16 19:17:41.84 i6gMh4cT
てか、俺からしたらそんなにビルドに時間がかかるほどのゲームを作ってる人がいるのに驚きだ。
しかもDXライブラリを使って? いったいどんな規模のゲームなんだ。
968:名前は開発中のものです。
11/03/16 19:17:48.09 BC+pXFRw
デフォでオフだけど並列でビルドするオプションがある
すごく早くなる
969: [―{}@{}@{}-] 名前は開発中のものです。
11/03/16 19:31:14.46 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:名前は開発中のものです。
11/03/16 19:47:41.09 zS54Nj1q
なるほどね
Cだと駄目だね
無名空間とかもそうなるのかな?
971:名前は開発中のものです。
11/03/16 19:50:17.06 gTLtkOfi
>>967
そんな大規模じゃなくてもcppファイルが多くて…… STGなんだけど、
自作計算関数、自作システム関数、保存データ管理関数、敵クラス、弾クラス、その他オブジェクトクラス、
ゲームシーンクラス、メニューシーンクラス、リソース定義……とか
全体の行数はたった6000行ちょい(空改行除く)
>>969
extern宣言してないグローバル変数の衝突は仕方ない……
てか考えると思ったよりも問題の出るケース多そうね……
972:名前は開発中のものです。
11/03/16 20:02:03.60 1Ae82QgD
>>968
教えてくれてサンクス
一瞬で終わって驚いた
973:名前は開発中のものです。
11/03/16 21:19:17.62 tAHP0ur9
全体の行数ってどうやったら数えられるんだっけ?
974:名前は開発中のものです。
11/03/16 21:19:47.26 tAHP0ur9
書き忘れた、もちろんVCの話で…
975:名前は開発中のものです。
11/03/16 23:33:53.97 do/XMJJp
行数カウントツールが、フリーソフトページにあるよね
並列ビルドはぐぐったけど見つからなかった
複数プロジェクトを同時ビルドってのは初期値が2で最大値が32みたいだけど、これは違うよねきっと
976:名前は開発中のものです。
11/03/17 01:14:09.79 jlNSzrqd
VCに「複数プロセッサによるコンパイル」という項目がある
977:名前は開発中のものです。
11/03/17 04:33:38.84 FsTg2Syb
プロジェクトのプロパティ>構成プロパティ>C/C++>全般>複数プロセッサによるコンパイル
だな
VC++2010にはあるけど、VC++2008には無いみたいだな
978:名前は開発中のものです。
11/03/17 21:28:02.94 USLN5jlJ
2008なら/MPオプションを直接与えればいい