ページ 11

addattacktimeが0のままです。

Posted: 2019年9月30日(月) 03:30
by Ouxiy
以下のようにaddattacktimeが0になった際にaddattacktimeを501にする処理を書いたのですが、なぜか0のままです。ですがaddattacktime が501でないのにcountとKcountはしっかり働きます。
なぜ0のままなのでしょうか。またなぜaddattacktime が501でないのにcountとKcountはしっかり働くのでしょうか。

if (addattacktime == 0) {//addattacktime == 0だと初期値と被ってしまうので0より小さいとした。
playerX = preplayerX;
playerImage = playerGHandle[4];
addattacktime = 501;//addattacktimeが0にると、元の位置に戻る


//if (count < 50) ++count;//これにより連続で攻撃してもif (Key[KEY_INPUT_A] == 1 && enemyImage == enemyGHandle[5])を考慮して連続攻撃ができる!
//★あるフレームが進んでから画像がを動くまでを遅くした、ならば、あるフレームが進んだら数字も次の数字に移るまで遅くできるのは?と考えた。
if (addattacktime = 501 && count < 50) ++frames;//framesが5で割りきれる時に+countが+1されいく。//countが50より小さい時、framesがフレームにより+1ずつされていき、10で割り切れる際にcountが50になるまで+1される、++により最初+1が追加され49かい+1されるので結果的にcountは50になる。
if (frames % 5 == 0) {
++count; if (count > 50) { count = 50; }//★上限はないためcountが49より大きくなったらcount = 50により50にする。
}
if (addattacktime = 501 && Kcount < 50) ++frames;
if (frames % 20 == 0) {
++Kcount; if (Kcount > 50) { Kcount = 50; }//★上限はないためcountが49より大きくなったらcount = 50により50にする。
}//★++が>よりも優先順位により優先されるため、というか単純に+1されいくため、その先で条件によって(&&とは違い強制ではなく)Kcount > 50ならばcount = 50となっただけである。
}
以下は全体のコードです。
https://pastebin.com/SJZLZu6a

Re: addattacktimeが0のままです。

Posted: 2019年9月30日(月) 06:02
by malch
質問そのものの回答ではないですが
コンパイラの警告レベルをあげるのはどうでしょうか。
ソースコード上の怪しい箇所の情報が得られるので
多少は自己解決に役に立つと思います。

以下はVisualStudioでの警告レベルの上げ方です。
1.プロジェクトのプロパティを開く
(メニュー>プロジェクト、またはソリューションエクスプローラーのプロジェクト名の上で右クリックからプロパティを選ぶ)
2.左側のリストから、構成プロパティ>C/C++>全般を選択する
3.右側の警告レベルの設定値を「レベル4(/W4)」に変更する
4.OKを押す

警告レベル4に上げた状態で「pastebin.com/SJZLZu6a」のソースコードを
source.cppという名前で保存してビルドすると次のような警告が表示されました。

source.cpp(77): warning C4189: 'count3': ローカル変数が初期化されましたが、参照されていません
source.cpp(84): warning C4189: 'addattackimage': ローカル変数が初期化されましたが、参照されていません
source.cpp(82): warning C4189: 'attackdamage': ローカル変数が初期化されましたが、参照されていません
source.cpp(74): warning C4189: 'after': ローカル変数が初期化されましたが、参照されていません
source.cpp(214): warning C4706: 条件式の比較値は、代入の結果になっています。
source.cpp(218): warning C4706: 条件式の比較値は、代入の結果になっています。

比較するつもりが代入になっていたときになどにすぐに気づくことができますよ。
試してみてください。