目的:小程序不重複循環
我有涉及烏龜和兔子之間的競爭分配。基本上,我有兩個.gif文件,一個是烏龜和一個野兔,它們將被顯示在一個applet中,並通過沿着x軸前進而彼此競爭。在這個過程中,我必須使用隨機數生成器來生成不同的「移動」,其中動物(圖像文件)向前或向後移動一定數量的位置。這個循環必須重複,直到其中一個動物達到第50個位置。兩隻動物在每次移動之間也必須有某種時間延遲。
的代碼:
import java.util.Random;
import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Image;
import java.awt.Color;
public class ProjectTwo extends Applet
{
Image tortoise, hare;
Random generator = new Random();
int[] positions = new int [50];
int[] randoms = new int[50];
public int t = 0;
public int h = 0;
public int s = 0;
public void init()
{
for (int i = 0; i < positions.length; i++)
{
positions[i] = ((i * 145) + 10);
}
for (int x = 0; x < randoms.length; x++)
{
randoms[x] = generator.nextInt(6) + 1;
}
tortoise = getImage(getDocumentBase(), "images/tortoise.gif");
hare = getImage(getDocumentBase(), "images/hare.gif");
}
public void delay()
{
for(int g = 0; g <= 90000000; g++) ;
}
public void paint (Graphics g)
{
g.drawImage (tortoise, positions[0], 10, this);
g.drawImage (hare, positions[0], 137, this);
delay();delay();delay();
do
{
switch (randoms[s])
{
case 1:
case 2:
t += 3;
h += 9;
if (t >= 50)
{
g.drawImage (tortoise, positions[50], 10, this);
}
else
{
g.drawImage (tortoise, positions[t], 10, this);
}
if (h >= 50)
{
g.drawImage (hare, positions[50], 137, this);
}
else
{
g.drawImage (hare, positions[h], 137, this);
}
s++;
break;
case 3:
case 4:
case 5:
t += 3;
h += 1;
if (t >= 50)
{
g.drawImage (tortoise, positions[50], 10, this);
}
else
{
g.drawImage (tortoise, positions[t], 10, this);
}
if (h >= 50)
{
g.drawImage (hare, positions[50], 137, this);
}
else
{
g.drawImage (hare, positions[h], 137, this);
}
s++;
break;
case 6:
t += 1;
h -= -12;
if (t >= 50)
{
g.drawImage (tortoise, positions[50], 10, this);
}
else
{
g.drawImage (tortoise, positions[t], 10, this);
}
if (h <= 0)
{
g.drawImage (hare, positions[0], 137, this);
t = 0;
}
else
{
g.drawImage (hare, positions[h], 137, this);
}
s++;
break;
case 7:
case 8:
t += 1;
h -= 2;
if (t >= 50)
{
g.drawImage (tortoise, positions[50], 10, this);
}
else
{
g.drawImage (tortoise, positions[t], 10, this);
}
if (h <= 0)
{
g.drawImage (hare, positions[0], 137, this);
t = 0;
}
else
{
g.drawImage (hare, positions[h], 137, this);
}
s++;
break;
case 9:
case 10:
t -= 6;
if (t <= 0)
{
g.drawImage (tortoise, positions[0], 10, this);
t = 0;
}
else
{
g.drawImage (tortoise, positions[t], 10, this);
}
g.drawImage (hare, positions[h], 137, this);
s++;
break;
}
} while (t >= 50 | h >= 50);
}
}
預期的結果:
- 的tortoise.gif文件出現在(10,10)和所述hare.gif文件出現在(10 ,137)
- 有一個很短的延遲,直到隨機數發生器滾動一個4(這對我來說無論何時/何時創建數字,只要它們處於1- 10)
- 烏龜前進3個位置(公式位置是145x + 10,使得烏龜的新座標(445,10)
- 野兔前進1點的位置,使得它的新座標(155,10)
- 重複過程,直到一個前進到第50位(查看其他信息應該發生什麼,每一個隨機數)
到底發生了什麼
龜兔賽跑他們approp顯示riate的地方,但不要動。
的問題
我想烏龜並根據計時器來推進自己的立場野兔,但在編譯的代碼,並啓動小程序,由於我的代碼某種錯誤後,他們做不。
我想可能是錯誤
我相信問題可能與我是如何實現的延遲做,我在一個陣列中的圖像的x值,或相互衝突的變量使用元素我的do-while循環和/或我的病例陳述,雖然我不知道什麼是錯的,也不知道我應該修復什麼。然而,我現在意識到,如果程序確實起作用,由於我在接近頂端的for循環中使用randoms.length作爲構造函數,烏龜和兔子在停止之前只會改變位置50次,不管怎樣。我也不知道如何解決這個問題。
附加資料
這裏是多遠動物應該根據所選擇的隨機數移動圖表:
1-2 =龜移動3個位置,兔移動+ 9
3-5 =烏龜移動+3位置,野兔移動+1
6 =龜移動1位置,兔移動回到-12
7-8 =龜移動1位置,兔移回-2
9-10 =龜移回-6位置,兔完全不動
動物可以移動得比原始位置(位置[0])更遠。如果數字低於這個數字,動物必須停留在那個位置。此規則也適用於大於50的位置。
- 此代碼編譯正常,但該小程序未按照所嘗試的方式運行。
- 我很抱歉,如果這段代碼看起來非常混亂,因爲我對Java編碼以及使用小程序相當陌生。
這聽起來像個好主意。我在我的代碼中實現了它,但情況是一樣的,在小程序中出現了烏龜和兔子,但它們不動。 – user2709168