日期:2014-05-20  浏览次数:20688 次

新手求教动态八皇后问题!!!
已经有了棋盘的代码还有八皇后的代码应该要怎样让八皇后在棋盘上显示呢!
棋盘代码:
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);
    if((i+j)%2==0)
    {     //当小方格的坐标和刚好是偶数时,
     l.setBackground(Color.black);   //设置为方格为黑色
     l.setOpaque(true);   //设置为不透明 
    }
    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);
 }
}

八皇后代码:
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);
                    for(int i=0;i<queenNum;i++)//填充棋盘
                    {
                        queenLocation[i][c[i]]="*";  
                    }