📄 boardcanvas.java
字号:
/**
* This class models a HannoiTower.
*
* @author 程宇恒
* @version 1.0.0
*/
import java.awt.*;
import java.awt.event.*;
/*BoardCanvas类*/
/*a blank rectangular area of the screen onto which the application can draw*/
final class BoardCanvas extends Canvas
{
static final int PEG_SPACE = 75;
static final int DISC_HEIGHT = 15;
static final Color COLOR_1 = new Color(102, 51, 0);
static final Color COLOR_2 = new Color(153, 102, 0);
static final Color COLOR_3 = new Color(204, 153, 51);
static final Color COLOR_4 = new Color(255, 204, 0);
static final Color COLOR_5 = new Color(255, 255, 204);
private Image bufferImage;
private Graphics buffer;
private Hanoi11 main;
/*构造函数*/
BoardCanvas(Hanoi11 hanoi11)
{
main = hanoi11;
}
/*画移动状态*/
void drawBoard(Board board, Image image, int i, int j, int k)
{
label0:
{
boolean flag = false;
boolean flag1 = false;
if(buffer == null)
{
Hanoi11 _tmp = main;
Hanoi11 _tmp1 = main;
bufferImage = createImage(450, 250);
buffer = bufferImage.getGraphics();//Creates a graphics context for drawing to an off-screen image
}
buffer.drawImage(image, 0, 0, this);
Hanoi11 _tmp2 = main;
int k1 = 0;
do
{
Hanoi11 _tmp3 = main;
if(k1 > 2)
break label0;
for(int l1 = 0; l1 <= board.getPegTop(k1); l1++)
{
int j1 = board.getDisc(l1, k1);
if(j1 != 0)
{
int l = board.getDiscWidth(j1);
Hanoi11 _tmp4 = main;
drawDisc((2 * k1 + 1) * 75 - l / 2, 225 - (l1 + 1) * 15, l);
}
}
k1++;
} while(true);
}
if(i != 0)
{
int i1 = board.getDiscWidth(i);
drawDisc(j - i1 / 2, k - 11, i1);
}
repaint();
}
/*画盘子*/
void drawDisc(int i, int j, int k)
{
buffer.setColor(COLOR_3);
buffer.drawLine(i + 4, j, (i + k) - 4, j);
buffer.drawLine(i + 2, j + 1, (i + k) - 2, j + 1);
buffer.drawRect(i, j + 7, k, 1);
buffer.setColor(COLOR_4);
buffer.drawLine(i + 1, j + 2, (i + k) - 1, j + 2);
buffer.drawRect(i, j + 5, k, 1);
buffer.setColor(COLOR_5);
buffer.drawLine(i + 1, j + 3, (i + k) - 1, j + 3);
buffer.drawLine(i, j + 4, i + k, j + 4);
buffer.setColor(COLOR_2);
buffer.drawRect(i, j + 9, k, 1);
buffer.drawLine(i + 1, j + 11, (i + k) - 1, j + 11);
buffer.setColor(COLOR_1);
buffer.drawLine(i + 1, j + 12, (i + k) - 1, j + 12);
buffer.drawLine(i + 2, j + 13, (i + k) - 2, j + 13);
buffer.drawLine(i + 4, j + 14, (i + k) - 4, j + 14);
}
public void paint(Graphics g)
{
update(g);
}
public void update(Graphics g)
{
g.drawImage(bufferImage, 0, 0, this);
}
public boolean mouseDown(Event event, int i, int j)
{
main.selectDisc(i, j);
return true;
}
public boolean mouseDrag(Event event, int i, int j)
{
main.dragDisc(i, j);
return true;
}
public boolean mouseUp(Event event, int i, int j)
{
main.dropDisc(i, j);
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -