二つのif文が重複してしまう。
- 評価 -1
- クリップ 0
- VIEW 523
マルチポスト
数時間前から自己解決しようと頑張っているのですが、全く歯が立たず皆様の力をお借りしたいです。
少し難解であるためマルチポストで知恵を貸していただこうと思い今回のように至りました。
環境はWindows10、C言語、DXライブラリです。
使った画像が載っているサイトです。画像
行いたいこと
キーRを押してキーAでアタックします、そして、画像が右向きになり再びAを押すと連続攻撃ができるように作りたいのですが、一つ目のifの条件と二つ目のifの条件が重なってしまい連続攻撃が再現できずにいます。
問題の部分はこれです。
//playerY != enemyYよりY座標が異なる場合を表す、Y座標が異なる場合はlockの値は0になる。要はロックが解除されてしまう。
if (lock) {
if (Key[KEY_INPUT_A] == 1 && count <= 50) { //殴る//(lock){}の中に書くとロックする度にcountが0になるので意味がない
//count++; ここにcount書くとifの条件よりcountが0の時の下のlockやplayerX = enemyX - 1など条件になるため、++でcountが1になったらロックできても攻撃できないんだ
//ここのcountの情報がそのまま下の描画関数に渡されるだけ。
//if (count >= 0 && ++count > 40) {//countが0から15になるまでを一フレームで表しただけでは?ようはcountを0~1にするのに15フレームかかっただけでは?いや、単純にここにフレームは働いていないなので++count > 40と書いて39回行うはずがフレームが働かないので1しか上がっていないので一回しか攻撃が出来ないのだ
lock = 0;//lock = 1の時の「lock!!」の描画を消すためにlockの値を0に変更。
lockonMove = 0;//アタックする時 ロックオンの画像が消えるように値を0にする。
preplayerX = playerX; // 元の位置を保持
playerX = enemyX - 1; // 俺は敵の眼前へ
after = 1;//アタック状態 ここまでをアタックとしてafter = 1と置いた。
enemyImage = enemyGHandle[5];//攻撃を食らうと右向きになるようにする
count = count - 10;//キーAを押すたびに10だけ引く
count3 = count;
count2 = count2 - 1;
}
}
if (Key[KEY_INPUT_A] == 1 && enemyImage == enemyGHandle[5])//敵が右向きの時に続けてAを押すと連続攻撃ができる//相手がenemyImage == enemyGHandle[5]状態の時に他の攻撃もできるように他のキーも&&すればいい
{
count = count3 - 10;
playerX = enemyX - 1; // 俺は敵の眼前へ
after = 1;//アタック状態 ここまでをアタックとしてafter = 1と置いた。
}
以下が全体のコードです。
文字数制限でこちらのサイトに移しました。お手数をお掛けします。
全体のプログラムです
<編集>
以下のように行いました。一応理にかなっていると思うのですがうまくいきませんでした。
一つ目のifもなぜか重複してしまい50から20ずつ引かれてしまいます。なぜでしょうか。
int count2 = 1;
//playerY != enemyYよりY座標が異なる場合を表す、Y座標が異なる場合はlockの値は0になる。要はロックが解除されてしまう。
if (lock) {
if (Key[KEY_INPUT_A] == 1 && count <= 50&& count2 == 1) { //殴る//(lock){}の中に書くとロックする度にcountが0になるので意味がない
//count++; ここにcount書くとifの条件よりcountが0の時の下のlockやplayerX = enemyX - 1など条件になるため、++でcountが1になったらロックできても攻撃できないんだ
//ここのcountの情報がそのまま下の描画関数に渡されるだけ。
//if (count >= 0 && ++count > 40) {//countが0から15になるまでを一フレームで表しただけでは?ようはcountを0~1にするのに15フレームかかっただけでは?いや、単純にここにフレームは働いていないなので++count > 40と書いて39回行うはずがフレームが働かないので1しか上がっていないので一回しか攻撃が出来ないのだ
lock = 0;//lock = 1の時の「lock!!」の描画を消すためにlockの値を0に変更。
lockonMove = 0;//アタックする時 ロックオンの画像が消えるように値を0にする。
preplayerX = playerX; // 元の位置を保持
playerX = enemyX - 1; // 俺は敵の眼前へ
after = 1;//アタック状態 ここまでをアタックとしてafter = 1と置いた。
enemyImage = enemyGHandle[5];//攻撃を食らうと右向きになるようにする
count = count - 10;//キーAを押すたびに10だけ引く
count3 = count;
count2 = count2 - 1;//ここで0になる、Aを繰り返してcount2が—1になったとしてもcount2<=0より二つ目のifの条件に合うので二つ目のifが実行できるはず、、、。
}
}
if (Key[KEY_INPUT_A] == 1 && enemyImage == enemyGHandle[5]&&count2<=0)//敵が右向きの時に続けてAを押すと連続攻撃ができる//相手がenemyImage == enemyGHandle[5]状態の時に他の攻撃もできるように他のキーも&&すればいい
{
count = count3 - 10;
playerX = enemyX - 1; // 俺は敵の眼前へ
after = 1;//アタック状態 ここまでをアタックとしてafter = 1と置いた。
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
- メールアドレスの認証
メールアドレスの認証
- 質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 90.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正の依頼
LouiS0616
2019/09/21 14:51
1. 『C言語何でも質問掲示板』の方にも、当ページのリンクを貼って下さい。向こうのフォーラムルールにも目を通しましょう。相互リンクが必須と明記されています。
2. なぜマルチポストしたのか、充分な説明を書いて下さい。
LouiS0616
2019/09/21 14:53
> teratailでは、マルチポストの推奨はしていません。
やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。
https://teratail.com/help#posted-otherservice
> 複数の掲示板で同じ質問をするときは相互リンクし、どこの掲示板で同じ質問をしているか明確にして下さい。
https://dixq.net/forum/rules#board-rule-1-5
can110
2019/09/21 15:03
あなたはcarnage0216ではないでしょうか?
https://teratail.com/users/carnage0216#reply
DR.Dexter00
2019/09/21 15:17
隠しているつもりはないですが、基礎を勉強しながら、ゲームを作りたい一心で新しいアカウントを作りました。
m.ts10806
2019/09/21 15:20 編集
同一人物による複数アカウント所持は規約違反です。
can110
2019/09/21 15:21 編集
https://teratail.com/legalの「第7条(禁止事項)」の「複数のユーザーIDを1人で保有する行為」に該当(違反)していますので
アカウントを削除するなり運営に問い合わせるなり適切に対処してください。
DR.Dexter00
2019/09/21 15:23
では、もう一つの緑を消します。お騒がせしました。
どうか、過去のように基礎をおろそかにしないよう地に足をつけて勉強しています。
お力を貸してください。
m.ts10806
2019/09/21 15:26
マルチポストやめるところからですねえ。
情報を正しく整理できない人がやってはいけません。
DR.Dexter00
2019/09/21 15:28
すいません。素直にマルチポストをやっていると書けば良いと思っていました
Zuishin
2019/09/21 15:30
https://teratail.com/questions/210975
隠してますが。
DR.Dexter00
2019/09/21 15:31
zさん、すいません。
絡まれてめんどくさいのであなたには隠していました。
というのも基礎勉強しているのに馬鹿にしたり関係ないことを書かれるためです
Zuishin
2019/09/21 15:33
これはどちらかを消せば済む話ではありません。通報したら両方消されます。
運営に謝罪して今後どうすべきか指示を仰いでください。
他にもアカウントがあるのは確認しています。運営に全て報告してください。
m.ts10806
2019/09/21 15:35
マルチタスクを完璧にこなせる自信があるならいいでしょう。
全ての質問の回答に過不足なく応え、追記修正依頼に応じ、きちんと全て理解し、解決したら全ての質問を遅延なく締められる自信があるなら。
まあ、どのようにいっても規約違反をやってしまう人にフォローはできませんね。マルチポストしたくてしたくて仕方ない、しないと気がすまない人なんでしょう。
基礎勉強以前の問題が大きすぎることにいつまでも気づかないので基礎すら勉強になりません。
Zuishin
2019/09/21 15:35
それと、馬鹿にした覚えはありません。事実そのままの評価です。私の言った通り、身の丈に合ったやり方をしていれば、もっと早く成長していたはずです。
あなたが自分を過大評価しているだけです。
LouiS0616
2019/09/21 15:36
> 過去のように基礎をおろそかにしないよう地に足をつけて勉強しています。
この質問で既にその主張が破綻しています。
if文が分からない段階で手を出す課題ではありません。
どうしてもゲームを作りたいならScratchあたりを使ってみては。
DR.Dexter00
2019/09/21 15:40
私もルール違反していて悪いですが、あなた方もどこを見てもケチをつけることしかしないのですね。
呆れます。過大評価した覚えはないですよ。あなたこそ自分の汚点を認めないところは成長しないですね。
面倒なのでスルーします。
何をしても批判しかしない奴に構ってる暇はありません。
DR.Dexter00
2019/09/21 15:41
scrachで作れたら苦労しません。it系の悪口は達者ですね。大人げねぇやです。
LouiS0616
2019/09/21 15:43
CよりScratchの方が圧倒的に簡単だと思います。簡単な方から慣れるのは基本的な学習戦略の一つです。
Zuishin
2019/09/21 15:45
if すらわからないのにゲームだ VR だというのが過大評価です。
事実、できないじゃないですか。
m.ts10806
2019/09/21 15:48
自身の何が問題か分かってないのが手に取るようにわかるので、そこを「指摘」するしかないのです。
こんな質問より解決しなければならない問題が大きくて多くて誰もアドバイスしたくならないのです。
自らを省みず面倒だ悪口だ言ってる人に誰が手を貸しますかね。
何度目ですかねこの指摘。
m.ts10806
2019/09/21 15:50
「バレたら消せばいい」程度の認識でしかないですよね。「怒られたら謝ればいい」と同じで。
それってどうなんでしょ。
DR.Dexter00
2019/09/21 15:50
あなた方二人の勝手な思い込みでつべこべ言いなさるな。
私の相手してる暇あったら別の方を助けて差し上げて下さいな。
DR.Dexter00
2019/09/21 15:52
勉強始めたばっかの青二才にプロ?の方が言いたい放題、
それってどうなんでしょうか?
Zuishin
2019/09/21 15:52
いや、思い込みじゃなく、事実作れないでしょ?
作れると思い込んでるのはあなた一人です。
m.ts10806
2019/09/21 15:55
どこが思い込みなんでしょ。
客観的事実しかないですよ。どこが思い込みなのか具体的に説明してくださいな。
雰囲気じゃプログラムは動かないのと同じく、雰囲気じゃ伝わらないことの方が多いんですよ。文字だけのやりとりですし余計に。
我々が指摘していることの証拠としてこの程度の質問にいつまでも回答がつかないことが挙げられます。過去のアドバイスを積極的になかったことにしてるのがよくわかります。
DR.Dexter00
2019/09/21 15:55
そうです!おっしゃる通り!
ささ、青二才相手にしてないで、早く家に帰ってマスでもかいてください!
Zuishin
2019/09/21 15:55
勉強はじめるのが遅すぎます。まず勉強しろと二年前から言われてるはずです。
DR.Dexter00
2019/09/21 15:57
あなた方がうるさいから誰も寄り付かないんですよ。
あなた方みたいな野次馬はどの世界でもお払い箱ですよ。
わたしにも問題はありますが、そんな私を相手して炎上させるあなた方も同類ですよ
m.ts10806
2019/09/21 15:59
「始めたばかり」を自分ルールで延ばさないでください。「ばかり」が時間的に許されるのは数ヵ月でしょう。つまり、それだけの時間を無駄にしても基礎すらできていないということ。時は金なり。
我々は暇な時間に回答なりアドバイスなりしてますので大して影響はないですが、あなたはそうではないでしょう?
DR.Dexter00
2019/09/21 16:00
飲み込みと頭が悪くって
てへっとは言えませんが。
さ、私みたいな馬鹿ほっといて、他の方を助けたげてください
DR.Dexter00
2019/09/21 16:02
時は金なり!その通り!
いい勉強が出来ました。
もう帰っていいですよ。
私を相手するだけ「時間」が無駄ですよ!
時は金なりですよ!
m.ts10806
2019/09/21 16:03
誰も寄り付かない
根拠はありますか?思い込みで語るなと人には言っておいて自分は思い込みばかりですね。
回答率が下がるのは寧ろ「アドバイスしたくなるような質問ではない」「不備が多すぎる」「指摘に素直に応じない」と、質問者側の問題が大きいように感じますけど?
teratailの質問、1日にどれくらい投稿されるか見て言ってます?
質問者の増加の推移とったんですか?
あなたが寄り付かないのは自由ですが、あなたが回答率低下の一端であるのは明らかです。
やり方がマズすぎる。
m.ts10806
2019/09/21 16:04
じゃあ、全てのアカウントと質問を削除して、二度と使わないでください。お願いなので。
DR.Dexter00
2019/09/21 16:07
責任者でないあなたに言われてもなぁ。
最近は少しにしたつもりなんですが、あなたのような人がいるから寄り付かないって事も頭に入れとくといいですよ。私に会いたくないならあなたが消えれば?
自分のエゴを押し付けるのは良くないぞっ!
Zuishin
2019/09/21 16:08
エゴというか、通報すれば普通に消えますが。お目こぼしされてるだけですよ。
m.ts10806
2019/09/21 16:08
ご自身のコメントが思い込みではないという根拠が提示されないままコメントされても、なんとも。
客観的事実を提示してください。
DR.Dexter00
2019/09/21 16:10
はいはい。そうですね。
Zuishin
2019/09/21 16:11
通報します。
Zuishin
2019/09/21 16:11
しました。
m.ts10806
2019/09/21 16:12
私は「待ったところでアドバイスが無駄になることが分かってて回答する人はいないし、そんな質問残ってても誰の参考にもならないので削除して自分でなんとかしましょう」という意味合いでアドバイスしてるんですけど、消えろと言われてしまいました。
m.ts10806
2019/09/21 16:13
「私の相手をするだけ時間の無駄」と自ら名乗る人が、なぜ赤の他人を頼るのでしょう。不思議です。
DR.Dexter00
2019/09/21 16:15
勝手に通報するなりしてください。通報する価値もないので、怯えなくて大丈夫ですよ!
Zuishin
2019/09/21 16:16
いやだから、しましたって言ってるのに。過去形わかります?
m.ts10806
2019/09/21 16:18
規約も守らないルールも守らない折角のアドバイスを無駄にする人は
コミュニティにいてもらっては困るんですよ。
そういう人を運営より是正および適切な対応してもらうべくあるのが「通報」という機能です。
DR.Dexter00
2019/09/21 16:21
zは相変わらずですね。
あれをアドバイスとは、、、ただの嫌がらせにしか思えなんだよなぁ。
can110
2019/09/21 16:23
「では、もう一つの緑を消します。」と記載していますが、現状、具体的にどのような行動をとりましたか?
m.ts10806
2019/09/21 16:23 編集
複数の回答者がコメントしているのに、アンカーもつけないし勝手に略すし
そこのマナーから教えなきゃなりませんか?(そこから勉強しなおしてください。できないなら、やはり周囲に迷惑をかけるので使うべきではありません)
Zuishin
2019/09/21 16:23
そりゃ自分を過大評価してるから嫌がらせに見えるんでしょうよ。
LouiS0616 さんの親切なアドバイスも嫌がらせに見えてるんでしょう?
DR.Dexter00
2019/09/21 16:28
外出中ですよ。
cとmとzの三人がアドバイスなんてしてないでしょ。
人を巻き込むのやめた方がいいですよ。
Zuishin
2019/09/21 16:29
作りたいものを作るっていうのはね、普通は条件分岐とループをマスターして数当てゲームを作り、その次くらいの段階ですることなんですよ。
あなたはそれより二段階下なので、早すぎるんです。
バカにしてるんじゃなく、これが最もポピュラーな学習法です。
m.ts10806
2019/09/21 16:29
質問者側の大きな思い込みがあったので補足。
>私の相手してる暇あったら別の方を助けて差し上げて下さいな。
別にここにコメントしている回答者がこの質問やあなただけに注力しているわけではないのでお構いなく。
苦言多めのZuishinさんも私も別の質問や質問者を適宜フォローしています。
Zuishin
2019/09/21 16:30 編集
でもって、VR ゲームなんていうのはそれよりさらに数段階先になります。
m.ts10806
2019/09/21 16:31
>cとmとzの三人がアドバイスなんてしてないでしょ。
指摘もアドバイスのうちと捉えられないうちは素直に聞いておいた方が良いです。
DR.Dexter00
2019/09/21 16:33
なるほど、なら素直に聞くしかないですね。
zさんの苦言にはいつも傷つきます。本当にやめてほしい。
DR.Dexter00
2019/09/21 16:37
あの、出来れば、質問に対して何か、解決法を伝授してほしいのですが、
これでもいろんな方の助けを借りてdxライブラリを読んで自分なりに作り上げたんです。
少しでいいです。力を貸してください。
m.ts10806
2019/09/21 16:38
zさんって誰でしょう。
そのようなユーザーはいませんよ。
https://teratail.com/users/z
https://teratail.com/users/m
https://teratail.com/users/c
指摘されたくないならルール、マナーは遵守してください。
そしたら傷つかなくて済みます。
まあ「傷つく」と書くだけなら簡単ですし、言ってるうちは何の問題もないので
言わない方がいいです。ツッコミどころが増えるだけなので。
Zuishin
2019/09/21 16:40 編集
if 文を理解することが一番正当な解決法です。無理でも意地悪でもないはずです。
DR.Dexter00
2019/09/21 16:40
わかりました。無駄なことは極力避けます。
m.ts10806
2019/09/21 16:41
>少しでいいです。力を貸してください。
基礎を自分でなんとかしましょう。
何度も言ってますけど、指摘されて開き直る人に誰もアドバイスしたいと思いません。
だからこの程度の質問に何時間も回答がつかないのです。
LouiS0616さんの丁寧なアドバイスが受け入れられていない時点で「終わったな」という印象なので
あとは惰性で続いているだけです。
アドバイスしてもどうせ無駄になるしなー、自分で「私に構っても時間の無駄」とか言うやつだしなー。
そら、誰もアドバイスしませんわ、ということで。ではでは。
DR.Dexter00
2019/09/21 16:44
はい、その方がいいです。
私みたいな奴はこれでいいです。わざわざ無駄な時間を割いてくれてどうもー。
m.ts10806
2019/09/21 16:45
じゃ、質問とアカウント消しといてくださいね。
DR.Dexter00
2019/09/21 16:53
それは管理者の決めることですよ。大丈夫ですか?
あなたも嫌なら消してくださいね
m.ts10806
2019/09/21 16:55
質問もアカウントもユーザー自身で削除・退会することができます。
「管理者がなんとかするまで自分には何の落ち度もない」と自信をもって言ってるように見えますが、大問題です。
で、嫌なら消してって、何を?
DR.Dexter00
2019/09/21 16:59
あなたのアカウントだよ。
can110
2019/09/21 16:59
この欄の発言をざくっと要約すると
https://teratail.com/questions/210975の返答
「絡まれてめんどくさいのであなたには隠していました。」より
「では、もう一つの緑を消します。」→「外出中ですよ。」より
・やるといったことをやらない
・嘘をつく
人と判断しました。
が、よろしかったでしょうか(確認してるようで断定口調)?
m.ts10806
2019/09/21 17:01
どこで「嫌」と思い込んだんでしょう。
で、なぜ私が消す必要があるんでしょう。
客観的に説明してください。
DR.Dexter00
2019/09/21 17:01
探偵ごっこお疲れ様です。
暇人だな〜、俺の相手をしてるなんて
m.ts10806
2019/09/21 17:02
本日teratailに向けてる労力の1/10も向けてませんので、お構いなく。
大変不愉快な発言があったのでそこは通報したくらいですね。
m.ts10806
2019/09/21 17:03
あ、アンカーないから誰に言ってるかわからないや。
マナーですよ。特に質問者は不特定多数のコメントを受け入れることになります。
きちんと誰に対してのコメントか明示しないとですね。マルチポストできるって自負があるんでしょ?
それくらいできなきゃね。
can110
2019/09/21 17:06
つまり「私は嘘をつくし、やるといったことはやらないし、私の相手(回答)をする人は暇人です」
ということですね。
DR.Dexter00
2019/09/21 17:07
さすがベテラン!
m.ts10806
2019/09/21 17:08
↑誰に言ってるかわかりませんが、ルール、マナーにベテランもビギナーもありません。
can110
2019/09/21 17:15
では反論すらなく否定もないので本人も認めた以下は確定で。
「私は嘘をつくし、やるといったことはやらないし、私の相手(回答)をする人は暇人です」
thkana
2019/09/21 17:44
とりあえず、日本では、名前あるいはそれに準ずる固有名を、それなりに親しい仲ならともかく、勝手に略したり変えたり間違えたりするのは相当に失礼なこと、とされています。そのことは社会の常識として知っておくべきです。
自分がころころとハンドル/ニックネームを変えるからといって、「名前」に準じる他人のそれを大切にしなくていいということにはなりません。相手が誰であっても。
m.ts10806
2019/09/21 17:52
thkanaさん
匿名掲示板と混同してる人が多いですね。ただ、ああいった場でもレスアンカーがないと毛嫌いされる傾向にあると思います。
(私はあまり利用経験ないですが)