このスレッドはロックされています。記事の閲覧のみとなります。
トップページ > 記事閲覧
元のマスに戻ったあと前のマスに行けない
名前:マーク42 日時: 2019/09/27 02:10

問題があります。 1、ロックオンして攻撃して、addattcktimeを利用して追加攻撃をした後に元の位置に戻るのですが、 なぜか前のマスに進めません。 2、if文で攻撃を食らった時のみ敵が右を向くように作ったんですが、戦闘開始状態からずっと右を向いたままでいます。 以下を加えてからそうなることはわかったのですが、なぜそうなるのか原因はわからずにいます。 敵は基本、ダメージを受けた時のみenemyImage = enemyGHandle[5]となるので最初から右向きの状態で始まることはないのですが、 どこかで間違ったことを書いてしまっているのかもしれません。 if (enemyImage = enemyGHandle[5]) { stopenemytime = 1; ++frames; if (frames % 20 == 0) { ++stopenemytime; if (stopenemytime > 50) { stopenemytime = 0; }//★上限はないためcountが49より大きくなったらcount = 50により50にする。 }//stopenemytimeが0になれば初期値扱いなので通常通りの動きとなる。enemyGHandle[5]のまま動くことは出来ないため、この方法の方が簡単かもしれない。 } 3、以下のように攻撃を食らったら敵が右横を向くように作り、if文で右を向いた場合キーKによりダメージが入るはずなのですがうまく機能しません。 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; // 俺は敵の眼前へ if (playerX == enemyX - 1) { preplayerX; playerImage = playerGHandle[4]; }//敵の前に言ったら、移動する前の残像が残る。 //after = 1;//アタック状態 ここまでをアタックとしてafter = 1と置いた。 enemyImage = enemyGHandle[5];//攻撃を食らうと右向きになるようにする count = count - 50;//キーAを押すたびに10だけ引く addattacktime = 500; zannzou = 20; if (enemyGHandle[5]) { enemyHP = enemyHP - 50; }//if (Key[KEY_INPUT_A] == 1 && count <= 500)に直接enemyHP = enemyHP - 50;を書き込むか、殴るが成立した時にif (enemyGHandle[5]) { enemyHP = enemyHP - 50; }と書いても良い。 } の後に以下を付けたしました。 if (Key[KEY_INPUT_K] == 1 && Kcount == 50) {//攻撃がキックだった場合 Kcount = Kcount - 50;//キーKを押すたびに50だけ引く if (enemyImage = enemyGHandle[5])//攻撃を食らうと右向きになるようにする { enemyHP = enemyHP - 50; playerImage = playerGHandle[4]; addattacktime = 500; } } 何度も読み直しているのですがどこが変なのかわかりません。 以下は全体のコードです。 #include "DxLib.h" int Key[256]; int gpUpdateKey() { char tmpKey[256]; GetHitKeyStateAll(tmpKey); for (int i = 0; i < 256; i++) (tmpKey[i] == 0) ? (Key[i] = 0) : Key[i]++; return 0; } int stage[4][7][2]; // 盤上のマスの格子点の座標 int pos[3][6][2]; // キャラ描画座標 void init_stage() // stage と pos を初期化する { for (int j = 0; j < 7; j++) { int w = (j - 3) * 100, h = 300; for (int i = 4; --i >= 0; ) { stage[i][j][0] = w + 400, stage[i][j][1] = h - 100; w = w * 9 / 10, h = h * 9 / 10; } } for (int i = 0; i < 3; i++) for (int j = 0; j < 6; j++) { pos[i][j][0] = (stage[i][j][0] + stage[i + 1][j + 1][0]) / 2 - 25; pos[i][j][1] = (stage[i][j][1] + stage[i + 1][j + 1][1]) / 2 - 65; } } int White; int function_status;//戦闘画面中は1とするための変数function_statusの定義 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { SetGraphMode(780, 680, 32); // ウィンドウの大きさを指定 ChangeWindowMode(TRUE); // 全画面ではなくウインドウを使用 if (DxLib_Init() == -1) return -1; // DXライブラリ初期化処理 SetDrawScreen(DX_SCREEN_BACK); // 裏画面を使用する設定 init_stage(); // stage, pos の初期化 int enemyX = 4, enemyY = 1; // 敵の位置 int playerX = 1, playerY = 1; // 俺の位置 int enemyMove = 0; // 敵の移動状態 // 俺の移動状態//1〜21で右に振り向きのプログラム@が終わり、22になったら足踏みするAを実行するようにする。 int playerMove = 1; int lockonMove = 0; int lockonHandle[3]; function_status = 1;//最初は1にして戦闘画面状態にする。 int lock = 0; // ロック状態 int enemyGHandle[12]; // 敵のグラフィックハンドル格納用配列 int playerGHandle[12]; // 俺のグラフィックハンドル格納用配列 // 0-2:後ろ向き、3-5:右向き、6-8:前向き、9-11:左向き LoadDivGraph("charall.png", 12, 3, 4, 49, 66, enemyGHandle); LoadDivGraph("charall.png", 12, 3, 4, 49, 66, playerGHandle); SetTransColor(255, 255, 255); // 読み込む画像の前にこいつを置くことで透明化できる。ループ内にも書いて正しく動くが毎回読み込むようになってしまうため処理が遅くなる。 LoadDivGraph("lockon.bmp", 3, 3, 1, 23, 23, lockonHandle);//なので、一度読み込むだけ画像は使えるし、処理を遅くしないためにループに入る前かつWinMainの中に書いた。 int enemyImage = enemyGHandle[11]; // 敵 左向き int playerImage = playerGHandle[4]; // 俺 右向き int lockImge = lockonHandle[3]; int preplayerX = 0; int after = 0; unsigned int count = 50; int count2 = 50; unsigned int count3 = 50; int Kcount = 50;//キック攻撃のゲージ int Kcount2 = 50; int attackdamage = 0;//殴る際の攻撃判定として作った。 int addattacktime = 0;//追加攻撃をするための変数 int addattackimage = 20;//描画するための追加アタックのためのゲージ int zannzou = 20; int frames = 0; // フレーム数 int stopenemytime = 0; const int MOVE_INTERVAL = 1000; // 何ミリ秒ごとに移動処理をするか int nextMoveTime = GetNowCount() + MOVE_INTERVAL; // 次回移動処理をする時刻 int stopCount = 0; // 動かないのがあと何回か int enemyHP = 300;
メンテ

Page: 1 | 2 | 3 | 4 | 5 |

Re: 元のマスに戻ったあと前のマスに行けない ( No.48 )
名前:マーク42 日時:2019/10/08 19:56

if(count < 50) ++frames; if(frames % 5 == 0) { ++count; if(count > 50) { count = 50; } } if(Kcount < 50 && count >= 50) ++frames;//すでに足されているときはしない if(frames % 20 == 0) {      ++Kcount; if(Kcount > 50) { Kcount = 50; } } に関しては、最初のif文のframesと次のif文のframesが被らないようにして、要は同じframesの変数の値では+1されてしまうので 前と後で条件を違うようにすることでframesがお互いに各自+1していくので、前の文のframesを引き継いで+1しないので、 && count >= 50が必要と理解できました。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.49 )
名前:マーク42 日時:2019/10/08 20:00

しかし、 0,1,2,3,4,,,frames=5の時、if(frames % 5 == 0)を満たし、6,7,8,9,frames=10の時、if(frames % 5 == 0)を満たし、 11,12,13,14,frames=15の時、if(frames % 5 == 0)を満たし、16,17,18.19.frames=20の時、if(frames % 20 == 0)を満たします。 この時点で同時に上がらないにしてもcountは3、Kcountは1となると考えたので以下のプログラムでもいいのかな。と思ってしまいました。 if(count < 50) ++frames; //count=0,Kcount=0,frames=20 if(frames % 5 == 0) { //framesが20なので条件を満たす ++count; //count=1,Kcount=0,frames=20 if(count > 50) { //countが50以下なので満たさない count = 50; } } if(Kcount < 50) ++frames;      //count=0,Kcount=0,frames=21 if(frames % 20 == 0) { //framesが21なので条件を満たさない      ++Kcount; if(Kcount > 50) { Kcount = 50; } } 実際は同時に上がらないのでcountは3、Kcountは0です。 ですが、なぜ以上のようにcountは3、Kcountは1とならないのか理由がわからないです。 どうかよろしくお願いいたします。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.50 )
名前:どん 日時:2019/10/08 21:34

%の演算子は剰余ですよ frames % 5 == 0 この式はframesが5の倍数つまり,0,5,10,15,20,... frames % 20 == 0 はframesが20の倍数つまり,0,20,40,... のときにtrueとなります
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.51 )
名前:マーク42 日時:2019/10/09 00:42

ご親切にどうもありがとうございます! だんだん理解出来てきました。本当にありがとうございます。 ちなみに、興味本心で if(count < 50) ++frames; //count=0,Kcount=0,frames=19 if(frames % 5 == 0) { //framesが20なので条件を満たす ++count; //count=1,Kcount=0,frames=19 if(count > 50) { //countが50以下なので満たさない count = 50; } } if(Kcount < 50) ++frames;      //count=0,Kcount=0,frames=20 if(frames % 20 == 0) { //framesが20なので条件を満たさない      ++Kcount; if(Kcount > 50) { Kcount = 50; } } の順序を変えて、 if(Kcount < 50) ++frames;      //count=0,Kcount=0,frames=20 if(frames % 20 == 0) { //framesが20なので条件を満たさない      ++Kcount; if(Kcount > 50) { Kcount = 50; } } if(count < 50) ++frames; //count=0,Kcount=0,frames=19 if(frames % 5 == 0) { //framesが20なので条件を満たす ++count; //count=1,Kcount=0,frames=19 if(count > 50) { //countが50以下なので満たさない count = 50; } } としたのですが、Kcountからではなく、countから上がったのは 「小さい値の方からif文に入ってきた」ため、framesは5の倍数の方が先に入り、20の倍数の時は先にif(count < 50)に入り、 其のあと、if(Kcount < 50)に入るが++framesにより21の倍数になってしまうためKcountは上がらないまま、 そして、countが50になった時、もう上げる必要がないため、if(count < 50)を通らずにif(Kcount < 50)に行くため、Kcountが上がり始めるとわかりました! なので、やっと理解できました。 どうもありがとうございます。 そして、理解を深めるために以下のように勉強しました。 if (count < 50) ++frames; //count=0,Kcount=0,frames=19 if (frames % 20 == 0) { //framesが20なので条件を満たす ++count; //count=1,Kcount=0,frames=19 if (count > 50) { //countが50以下なので満たさない count = 50; } } if (Kcount < 50) ++frames;//count=0,Kcount=0,frames=20 if (frames % 5 == 0) { //framesが20なので条件を満たさない ++Kcount; if (Kcount > 50) { Kcount = 50; } } とすると、Kcountが先に上がり、50になったら、countが上がり始めるので、 (frames % X == 0)の部分のXの数値により優先順位が変わるとわかりました。 ただ以下のようにすると if (Kcount < 50) ++frames;//count=0,Kcount=0,frames=20 if (frames % 20 == 0) { //framesが20なので条件を満たさない ++Kcount; if (Kcount > 50) { Kcount = 50; } } if (count < 50) ++frames; //count=0,Kcount=0,frames=19 if (frames % 5 == 0) { //framesが20なので条件を満たす ++count; //count=1,Kcount=0,frames=19 if (count > 50) { //countが50以下なので満たさない count = 50; } } countが先に上がるかと思いましたが、なぜかcountとKcountが同時に上がっていきました。 これはなぜなのでしょうか。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.52 )
名前:マーク42 日時:2019/10/09 00:48

すいません。間違えたものを書いていました。 そして、理解を深めるために以下のように勉強しました。 if (count < 50) ++frames; //count=0,Kcount=0,frames=19 if (frames % 20 == 0) { //framesが20なので条件を満たす ++count; //count=1,Kcount=0,frames=19 if (count > 50) { //countが50以下なので満たさない count = 50; } } if (Kcount < 50) ++frames;//count=0,Kcount=0,frames=20 if (frames % 5 == 0) { //framesが20なので条件を満たさない ++Kcount; if (Kcount > 50) { Kcount = 50; } } とすると、Kcountが先に上がり、50になったら、countが上がり始めるので、 (frames % X == 0)の部分のXの数値により優先順位が変わるとわかりました。 のプログラムの部分は if (Kcount < 50) ++frames;//count=0,Kcount=0,frames=20 if (frames % 5 == 0) { //framesが20なので条件を満たさない ++Kcount; if (Kcount > 50) { Kcount = 50; } } if (count < 50) ++frames; //count=0,Kcount=0,frames=19 if (frames % 20 == 0) { //framesが20なので条件を満たす ++count; //count=1,Kcount=0,frames=19 if (count > 50) { //countが50以下なので満たさない count = 50; } } です。 このプログラムの時はKcountが先に上がり、50になったら、countが上がり始めるので、 (frames % X == 0)の部分のXの数値により優先順位が変わるとわかりました。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.53 )
名前:通りすがりん 日時:2019/10/09 01:16

> だんだん理解出来てきました。本当にありがとうございます。 いいえ、全然理解できていないですよ。 次に貼り付けられたソースのコメントを見ると全く理解できているようには見えません。 回答者の皆さんのソースをつぎはぎで動かしてできたふりを繰り返しているから、いつまでたっても理解できないんですよ。 ---以下、マーク42さんのソース先頭部分--- if(count < 50) ++frames; //count=0,Kcount=0,frames=19  ←ここでframes=19なのに if(frames % 5 == 0) { //framesが20なので条件を満たす ←なぜかframes=20になっている?ひとつ前のif文でインクリメントされたと解釈するも、 ++count; //count=1,Kcount=0,frames=19  ←ここでまたしてもframes=19になっている。なんでデクリメントされているのか? if(count > 50) { //countが50以下なので満たさない count = 50; } } if (Kcount < 50) ++frames;//count=0,Kcount=0,frames=20         ←さっきまでframes=19だったのに今度はframes=20になっている if (frames % 5 == 0) { //framesが20なので条件を満たさない ←frames=20なのに条件を満たさない?frames=20だったら20 % 5==0を満たすかどうかですがそれさえ理解していないと判断。 //以下略 ---ここまで--- インデントもコメントもめちゃくちゃなので、その先の説明は読むまでもなく間違っているとわかります。 今までさんざんprintfデバッグなりステップ実行デバッグなりの有用性を提案されているにも関わらず、 相変わらずそれをやろうとしないのですかね? きちんとデバッグしていれば上記のコメントはおかしいと気が付けるはずです。 良薬は口に苦しですが、そのうち下記の時のように逆切れ、暴言を吐き始めますかね。 いい加減に回答者さんのソース寄せ集めで動かしてみるだけのプログラミングごっこは勘弁していただきたい。 ttps://teratail.com/questions/213060
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.54 )
名前:マーク42 日時:2019/10/09 02:32

テラテイルからわざわざ私の勉強の仕方にいちゃもんつけに来たのならばやめてください。 debugは行いました。ですが原因がわからなかったため、ここでどんさんにお応えして頂いているのです。 なにも知らないで言いたいことだけいうのはやめてください。 プログラミングごっこがしたいならば他でやってください。 文章の書き方からあなたが誰なのか見当はついています。ネットストーカーのように追いかけて来ないでください。私以上に迷惑です。 私の理解の悪さでどんさんにご迷惑をかけていることはわかっています。 ですが、そこで横入りされるとせっかくの理解がなくなってしまいます。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.55 )
名前:アナザー通りすがり 日時:2019/10/09 02:57

通りすがりんさんもおっしゃっていますが、まずインデントをしっかりした方がいいです。 初心者、中級者、上級者関係なく、変に凝った(変則的な?)組み方は止めた方がいいと思います。 変則的な組み方が許される場面は、その組み方によって性能が劇的に向上する場合のみです。 細かいインデントや変数名などはチーム開発を行う場合でなければ、かなり厳密に自らコーディング規約や 命名規則を設けるべきです。定数なども利用しましょう。 さて、ここまで色々な質問を拝見させていただいた限りだとカウントの加算/減算に振り回されているような印象を受けます。 こういう時こそ関数の出番だと思うのですが // 関数定義 int GetCount(int value, int min, int max) { if(value > max) { return max; } if(value < min) { return min; } return value; } 上記のような関数を作っておけば // 呼び出し(カウンター加算) int a; a = GetCount(a + 1, 0, 50); // 呼び出し(カウンター減算) int b; b = GetCount(b - 1, 0, 50); とするだけで、かなりの数のif文を書かなくて済むハズです。 if文の数が減る = ソースが短くなる = ソースの可読性が向上する、良いことだらけです。 ただし、このような関数を利用したとしてもマーク42さんがご自身のプログラムの仕様を ハッキリと認識できていない場合は、やっぱり変なバグを埋め込むことになると思うので その状態で色々なところで質問したとしても、焼け石に水だと思われます。 最後に > いい加減に回答者さんのソース寄せ集めで動かしてみるだけのプログラミングごっこは勘弁していただきたい。 たとえ今のゲームをなんとか完成に漕ぎ着けたとしても、このような指摘を受ける状態で果たして 自分が作り上げた!と堂々と胸を張って言えますか?
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.56 )
名前:マーク42 日時:2019/10/09 04:31

最後に > いい加減に回答者さんのソース寄せ集めで動かしてみるだけのプログラミングごっこは勘弁していただきたい。 たとえ今のゲームをなんとか完成に漕ぎ着けたとしても、このような指摘を受ける状態で果たして 自分が作り上げた!と堂々と胸を張って言えますか? 言えるようで言えないと思います。 ですが、自分が作ったと胸を張る必要はあるのでしょうか? 私のようにできない人間は時には誰か様に頼るしかないのです。 もちろん、一から何もかも自分で作れていません。ですが、作ろうと考えなければ何も生まれていませんでした。 逆にお聞きしたいのですが、そんなに一人で何でも作ることはそんなに必要なのでしょうか。 どんなものも一人で100%作ることは出来ないと思います。そして、いろんな人に知恵や考えを貸してもらって作られたものがほとんどだと思います。 それに関して、胸を張って自分が作り上げたではないですが、自分も頑張った部分があるなどと胸を張ってはいけないですか? アナザー通りすがりさんが何もかも自分のみで作れるならば私のような人間の作ったものは胸を張って作ったとは言えないかもしれませんが。 うまく伝わっていない部分も多いですが、プログラムは理解しているつもりです。 ですが、まだまだ未熟なことは確かです。今回のような指導を受けているようでは、自分で作ったとは正直言えないです。 厳密には自分と周りの人の協力で作ったという形です。ただ、私も勉強になることが多いです。そして、今回のプログラムを作っていく上で 技術の向上やスキルアップにつながり、誰かに頼らなくても自分でコードが作れればと思っています。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.57 )
名前:マーク42 日時:2019/10/09 04:43

関数に関して、わざわざ載せて頂きありがとうございます。 もともとプログラマーに自分が向いていないこともありますが、短く書いてしまうとどうも読みにくくなってしまうことがあります。 ですが、今後協力して頂けるかもしれない方に読んで頂く際に汚いコードでは申し訳ないので、考えたいと思います。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.58 )
名前:もってぃ 日時:2019/10/09 06:20

1から100まで他人頼みだからどこにいっても同じ扱いうけるんすよ。 他人同士Give and Takeでしか成り立たないのにあんたは何をGiveしてくれるんだい? 「理解してくれて良かった」「成長してくれた」感覚すらも誰にも伝わってないのに気づかないかい? 同じ扱いされてるのがその証明さ。口だけじゃプログラムもコードも動かないんすよ。オーケー?
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.59 )
名前:もってぃ 日時:2019/10/09 06:24

あと人も動かない 結局自分に損しかないってことさ あんたは全部点なんだよ 線や面、いや立体的に物事を考えられないやつは プログラミングに向いてないだけじゃなく他人にも不利益しか与えないのさ プログラミングに限らずだけどな
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.60 )
名前:アナザー通りすがり 日時:2019/10/09 06:38

> 逆にお聞きしたいのですが、そんなに一人で何でも作ることはそんなに必要なのでしょうか。 > どんなものも一人で100%作ることは出来ないと思います。そして、いろんな人に知恵や考えを貸してもらって作られたものがほとんどだと思います。 > それに関して、胸を張って自分が作り上げたではないですが、自分も頑張った部分があるなどと胸を張ってはいけないですか? > アナザー通りすがりさんが何もかも自分のみで作れるならば私のような人間の作ったものは胸を張って作ったとは言えないかもしれませんが。 この質問で、なんとなくあなたの考え方が分かったような気がします。 世の中の色々な物事について、確かにマーク42さんのおっしゃる通り最終的には色々な人の知恵や考えが形になっていると思います。 ですが、それは何もかもを1から10まで教え合って形作られているものではありません。 たとえば、C言語の言語仕様や基本構文、デバッグの方法などをちゃんと理解出来ていれば、マーク42さんの質問は半分以下に減ったと思います。 「何故かここでカウントがマイナスされてしまう」というような質問をする前に、ブレイクポイントを設置して、該当部分で処理を止めて 変数の値を見れば、どこでカウントがマイナスされてしまったかは一目瞭然です。 このやって然るべき努力(自らのソースをしっかりと解析する)をせずに質問している(様に見受けられる)ために、他の方々の顰蹙をかっているのです。 勉強や仕事でも同じことで、同じような質問を何度も繰り返している人は敬遠されます。 あなた以外の質問を見てみると分かりやすいと思いますが、基本的にDXライブラリに関する質問が大半を占めていると思います。 たとえば、CheckSoundMem関数でサウンドハンドルを引数で渡すことにより、そのサウンドハンドルが再生中かどうかを調べることはできますが 逆に、今再生中のサウンドのサウンドハンドルを知る方法はありますか?という質問をした場合には管理人さんは快く答えてくれると思いますよ?(すみません、ないですって) 何故ならライブラリを作った作者さんですし、DXライブラリを作ってくださった理念として、分かりづらく敷居の高いDirectXを皆に分かりやすく 便利に使ってもらいたいからです。興が乗ったら、専用の関数を作ってくれちゃうかもしれません。そうやって大きくなってきたんです。 色々つらつらと書きましたが、マーク42さんの質問に答えさせて頂きます。 自分が作ったと胸を張る必要の有無を問題にされているようなので、発想の転換をしてみてください。 自分が作ったと胸を張れるということは、つまり、誰にも最低限の迷惑しかかけなかったと言い換えることができます。 出来ないから誰かに頼るほかない、というのは暴論です。 出来ないなら、出来るまでやれ それでも出来ないなら、出来ることをやれというのがこの世界の常識です。 何故なら、誰もあなたにプログラムをやることを強要していませんよね?
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.61 )
名前:通りすがりん 日時:2019/10/09 10:04

こうやってソースを提示してくれる人にだけ下手に出た振りをしているから心象悪くなるんですよ。 > テラテイルからわざわざ私の勉強の仕方にいちゃもんつけに来たのならばやめてください。 これがもう盛大な思い込みですよね。 以下の投稿で過去にいろいろなところで殊勝な振りをしてソースを出さない人には暴言を吐く、 有限不実行を繰り返していることを知ったまでです。 teratailの誰かと同じ人と思いこまれているのならやめた方がいいですよ。 「マーク42さんに悪い心象を抱いているのはteratailから出張ってきた特定の人”だけではないんです”」 ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4713 > debugは行いました。ですが原因がわからなかったため、ここでどんさんにお応えして頂いているのです。 debugを行ったのであれば具体的にどのようなdebugを行ったのか提示していただけますか? そうすれば、 ・そのdebug方法で適切に原因追及できるのか? ・もっとよいdebug方法があるのではないか? など、今後マーク42さんがdebugする上で有益な情報を提示できるかもしれません。 それがプログラミングの学習に資することになると思うのですが違いますか? それともこちらでもプログラミング学習をしている、理解を深めようとしていると書かれたのはその場しのぎの出まかせでしたか? あとどんさんとマンツーマンでやっているみたいな書き込みはほかの利用者様や管理人様にも失礼ですよ。 マーク42さん専用のサポートセンターか何かと勘違いされていませんか? > なにも知らないで言いたいことだけいうのはやめてください。 前述の通り、あなたがどんなdebugを行ってどんなプログラム学習の礎を築いているのかは書かれていないので知りようがないんですよ。 その状況で「何も知らないなら口を出すな」という暴言を吐かれるのであれば、 今回答をしてくださっているほかの回答者様も「マーク42さんが何やってるのかわからなくなったら回答を辞めますね」と思ってしまいますよ。 ご自分で回答を制限するようなことをして何がしたいのでしょう? > プログラミングごっこがしたいならば他でやってください。 > 文章の書き方からあなたが誰なのか見当はついています。ネットストーカーのように追いかけて来ないでください。私以上に迷惑です。 ”プログラミングごっこ”って言われたのが相当堪えましたか? あと前述もしましたがネットストーカーと思い込むのはやめた方がいいですよ。 私はteratailには登録さえしていませんので。 いろんな人の心象を悪くするだけの行動をマーク42さんは取り続けていることを自覚なされた方がいいです。 > 私の理解の悪さでどんさんにご迷惑をかけていることはわかっています。 > ですが、そこで横入りされるとせっかくの理解がなくなってしまいます。 何を勘違いなされているのかわかりませんが、掲示板というのはシステム上いろいろな方から投稿が得られるものなのですよ。 ほかの掲示板でも同様の指摘を受けてきませんでしたか? あと、あなたが迷惑をかけているのがどんさんだけだと思っているなら勘違いも甚だしい。 善意の苦言を横入りと表現なされるのであればあなたはインターネット上で掲示板を利用するのに向いていません。 (暴言に見えますがアドバイスのつもりです) 自分の得たい回答(ソース付きでそのまま動かせる or コピペできる)ものだけを求めているとどこへ行っても回答者はいなくなってしまいますよ。 マーク42さんの代わりにコーディングするために回答者はいるわけではないです。 プログラミングの質問掲示板はあくまで自助努力と相互扶助によって成り立っています。 マーク42さんの質問トピックが後から読み直して「私も困っていたけどトピックを読んで解決できました、ありがとう!」となれば有益な過去ログとなりますが、 現状はなんとなく動いたから解決となっていて、第三者が読んでも有益なログとはいいがたいです。 また、次々に同じような質問を繰り返されていて自助努力をしているようには見えません。 変数に入っている値とその変化についてはprintfデバッグやステップ実行などで具体的な値を確認してから質問するようにしてください。 ほかの回答者さんからも苦言が呈され始めていますので、それを受け止めて今後の行動に活かしていただけたらと思います。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.62 )
名前:マーク42 日時:2019/10/09 12:08

通りすがりんもアナザー通りすがりんさんも同じ人なのでしょうか? ところどころ似ている文章があるので。 言いたいことはわかりました。 まあ、人の解釈はそれぞれなので努力していないように見られても仕方ないです。 ですが、デバック作業はもう少し自分で行おうと思います。 >>プログラミングの質問掲示板はあくまで自助努力と相互扶助によって成り立っています。 マーク42さんの質問トピックが後から読み直して「私も困っていたけどトピックを読んで解決できました、ありがとう!」となれば有益な過去ログとなりますが、 現状はなんとなく動いたから解決となっていて、第三者が読んでも有益なログとはいいがたいです。 それはあなたの思い込みなのではないでしょうか。なんとなく動いたなんていつ書きましたか?ありもしないことを書いて 相手を非難するのはテラテイルの人たちの行っている行為なのでやめてください。 私にも問題はありますが、自分たちに何の問題もないと思い込んでいる通りすがりんさんやアナザー通りすがりんさんやテラテイルの人間 などもある意味迷惑だと私は思っています。わざわざここでこんなことを書かなくていいだろうと思っています。 自分たちがあたかもまともで正しい人間だと思わせたいだけなのでしょう。 >>それは何もかもを1から10まで教え合って形作られているものではありません。 何をもって私がすべてを誰かにやらせているかのように言っていますが、それは勝手な思い込みです。 私が何もやっていないかのようにしか聞こえないですが、それは流石に失礼ですよ。 >>自分の得たい回答(ソース付きでそのまま動かせる or コピペできる)ものだけを求めているとどこへ行っても回答者はいなくなってしまいますよ。 マーク42さんの代わりにコーディングするために回答者はいるわけではないです。 確かに昔の私はそうでした。ですが、今は出来る部分は自分で試行錯誤して実装しています。 昔の投稿を見てそう言っているのならその通りですね。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.63 )
名前:マーク42 日時:2019/10/09 12:22

もってぃさん、コメントが短すぎて気が付かなった。 >>口だけじゃプログラムもコードも動かないんすよ。オーケー? オッケーズドンッ!(映画コマンドーより) 当たり前のことを教えてくださり、ありがとうございます! という冗談はさておき、プログラミングを学んでいる誰もが誰に対してもgiveが出来ると思い込んでいるのは問題ですね。 点と点が自力で結べない人間だっているんですよ。自分と同じ価値観と技量を他人も持っていると思うのはどうかと思います。 もしそれが気に食わないなら、いっそのことプログラミングに向いてないからやめろと言えばいいのでは?
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.64 )
名前:マーク42 日時:2019/10/09 12:28

>>1から100まで他人頼みだからどこにいっても同じ扱いうけるんすよ。 勝手な思い込みで書くのはやめましょう。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.65 )
名前:NNN 日時:2019/10/09 12:58

ここは学校ではないですから、結果が全てですよ 誰かの回答書き込みから数日経っての分かりません、ならまだ努力したのかなとも思えますが 回答から分かりませんって書くまで数時間じゃないですか 思い込みでもなくこれは事実で、人に努力を感じさせるには圧倒的に足りないと思います
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.66 )
名前:マーク42 日時:2019/10/09 13:05

改めてデバッグしたところ原因がわかりました。 if (Kcount < 50) ++frames;//count=0,Kcount=0,frames=20 if (frames % 5 == 0) { //framesが20なので条件を満たさない ++Kcount; if (Kcount > 50) { Kcount = 50; } } if (count < 50) ++frames; //count=0,Kcount=0,frames=19 if (frames % 20 == 0) { //framesが20なので条件を満たす ++count; //count=1,Kcount=0,frames=19 if (count > 50) { //countが50以下なので満たさない count = 50; } } の順番に限らず、(frames % 5 == 0)と(frames % 20 == 0)に関して、 フレーム数が奇数の時は例えば3の時は、二つの文の二つのframesにより、+2され5となり、奇数にしかならないので (frames % 5 == 0)にしか対応できないため、(frames % 5 == 0)が先に上がり、(frames % 5 == 0)が50になった時に上がる必要が無いので (frames % 5 == 0)の文は働かないので、一つのframesのみすなわち、(frames % 20 == 0)のframesのみが働くため、ただ+1されて ずっと奇数がframesが(frames % 20 == 0)のframesにより偶数になる (というか偶数にも奇数にもなる)ので(frames % 20 == 0)に働き、(frames % 20 == 0)が上がり始める。 フレーム数が偶数の場合は、フレーム数が18の場合、二つのif 文の二つのframesにより、 (frames % 5 == 0)とif (frames % 20 == 0) のどちらにも働くフレーム数20、40、60などにより 同時に上がることが出来る。そして、同時に上がり(frames % 20 == 0)が先に50になった後は一つのif文の一つのframesしか働かないので そのあとのフレームは奇数にも偶数にもなるため、というかただ+1されて上がるだけなので (frames % 5 == 0) の上がるスピードも若干上がる。 これでちゃんと理解できているということを証明するために説明できたと思うのですが、どうでしょうか。 だいぶ遅い理解ですが、どんさんありがとうございました。 今後はもう少し時間をかけてデバッグしてみます。ご迷惑おかけしました。
メンテ
Re: 元のマスに戻ったあと前のマスに行けない ( No.67 )
名前:通りすがりん 日時:2019/10/09 13:09

プログラミングの役に立たない駄文を長々と書いているからひんしゅくを買っているんですよ。 > 通りすがりんもアナザー通りすがりんさんも同じ人なのでしょうか? > ところどころ似ている文章があるので。 いいえ。 私は通りすがりんの名前以外では投稿していません。 > 言いたいことはわかりました。 > まあ、人の解釈はそれぞれなので努力していないように見られても仕方ないです。 > ですが、デバック作業はもう少し自分で行おうと思います。 どのようにデバッグをしているのかを具体的に書いてくれればアドバイスできるかもと書いてますが、 具体的に書かないんですね。 マーク42さんがどのようにデバッグしているのかが見えないですし、その方法を共有してくれないので 努力していないとみられるのですよ。 > それはあなたの思い込みなのではないでしょうか。なんとなく動いたなんていつ書きましたか?ありもしないことを書いて > 相手を非難するのはテラテイルの人たちの行っている行為なのでやめてください。 「なんとなく動いた」という文章を書いていないからセーフとか思っていらっしゃいます? そういうことではなくて「自己解決しました」とだけ書かれて結局何が問題でどのように直したら動いたのかが 記載されていないことを指摘しています。 思い込みといわれるのは癪なので具体的に提示しますね。 以下のトピックは自己解決したとだけ書かれ、具体的な解決法が未記載のトピックです。 これでも思い込みなのでしょうか? ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4709 →自己解決しましただけ(具体的なソース提示はなし) ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4713 →自分なりに書いたら動いただけ(具体的なソース提示はなし) > 私にも問題はありますが、自分たちに何の問題もないと思い込んでいる通りすがりんさんやアナザー通りすがりんさんやテラテイルの人間 > などもある意味迷惑だと私は思っています。わざわざここでこんなことを書かなくていいだろうと思っています。 > 自分たちがあたかもまともで正しい人間だと思わせたいだけなのでしょう。 自分に問題があると自覚があるならせめてマーク42さん自身は問題ないと胸を張れるような行動をされたらよいですよ。 それもやらずに苦言を呈した回答者さんの方に問題があると思い込んでいるから成長しないのですよ。 > 確かに昔の私はそうでした。ですが、今は出来る部分は自分で試行錯誤して実装しています。 > 昔の投稿を見てそう言っているのならその通りですね。 試行錯誤? なんとなくプログラムをいじくって、思った通りに動かなかったらすぐに質問してるじゃないですか。 しかも過去に指摘をうけたインデントの重要性やデバッグについてやった形跡のない形で。 過去に指摘を受けたことは当然やったうえで新たに質問するのであればここまで苦言を呈されることもなかったでしょうに。 で、具体的にどんなデバッグをされているのか教えていただけますか?
メンテ

Page: 1 | 2 | 3 | 4 | 5 |