DirectXにて、Aキーを連打した回数をカウントしたいと思っているのですが、

int count=0;
if(DXUTIsKeyDown('A'))
{
count++;
}

のように記述しても、一回しかカウント変数にプラスされずに困っています。押すたびにカウントされるようにするにはどうすればいいのでしょうか?

A 回答 (1件)

本当にこう書いてあるのなら全く目的に合致しないコードである、ということだけはわかります。



・自動変数は有効スコープから出たら消えてしまう

という基本中の基本の話もありますが、それを置いても

・countを宣言、同時に0初期化
・「一回だけ」キー入力判定

という流れなのでcountは0か1にしかなりえません。
一番手っ取り早いのはcountを静的変数にしてしまうことですが、それで本当に最終目的に合致するかどうかはあなただけが知ることですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q福島原発 カウントダウンゼロなぜ上映中止に?

米パラマウントピクチャーズジャパンは、なぜ上映を中止させたのでしょうか?
カウントダウンゼロのあらすじを、以下に示します。

『北朝鮮にウラン濃縮施設、遠心分離器2000基!

訪朝したヘッカー米スタンフォード大教授が
20日 北朝鮮・寧辺の核関連施設でウラン濃縮の
新施設を訪れたことを明らかにした。

ウラン型は、放射能放出などの痕跡が発覚しにくく
プルトニウム型のような大規模な製造施設を必要とせず、
地下施設での作業も可能であり隠蔽性が高く、兵器化が
容易とされることからも、核の脅威はさらに高まる。

北朝鮮が過去2回実施した核実験は
いずれもプルトニウム型とされ、
プルトニウム型は実験が不可欠だが、
ウラン型は必ずしも必要としないとされている。』

核爆弾はウランのほうが、プルトニウムより簡単に製造できるとか。
核テロには、持ってこいの話ですね。

しかし東日本大震災の福島原発の事故が起こされたからって
なぜ配給が停止されねばならないのか?

これも広告会社電通テックの悪辣な報道規制か?
それとも米国の報道規制かよく判らないです。

ご存知の方教えて下さい。

米パラマウントピクチャーズジャパンは、なぜ上映を中止させたのでしょうか?
カウントダウンゼロのあらすじを、以下に示します。

『北朝鮮にウラン濃縮施設、遠心分離器2000基!

訪朝したヘッカー米スタンフォード大教授が
20日 北朝鮮・寧辺の核関連施設でウラン濃縮の
新施設を訪れたことを明らかにした。

ウラン型は、放射能放出などの痕跡が発覚しにくく
プルトニウム型のような大規模な製造施設を必要とせず、
地下施設での作業も可能であり隠蔽性が高く、兵器化が
容易とされることからも、核の脅...続きを読む

Aベストアンサー

福島県人に、いや日本国民に知られては困ることが起きているからです。東電福島第一原発事故は皆さんが知っている以上に深刻な、解決不可能な事実の可能性を持っていますので、国民に不安を与える映画の上映が規制されたのです。

Qtry{}catch(){}とデストラクタの関係を教えてください。

try-catchでメモリ確保を含むクラスをスローした場合、デストラクタはどの時点で働くのか、教えてください。たとえば、↓の使いかたは大丈夫でしょうか?

【1】
try{
 throw(CError(100, "エラー情報"));
}catch(CError& err){
 //ここでerrを参照しても問題ないのでしょうか?
}

【2】
try{
 CError err(100, "エラー情報");
 throw(err); // (1)
}catch(CError& err){
 //ここでerrを参照しても問題ないのでしょうか?
 //まだデストラクタはちゃんと動作するのでしょうか?
 //catchが呼び出し元のメンバであったりしても大丈夫なのでしょうか?
}

宜しくお願いします。

Aベストアンサー

【1】【2】どちらの場合も問題がありません。
コンパイラが必要に応じてerrオブジェクトのコピーを作成します。
デストラクタが呼び出されるタイミングはコンパイラに依存するところもあると思いますが、
例えばVC7.1では【2】は以下のように動作します。
(1) errオブジェクトのコンストラクタが呼び出される
(2) CErrorクラスのテンポラリオブジェクト(以下a)のコピーコンストラクタが呼び出される。
(3) errオブジェクトのデストラクタが呼び出される
(4) catch文まで到達
(5) aオブジェクトのデストラクタが呼び出される。

VC7.1では、【1】は以下のように動作します。
(1) errオブジェクトのコンストラクタが呼び出される
(2) catch文まで到達
(3) errオブジェクトのデストラクタが呼び出される。

コンパイラがオブジェクトのコピーを省略しているようです。

Qテニスはカウントの時、なぜゼロをラブと言うのでしょうか?

タイトルの通りです。テニスはカウントの時、なぜゼロをラブと言うのでしょうか?(質問前に検索したんですが出てきませんでした。)宜しくお願いします。

Aベストアンサー

どぞー。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=765927

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=765927

Q{x = x>y ? x:y; return x;}

#include <iostream>
using namespace std;

inline int max(int x, int y){x = x>y ? x:y; return x;}

int main()
{
int num1, num2, ans;

cout << "2つの整数を入力して。\n";
cin >> num1 >> num2;

ans = max(num1, num2);

cout << "最大値は" << ans << "です。\n";

return 0;
}
の{x = x>y ? x:y; return x;}の部分の意味が解りません。

Aベストアンサー

inline int max(int x, int y){x = x>y ? x:y; return x;}
これを普通に関数で書くと

int max(int x, int y)
{
x = x>y ? x:y;
return x;
}

です。

x = 部分は右辺の結果が代入されます。これはわかりますよね。
x>y?x:y;
と書くと?より左にある条件式を判定し、その結果が真である場合は:で区切られた左側の値を、偽である場合は右の値を帰します。
x>yが真であればxを、偽であればyを返します。
それが、左辺値xに代入され、関数の戻り値として帰ります。

従って、2つの値をこの関数に入れると、大きいほうの値が帰ることになります。

QPCがいきなり再起動する

ノートパソコンを使っているのですが
最近PCを使っていると
いきなり画面が青くなりよくわからない英語が出て
左端に数字が出てゼロからカウントが始まり百になると
再起動を始めるのですが
どうすればよいのでしょうか

Aベストアンサー

ブルーバックと呼ばれるもので、PC内に何らかのエラーが起こっています。
それが何のエラーなのかはこの情報では少しわかりません。
もしかすると、ハードディスクの可能性もあるので、バックアップを取っておいたほうがいいでしょう。

原因として多いのは、
1.OSの不具合「システムファイルの破損」

2. ハードディスクの不具合

3. CPUが原因

4. マザーやグラボの故障

5. メモリなどその他色々
があります。

青くなった画面にエラーコードが表れるはずです。
例えば、
「STOP: 0x00000001 APC_INDEX_MISMATCH 」

100秒しかありませんが青くなったときに控えてまた教えてください。

Qint nII[10] = { 0 }について

久々にCを使ってプログラムを組んでいるのですが、基本的な構文を思い出せず
いくつか教えていただきたく質問させていただきました。

1)配列すべてを初期化するのに、宣言時に

int nII[10] = { 0 };

で大丈夫だった(全ての要素が0で初期化)と記憶しているのですが、間違いないでしょうか?

2)構造体の初期化は

struct tm tm;
memset(&tm, 0, sizeof(struct tm))

で大丈夫でしょうか?

3)構造体の宣言は

typedef struct{
int a;
}HOGE, *LPHOGE;

HOGE st; // <- struct HOGE stと同じ
LPHOGE pst; // <- struct HOGE* pstと同じ

で問題ないでしょうか?

以上、3つ質問になって申し訳ないのですが、よろしくお願いします。

Aベストアンサー

1)OK
2)たぶんOK
3)HOGEという名前の構造体はない(当該の構造体には名前がない)ので、
// 以下のコメント記述が誤っています。ただし、

HOGE st;
LPHOGE pst;
という定義そのものはOK

Qてくてくエンジェルの歩数がカウントされないのは何故?

楽しくウォーキングできそう!ということで、通販で、「散歩育成計てくてくエンジェルwithDSてくてく日記」を購入しました。昨日届いたばかりです。
取扱説明書通りに設定を行い、いざ歩いてみたのですが……歩数がゼロのままで動かないのは何故でしょうか?
歩いた時の状況は以下の通りです。
・ジャージを履き、スニーカーを履いていた。動きやすい服装。
・ジャージのポケット(横側)にてくてくエンジェルを入れていた。
・てくてくエンジェルは、特に傾いたりはしていなかった。(地面に対して垂直なまま。)
・近所の道路を、5分程度、休みなしで歩き続けた。
・背筋を伸ばし、意識してしっかりと歩いた…つもりです。

歩いてきてから1時間以上経っているのですが、歩数カウントはゼロのまま、全く変化なしです。
取扱説明書に「使用後すぐにはカウントされず、ある一定のタイミングでまとめてカウントされることがあります」とはあるのですが…この一定のタイミング、というのは、数時間以上経ってからなのでしょうか?
それとも、私の歩き方がまずいのでしょうか?もっと何十分か歩かないと、カウントされないということでしょうか??
直接、バンダイに問い合わせた方が良いのでしょうか?

解決方法をご存知の方・解決方法の予測が付く方など、何かアドバイスをいただけるとありがたいです。
どうか宜しくお願いします。

楽しくウォーキングできそう!ということで、通販で、「散歩育成計てくてくエンジェルwithDSてくてく日記」を購入しました。昨日届いたばかりです。
取扱説明書通りに設定を行い、いざ歩いてみたのですが……歩数がゼロのままで動かないのは何故でしょうか?
歩いた時の状況は以下の通りです。
・ジャージを履き、スニーカーを履いていた。動きやすい服装。
・ジャージのポケット(横側)にてくてくエンジェルを入れていた。
・てくてくエンジェルは、特に傾いたりはしていなかった。(地面に対して垂直なまま。)
...続きを読む

Aベストアンサー

私も使ってます!

使っていてカバンの内ポケットに入れているほうが感度が高いかな、と思う様になりました。
でも、その条件で一時間も歩いてゼロのままっていうのはおかしいですよ。
電池を入れ替えて、もう一回設定をやり直してみてください。
それでダメなら初期不良の可能性があるので、買ったお店に問い合わせてみてください。
簡単な説明でしたが参考になれば幸いです。

Qvoid (*signal(int signum, void (*handler)(int)))(int);

の解釈を教えてください
最後の「(int)」については詳しくお願いします

Aベストアンサー

signalが

(1)1つ目の引数の型:int
(2)2つ目の引数の型:引数がintで戻り値がvoidである関数へのポインタ
(3)戻り値の型:引数がintで戻り値がvoidである関数へのポインタ(2と同じ)

を満たす関数である事を宣言しています。最後の(int)はsignalの戻り値の
関数ポインタがint型の引数を持つ事を示しています。

「引数がintで戻り値がvoidである関数へのポインタ」の型をHANDLERと表すと

HANDLER signal(int signum, HANDLER handler);

となります。

Qauの携帯電話を機種変ではなく新規にする時

auの携帯電話を機種変ではなく新規にしたいのですが、この場合番号は当然変わりますがメールアドレスは以前のまま使えますか?また新規にすると料金的に機種変よりも損する部分ってありますか?たとえば使用して何ヶ月だからポイントがたまる、とかのカウントはまたゼロからのスタートになるのかそれともAU電話を使い出してからのカウントなのかどうなんでしょう。わかりにくくてすいません。

Aベストアンサー

3年以上使われているのであれば機種変でもいいですが、それ以前なら解約→新規の方が断然安いです。
ただ、ポイント、年割については0からになってしまいます。
また、メールアドレスも新しいものにする必要があります。
現在の機種を何年お使いになられているのでしょうか?

Qchar AA[]{"全角文字"};から"全"という一字を取り出したい

 今晩は、Cの初心者です、宜しくお願いします。
 全角文字の入ったchar AA[]{"全角文字"};から"全"という文字一字を取り出す時にAA[0]とかくとエラーになります。
 どのようにしたら取り出せるのでしょう。
 ポインタを使う方法と使わない方法を教えて下さい。
 宜しくお願いします。

Aベストアンサー

お疲れ様です。

まずお伺いしたのがOSおよび開発するためのコンパイラです。

ロケール等の話は分かりませんが、昔のC言語で日本語を扱う場合には全角文字1文字で2個つのchar領域を使用していました。
(マルチバイト文字セットと言います。)

詳細は参考URLを参照の事。

windowsでVCと仮定した場合、charを使われていると言うことは、多分、shift-jis(シフトJIS)で文字列を扱っていると思われます。

結論として全角文字1文字だけを取り出したいという場合は、結局char2個分のデータを取り出す必要があります。

>char AA[]={'全','角'};

char AA[]="全角";
とし
>printf("%s%s\n" , AA[0],AA[1] ) ;

printf("%c%c\n" , AA[0],AA[1] ) ;
とすれば、「全」だけを表示する事が可能と思われます。

日本語を文字列で表示する為の文字コードについては
Shift-JISだけでなく、UnicodeやUTF・EUC・JISなどがあります。

もう少し詳しく記載してあるホームページはないか探してみましたが、ちょっと無理でした。

参考URL:http://marupeke296.com/CPP_charUnicodeWideChar.html

お疲れ様です。

まずお伺いしたのがOSおよび開発するためのコンパイラです。

ロケール等の話は分かりませんが、昔のC言語で日本語を扱う場合には全角文字1文字で2個つのchar領域を使用していました。
(マルチバイト文字セットと言います。)

詳細は参考URLを参照の事。

windowsでVCと仮定した場合、charを使われていると言うことは、多分、shift-jis(シフトJIS)で文字列を扱っていると思われます。

結論として全角文字1文字だけを取り出したいという場合は、結局char2個分のデータを取り出...続きを読む


人気Q&Aランキング