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さん自身は問題ないと胸を張れるような行動をされたらよいですよ。
それもやらずに苦言を呈した回答者さんの方に問題があると思い込んでいるから成長しないのですよ。
> 確かに昔の私はそうでした。ですが、今は出来る部分は自分で試行錯誤して実装しています。
> 昔の投稿を見てそう言っているのならその通りですね。
試行錯誤?
なんとなくプログラムをいじくって、思った通りに動かなかったらすぐに質問してるじゃないですか。
しかも過去に指摘をうけたインデントの重要性やデバッグについてやった形跡のない形で。
過去に指摘を受けたことは当然やったうえで新たに質問するのであればここまで苦言を呈されることもなかったでしょうに。
で、具体的にどんなデバッグをされているのか教えていただけますか?
 |