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

📄 board.java

📁 A demo for Knight s Tour problem by Java applet
💻 JAVA
字号:
import java.awt.Graphics;

public class Board
{

    public Board(int dim)
    {
        dimension = dim;
        board = new Square[8][8];
        int i = 0;
        do
        {
            int j = 0;
            do
                board[i][j] = new Square(i + 1, j + 1, dimension / 8);
            while(++j < 8);
        } while(++i < 8);
    }

    public void resetBoard()
    {
        int i = 0;
        do
        {
            int j = 0;
            do
                board[i][j].resetSquare();
            while(++j < 8);
        } while(++i < 8);
    }

    public void setCount(int m, int n, int cnt)
    {
        board[m][n].setCounter(cnt);
    }

    public void setKnightTrue(int y, int x)
    {
        board[y][x].setKnight(true);
    }

    public int getBestx(int m, int n)
    {
        return board[m][n].getBestMovex();
    }

    public int getBesty(int m, int n)
    {
        return board[m][n].getBestMovey();
    }

    public void computeBestMove(int flag)
    {
        int min = 10;
        int i = 0;
        do
        {
            int j = 0;
            do
            {
                int k = 0;
                do
                    if(i + movesx[k] < 8 && i + movesx[k] >= 0 && j + movesy[k] < 8 && j + movesy[k] >= 0 && !board[i + movesx[k]][j + movesy[k]].getKnight())
                        if(flag == 0)
                        {
                            if(board[i + movesx[k]][j + movesy[k]].getValue() < min)
                            {
                                min = board[i + movesx[k]][j + movesy[k]].getValue();
                                board[i][j].setBestMovex(i + movesx[k]);
                                board[i][j].setBestMovey(j + movesy[k]);
                            }
                        } else
                        if(flag == 1 && board[i + movesx[k]][j + movesy[k]].getValue() <= min)
                        {
                            min = board[i + movesx[k]][j + movesy[k]].getValue();
                            board[i][j].setBestMovex(i + movesx[k]);
                            board[i][j].setBestMovey(j + movesy[k]);
                        }
                while(++k < 8);
                if(min == 10)
                {
                    board[i][j].setBestMovex(-1);
                    board[i][j].setBestMovey(-1);
                }
                min = 10;
            } while(++j < 8);
        } while(++i < 8);
    }

    public void computeValue()
    {
        int counter = 0;
        int i = 0;
        do
        {
            int j = 0;
            do
            {
                int k = 0;
                do
                    if(i + movesx[k] < 8 && i + movesx[k] >= 0 && j + movesy[k] < 8 && j + movesy[k] >= 0 && !board[i + movesx[k]][j + movesy[k]].getKnight())
                        counter++;
                while(++k < 8);
                board[i][j].setValue(counter);
                counter = 0;
            } while(++j < 8);
        } while(++i < 8);
    }

    public void paint(Graphics g)
    {
        int i = 0;
        do
        {
            int j = 0;
            do
                board[i][j].paint(g);
            while(++j < 8);
        } while(++i < 8);
    }

    private int dimension;
    private static final int sz = 8;
    private Square board[][];
    private int movesx[] = {
        -1, -2, -2, -1, 1, 2, 1, 2
    };
    private int movesy[] = {
        -2, -1, 1, 2, -2, -1, 2, 1
    };
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -