⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boardcanvas.java

📁 这是一个汉诺塔程序
💻 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 + -