「Java设计棋盘」数学棋盘设计
今天给各位分享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设计棋盘的信息别忘了在本站进行查找喔。
发布于:2022-11-23,除非注明,否则均为
原创文章,转载请注明出处。