• ベストアンサー

プログラミング?の意味が分からない。

timer(d(ln(db/b+1)/pt) < 0) > 3 * tr && db > b 上の式をゲームで使うので、コピペして使っているのですが、どんなことが書かれているのか分かりません。教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

timer(d(ln(db/b+1)/pt) < 0) > 3 * tr && db > b 大きく分けると2つのブロックがあり timer(d(ln(db/b+1)/pt) < 0) > 3 * tr db > b の2つ。 1つ目を満たしてるとき、2つ目を判定しています。 両方を満たすと、その言語内でのtrue 満たさない場合は、その言語内でのfalse に展開されます。 db>bは、dbという値がbより大きいか?となります。 timer(d(ln(db/b+1)/pt) < 0) > 3 * tr 同じようにこちらも timer(d(ln(db/b+1)/pt) < 0) これが 3 * tr より大きいか?です。 3 * tr は、3×trですので、3倍の値より大きいか?です。 最後が、ちと、めんどくさい timer(d(ln(db/b+1)/pt) < 0) lnという関数のパラメタに、 db/b+1 これは、db÷b+1を渡しています。 それの返り値を、/pt、つまり返り値÷ptをしたものをさらに、 dという関数のパラメタに渡す。 そして、そのdの返り値が<0 つまり0より小さいか? 小さいなら、true、それ以外はfalseになり それを、timerという関数のパラメタに送り出している という具合です。 ただ、関数なので、中身がわからなければ、 なにをしてるかは、元々わかりません。 ですので、これ以上の回答はこの投稿からは 不可能だったりします。 というのが、回答です。

t0mat011
質問者

お礼

丁寧にありがとうございましたm(*_ _)m このサイトの利用に慣れていないので、お礼のシステムがよく分かりません。なんかチップ的なもの?があるようですが、足りていないものがあったら申し訳ないです。

t0mat011
質問者

補足

lnが自然対数 ptが経過時間 dが変化の比率 となっていました。 渡すというのはどんなものなのですか? それと、確かに2つの条件に照らし合わせるのであれば前後逆にしても変わりませんね。 質問が多くてすみません。

その他の回答 (4)

回答No.5

「渡す」は、パラメーターというべきで。。 a=50; func(a); ← func に50という値を渡した。 的なニュアンスでよいかと。 結果、funcという関数は、パラメーターに50が入っている状態で呼び出されるよ~ってのが「渡す」 逆が「返り値」または「返却」 func の中で return 51; なら、呼び出した元の部分に51が返されます。 ちょっと、言語が指定されてないので、 Cなら、int func(void) { return 51; } Javascript などなら、function func() { return 51; } など、多少書き方が違うので、そこは割愛頼みますが。 PHPで、渡された値を2倍して返せ!という関数なら、 $a=50; $b=func($a); ←別に$aを50とそのまま書いても構わない。 function func($waa) { return $waa*2; } みたいなそんな使い方ですね。 んま、今わかるのは、そこまでかな。。 話だいぶそれちゃいましたね^^

回答No.4

>あとこの式は特定の条件を満たしたらあるプログラムを実行するための条件設定に使っています。 例えば、aという判定変数と、bという関数なら、 if (a==50) { b(); } だったら、a==50&&b(); もし、aに値があるかだけでいいなら、 a&&b(); こんだけですけどね。 (他の人が読めないかもね~系のソース)

回答No.3

>むむむ…?それは意味は変わらず速度が上がるということですか? >あ、あとこの式は特定の条件を満たしたらあるプログラムを実行するための条件設定に使っています。 「その通り」ですよ! ただし、条件があり、 timer , d ,ln が呼ばれることで中の変数などが変化していない 関数であることが大前提です。そもそも呼ばれなくなることで 動作が変わる関数なら、ダメです。 (見た感じ、大丈夫そうですが) 今回の質問とは、ちょっと違う話ですけどね。

回答No.2

何してるのかは、元々わかりませんが、 timer(d(ln(db/b+1)/pt) < 0) > 3 * tr && db > b これ・・・ db > b && timer(d(ln(db/b+1)/pt) < 0) > 3 * tr の間違いな気がする^^ ある数を、ある数より大きい値で割ると、1未満になるので、 プラスの整数にしたい目的のフィルタだと思うのですが、 だったら、先にやればいいのに! &&の特性として先の命令を満たさない場合、後の命令を 実行しない特徴があるので、速度がアップするのだがな~。。 と感じました^^ (これは質問とは関係はないのですが、気になったので)

t0mat011
質問者

補足

むむむ…?それは意味は変わらず速度が上がるということですか? あ、あとこの式は特定の条件を満たしたらあるプログラムを実行するための条件設定に使っています。

関連するQ&A