新手求助八皇后问题!
老师要求写八皇后的动态演示。现在已经做出了棋盘还有八皇后的代码,但是怎样在棋盘上实现八皇后???
------最佳解决方案--------------------把当前棋盘上皇后的状态保存在一个数组里。
每走一步,就调用JPanel.repaint()方法更新显示棋盘。
在JPanel.paintComponent里读取皇后状态的数组显示他们。
------其他解决方案--------------------import java.awt.Color;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Chess extends JPanel
{// 继承面板类
public Chess(int grids,int gridsize)
{//grids:行数和列数, gridsize:单元格的高和宽
super(null);
for(int i=0; i<grids; i++)
{
for(int j=0; j<grids; j++)
{
JLabel l = new JLabel();//生成标签实例
l.setSize(gridsize,gridsize);
l.setLocation(i*gridsize,j*gridsize);
l.setBorder(BorderFactory.createLineBorder(Color.black)); //设置边界为黑色
add(l);//将l标签添加到面板
}
}
}
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setSize(658,677); //边框的长和宽
f.setLocationRelativeTo(null); //设置窗口相对于指定组件的位置
f.add(new Chess(8,80));
f.setVisible(true);
}
}
这是棋盘代码,具体要从哪里入手?
------其他解决方案--------------------import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class EightQueen {
public static int num=1;
public void Queen(int queenNum)
{
String queenLocation[][]=new String[queenNum][queenNum];
//init(queenLocation);
System.out.println("总的解决方案如下:");
int c[]=new int[queenNum];
advance(0, queenNum, c, queenLocation);
}
private void advance(int k,int queenNum ,int c[],String queenLocation[][])
{
for(int col=0;col<queenNum;col++)
{
c[k]=col;
if(isSafe(c, k))
{
if(k==queenNum-1)
{
init(queenLocation);