「Java设计棋盘」数学棋盘设计

博主:adminadmin 2022-11-23 10:51:07 65

今天给各位分享Java设计棋盘的知识,其中也会对数学棋盘设计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求代码:用JAVA画出一个棋盘(伪代码就好,要有标注)

import javax.swing.*;

import javax.swing.border.*;

import java.awt.*;

import java.beans.*;

import java.util.*;

/**

 * 面板上的光标改变成为手型

 * @author hardneedl

 */

final class ChessPaint extends JFrame{

    private static final Dimension SIZE = new Dimension(600,400);

    public Dimension getMinimumSize() {return SIZE;}

    public Dimension getMaximumSize() {return SIZE;}

    public Dimension getPreferredSize() {return SIZE;}

    public String getTitle() {return "ChessPaint";}

    /**

     * 棋盘

     * 实现属性变化监听

     */

    private class Chessboard extends Observable implements PropertyChangeListener{

        private int columns, rows, cellWidth;

        private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);

        private Chessboard(int columns, int rows, int cellWidth) {

            this.columns = columns;

            this.rows = rows;

            this.cellWidth = cellWidth;

        }

        private int getColumns() {

            return columns;

        }

        private void setColumns(int columns) {

            propertyChangeSupport.firePropertyChange("columns", this.columns, columns);

            this.columns = columns;

        }

        private int getRows() {

            return rows;

        }

        private void setRows(int rows) {

            propertyChangeSupport.firePropertyChange("columns", this.rows, rows);

            this.rows = rows;

        }

        private int getCellWidth() {

            return cellWidth;

        }

        private void setCellWidth(int cellWidth) {

            this.cellWidth = cellWidth;

        }

        public void propertyChange(PropertyChangeEvent evt) {

            switch (evt.getPropertyName()) {

                case "columns":

                case "rows":

                case "cellWidth":

                    if (!evt.getOldValue().equals(evt.getNewValue())) {

                        setChanged();

                        notifyObservers(this);

                    }

                    break;

            }

        }

    }

    /**

     * 画笔

     */

    private interface Brush {

        void paint(Graphics g);

        Component getCompoment();

    }

    abstract private class ChessboardBrush implements Brush, Observer {

        private Chessboard chessboard;

        private ChessboardBrush(Chessboard chessboard) {

            this.chessboard = chessboard;

        }

        public void paint(Graphics g) {

            if (chessboard == null) return;

            Graphics2D g2 = (Graphics2D) g.create();

            //背景白色

            g2.setColor(Color.WHITE);

            g2.fillRect(0,0, getCompoment().getWidth(), getCompoment().getHeight());

            //整体偏移坐标系

            g2.translate(100,100);

            g2.setColor(Color.BLACK);

            //绘制行线

            for (int r = 0; r = chessboard.getRows(); r ++)

                g2.drawLine(0, r * chessboard.getCellWidth(), chessboard.getColumns() * chessboard.getCellWidth(), r * chessboard.getCellWidth());

            //绘制竖线

            for (int c = 0; c = chessboard.getColumns(); c++)

                g2.drawLine(c * chessboard.getCellWidth(), 0, chessboard.getCellWidth() * c , chessboard.getRows() * chessboard.getCellWidth());

            g2.dispose();

        }

        public void update(Observable o, Object arg) {

            if (arg instanceof Chessboard)

                chessboard = (Chessboard)arg;

        }

    }

    /*画布*/

    private class Canvas extends JComponent{

        private Brush getBrush() {

            return brush;

        }

        private void setBrush(Brush brush) {

            this.brush = brush;

        }

        private Brush brush;

        private Canvas() {

            super();

        }

        protected void paintComponent(Graphics g) {

            super.paintComponent(g);

            if(isVisible()  brush != null)

                brush.paint(g);

        }

        public Border getBorder() {

            return BorderFactory.createLineBorder(Color.BLUE,2);

        }

    }

    private Canvas canvas;

    private ChessboardBrush brush;

    private Chessboard chessboard;

    private ChessPaint() {

        super();

        init();

        addListeners();

        doLay();

    }

    private void init(){

        chessboard = new Chessboard(19,19,30);

        canvas = new Canvas();

        brush = new ChessboardBrush(chessboard) {

            public Component getCompoment() {

                return canvas;

            }

        };

        canvas.setBrush(brush);

        chessboard.addObserver(brush);

    }

    private void addListeners(){

    }

    private void doLay(){

        Container container = getContentPane();

        container.add(canvas, BorderLayout.CENTER);

        pack();

        setVisible(true);

    }

    public static void main(String... args) {

        System.setProperty("swing.defaultlaf","com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

        SwingUtilities.invokeLater(ChessPaint::new);

    }

}

java马踏棋盘设计目的

java马踏棋盘设计目的是解决实际的应用问题,特别是非数值计算类型的应用问题。

马踏棋盘的基本过程:国际象棋的棋盘为8*8的方格棋盘。现将"马"放在任意指定的方格中,按照"马"走棋的规则将"马"进行移动。要求每个方格只能进入一次,最终使得"马"走遍棋盘的64个方格。

马踏棋盘的解决方案:基于深度优先搜索的方法是比较常用的算法,深度优先搜索算法也是数据结构中的经典算法之一,主要是采用递归的思想,一级一级的寻找,最后找到合适的解。

求然后用JAVA画出一个棋盘(伪代码就好)

代码如下:

package com.lijie.test;

import java.awt.Graphics;

import java.awt.Point;

import javax.swing.JFrame;

public class JFrameTestor extends JFrame {

public JFrameTestor() {

setSize(480, 320);

setLocation(new Point(400, 150));

setVisible(true);

setResizable(false);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {

new JFrameTestor();

}

public void paint(Graphics g) {

for(int i = 30; i = 310; i += 20) {

g.drawLine(i, 30, i, 310);

}

for(int i = 10; i = 310; i += 20) {

g.drawLine(30, i, 310, i);

}

}

}

求写Java程序,可以画个棋盘。

代码如下:

// App.java

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Rectangle;

import javax.swing.JFrame;

public class App extends JFrame {

public App() {

this.setTitle("Chess");

this.setSize(618, 647);

this.setLocationRelativeTo(null);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

@Override

public void paint(Graphics g) {

super.paint(g);

Rectangle rect = getRootPane().getBounds();

int blockWidth = rect.width / 8;

int blockHeight = rect.height / 8;

for (int i = 0; i  8; i++) {

for (int j = 0; j  8; j++) {

if (i % 2 == 0) {

g.setColor(j % 2 == 0 ? Color.RED : Color.BLACK);

} else {

g.setColor(j % 2 == 0 ? Color.BLACK : Color.RED);

}

g.fillRect(rect.x + j * blockWidth, rect.y + i * blockHeight, blockWidth, blockHeight);

}

}

}

public static void main(String[] args) {

new App().setVisible(true);

}

}

运行结果:

Java设计棋盘的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数学棋盘设计、Java设计棋盘的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。