0
        if(loopCount % (20 - loopCount / 100) == 0) {
            if(dropBlock() == false) {
                mode = -1;
                loopCount = 1;
            }
            if(loopCount == 1900)
                loopCount--;
        }
        loopCount++;

javaによって書かれた本からのテトリスプログラム。なぜこのようなコードを使用してブロックのドロップ速度を制御するのか、そしてそれがどのように機能するのか理解できません。ありがとうございました !

loopCountの初期値は1で、ゲームが終了するとdropBlockはfalseを返します。このピースはメインループに含まれています。また、モードは関係ありません。申し訳ありませんが、ここでプログラム全体を確認することはできません。

4

2 に答える 2

0

ループカウントを1から開始するように設定されているようで、テーブルを使用してif(loopCount % (20 - loopCount / 100) == 0) {

loopCount <100、loopCount / 100 = 0であるため、loopCount%20は、20、40、60、および80に対してtrueを返します。loopCountが100〜199であるとします。ここで、19で割り切れるかどうか、200〜300で割り切れるかどうかを確認しています。 18.しかし、彼がこれで何を達成しようとしているのか正確にはわかりません。次に、ブロックのドロップに失敗したかどうかをチェックします(dropBlockはブロックをドロップしようとした可能性があり、成功した場合はtrueを返し、失敗した場合はfalseを返します。失敗した場合は、モードを-1に設定します(おそらく終了しますか?)。 1900に達すると、上昇を防ぎます(の直前に、1899に減少しますloopCount++;。これは、本質的に減少してから増加するため、何もしません(1900で保持)。

于 2012-08-30T03:12:52.543 に答える
0

このコードは、良いコードを書かない方法の良い例です。それはあなたがしていることをしている理由を推論するのを難しくする魔法の数字(1900、20、100)でいっぱいです。

しかし、これを実装し、値を出力すると、loopCountの値は1から1900まで増加し続け、1900に達すると、そこにとどまります。

したがって、ロジックが行うことは、1899にデクリメントし、1900に達すると反復ごとに1900にインクリメントすることです。

于 2012-08-30T03:22:37.120 に答える