?? disk.java
字號:
package book.applet.tower;
import java.awt.Color;
import java.awt.Graphics;
/**
* 漢諾塔游戲中的盤
*/
public class Disk {
// 盤的寬度
public int width;
// 盤的顏色
public Color color;
// 盤的標簽
public String label;
// 構造方法
public Disk(int width, Color color, String label) {
this.width = width;
this.color = color;
this.label = label;
}
/**
* 畫盤,盤的中間為矩形,兩邊為圓弧
* @param g 畫筆
* @param xPos 盤中心所在的X坐標
* @param indexInTower 盤所在塔的層次,最底下的盤的序號為0
*/
public void drawDisk(Graphics g, int xPos, int indexInTower) {
// 先求得盤矩形部分左上角的坐標
int x = xPos - width / 2;
int y = Constants.PILLAR_BOTTOM_YPOS - (indexInTower + 1)
* Constants.DISK_HEIGHT;
// 中間畫矩形
g.setColor(Color.black);
g.drawRect(x, y, width - 1, Constants.DISK_HEIGHT - 1);
// 兩邊畫圓弧,顏色為黑色,先求得左邊圓弧的左上角的坐標
int x1 = x - Constants.DISK_CORNER_WIDTH;
int y1 = y;
g.drawOval(x1, y1, Constants.DISK_HEIGHT - 1,
Constants.DISK_HEIGHT - 1);
// 再求得右邊圓弧的左上角的坐標
int x2 = x + width - Constants.DISK_CORNER_WIDTH - 1;
int y2 = y;
g.drawOval(x2, y2, Constants.DISK_HEIGHT - 1,
Constants.DISK_HEIGHT - 1);
// 用盤的顏色填充上面的矩形和圓弧
g.setColor(color);
g.fillRect(x + 1, y + 1, width - 2, Constants.DISK_HEIGHT - 2);
g.fillOval(x1 + 1, y1 + 1, Constants.DISK_HEIGHT - 2,
Constants.DISK_HEIGHT - 2);
g.fillOval(x2 + 1, y2 + 1, Constants.DISK_HEIGHT - 2,
Constants.DISK_HEIGHT - 2);
// 畫黑色的標簽
g.setColor(Color.black);
g.drawString(label, x, y + Constants.DISK_HEIGHT / 2 + 4);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -