PUMA 發問時間： 社會與文化語言 · 1 0 年前

急救~急救~~幫我註解這個程式-2

public boolean keyDown(Event e,int key)

{

switch (key)

{

case Event.LEFT:

{

if(y[0]!=y[1])//direction!=RIGHT)//eliminating the possibility of accidentally killing your snake

direction=LEFT; //my original idea was not perfect but this should work now

break;

}

case Event.RIGHT:

{

if(y[0]!=y[1])//direction!=LEFT)

direction=RIGHT;

break;

}

case Event.UP:

{

if(x[0]!=x[1])//direction!=DOWN)

direction=UP;

break;

}

case Event.DOWN:

{

if(x[0]!=x[1])//direction!=UP)

direction=DOWN;

break;

}

case Event.F1:

{

level=500;

newGame();

break;

}

case Event.F2:

{

level=250;

newGame();

break;

}

case Event.F3:

{

level=100;

newGame();

break;

}

}//Switch

return true;

}

void checkApple()

{

if(x[0]+10>appleX && x[0]<appleX+10 && y[0]+10>appleY && y[0]<appleY+10)

{

points+=15;

if(nro<199)

++nro;

randomizeApple();

if(level>=100)

level-=20;

if(level>20 && level <=100)

level-=5;

}//if

}//checkApple

void newGame()

{

for(int a=0;a<200;a++)

{

y[a]=-100;

x[a]=-100;

}

nro=5;

points=0;

for(int i=0;i<nro;i++)

{

int r=100-(10*i);

x[i]=r;

y[i]=100;

}//for

direction=RIGHT;

randomizeApple();

gameState=PLAY;

}//newGame

public void update(Graphics gra)

{

paint(gra);

}//needs to be overridden

public void paint(Graphics g2)

{

g.setColor(Color.white);

g.fillRect(0,0,width,height);

g.setColor(new Color(36,63,137));

g.setFont(new Font(\"Verdana\", 1, 10));

if(gameState==PLAY)

{

g.setColor(new Color(36,63,137));

g.drawString(\"SCORE: \" + points,10,20);

g.setColor(new Color(244,29,16));

g.drawRect(appleX,appleY,10,10);

g.setColor(new Color(249,122,108));

g.fillRect(appleX+1,appleY+1,9,9);

for(int i=0;i<nro;i++)

{

g.setColor(new Color(36,63,137));

g.drawRect(x[i],y[i],10,10);

g.setColor(new Color(186,212,239));

g.fillRect((x[i])+1,(y[i])+1,9,9);

}//for

}//play

1 個解答

• 匿名使用者
1 0 年前
最佳解答

public boolean keyDown(Event e,int key) // 按下按鍵所觸發Event的判別{    switch (key) // 用 switch case 的迴圈來判別按下的按鍵    {        case Event.LEFT: // 按下往左按鍵所做的動作        {            if(y[0]!=y[1]) // 不能往右，這邊可能是在說若往右時按左鍵無效            direction=LEFT; // 往左            break; // 離開 switch case 迴圈        }        case Event.RIGHT: // 按下往右按鍵的動作        {            if(y[0]!=y[1])//direction!=LEFT) // 不能往左            direction=RIGHT; // 往右            break;        }        case Event.UP: // 按下往上按鍵的動作        {            if(x[0]!=x[1])//direction!=DOWN)            direction=UP;            break;        }        case Event.DOWN: // 按下往下按鍵的動作        {            if(x[0]!=x[1])//direction!=UP)            direction=DOWN;            break;        }        case Event.F1: // 按下 F1 鍵的動作        {            level=500; // 設定等級為500            newGame(); // 開始一個新遊戲            break;        }        case Event.F2: // 按下 F2 鍵的動作        {            level=250; // 等級為250            newGame(); // 開新遊戲            break;        }        case Event.F3: // 按下 F3 按鍵的動作        {            level=100; // 等級100            newGame(); // 開新遊戲            break;        }    }//Switch    return true; // 回傳true值，表示執行正常}void checkApple() // 這個method不太清楚，可能是判斷邊界值的{    if(x[0]+10>appleX && x[0]<appleX+10 && y[0]+10>appleY && y[0]<appleY+10)    {        points+=15; // 分數每次加15        if(nro<199)        ++nro;        randomizeApple(); // randomize 是產生亂數        if(level>=100) // 如果等級大於等於100的話等級就減20                       // 若等級110的話，則下面的if回圈會再被扣一次，怪怪        level-=20;        if(level>20 && level <=100) // 等級在20與100之間的話減5        level-=5;     }//if}//checkApplevoid newGame() // 開新遊戲的{    for(int a=0;a<200;a++) // 初始化所有x[]及y[]為-100    {        y[a]=-100;        x[a]=-100;    }    nro=5;    points=0; // 分數為0    for(int i=0;i<nro;i++)    {        int r=100-(10*i);        x[i]=r;        y[i]=100;    }//for    direction=RIGHT; // 預設方向為往右    randomizeApple(); // 亂數    gameState=PLAY; // 遊戲狀態為PLAY狀態}//newGamepublic void update(Graphics gra) // 畫面更新{    paint(gra); // 繪圖}//needs to be overridden // 這個update程式要自己改寫

2006-06-21 22:53:17 補充：

public void paint(Graphics g2) // 繪圖指令

{

g.setColor(Color.white); // 設定顏色

g.fillRect(0,0,width,height); // 填滿一個矩形

g.setColor(new Color(36,63,137)); // 設定顏色

g.setFont(new Font("Verdana", 1, 10)); // 設定字型

if(gameState==PLAY) // 若遊戲狀況為PLAY的話

{

2006-06-21 22:54:58 補充：

g.setColor(new Color(36,63,137)); // 設定顏色

g.drawString("SCORE: " + points,10,20); // 寫一串字 SCORE=變數point

g.setColor(new Color(244,29,16)); // 設定顏色

g.drawRect(appleX,appleY,10,10); // 畫一個矩形

g.setColor(new Color(249,122,108)); // 設定顏色

2006-06-21 22:55:47 補充：

g.fillRect(appleX+1,appleY+1,9,9); // 填滿一個矩形

for(int i=0;i<nro;i++)

{

g.setColor(new Color(36,63,137)); // 設定顏色

g.drawRect(x[i],y[i],10,10); // 畫一個矩形

g.setColor(new Color(186,212,239)); // 設定顏色

2006-06-21 22:56:11 補充：

g.fillRect((x[i])+1,(y[i])+1,9,9); // 填滿一個矩形

}//for

}//play

2006-06-21 22:57:55 補充：

你貼的程式最後一個函數還沒完

public void paint(Graphics g2)

後面應該還有程式碼，因為有少一個「}」

參考資料： 字數滿了，無法再回答
• 登入以對解答發表意見