📄 jpanel2.java
字号:
import java.awt.Graphics;
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.*;
public class JPanel2 extends JPanel {
int a=0,b;
int N=8,num=1;
int xx=1,yy=1;
int x[]=new int[N+1];
int y[]=new int[N+1];
boolean flag=false; //flag=false表示
int drawflag=1;
int huix,huiy;
/************定义*********************/
int getxx[]=new int[400],getyy[]=new int[400];
int gi=0,bi=0;
public JPanel2(){
setBackground(Color.white);
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
// }
}
public void backDraw(){
Graphics g=getGraphics();
int x=50,y=50;
int c,i=1;
int width=50,high=50;
g.drawLine(0,1,200,300);
/****************消隐bi************************/
g.setColor(Color.white);
g.fillRect(x+getxx[bi]*high,y+getyy[bi]*width,width,high);
/****************显示bi-1************************/
g.setColor(Color.black);
g.drawRect(x+getxx[bi]*high,y+getyy[bi]*width,width,high);
i=getyy[bi-1];
g.fillRect(x+getxx[bi-1]*high,y+getyy[bi-1]*width,width,high);
//if(getyy[bi-2])
//bi=bi-1;
}
public void fulldraw(){
int width=50,high=50;
int x=50,y=50;
Graphics gg=getGraphics();
gg.setColor(Color.white);
gg.fillRect(0,0,500,500 );
for(int i=1;i<=8;i++){
for(int j=1;j<=8;j++)
gg.fillRect(x+i*high,y+j*width,width,high);
}
}
public void paint(Graphics gs) {
int x=50,y=50;
int c;
int xn[]=new int[2];
int yn[]=new int[2];
int width=50,high=50;
//gs.setColor(getBackground() );
//setBackground(Color.white);
System.out.println("sdfewfw");
//gs.setColor(Color.white);
// gs.fillRect(0,0,600,500);
gs.setColor(Color.black);
for(int i=1;i<=8;i++){
for(int j=1;j<=8;j++)
gs.drawRect(x+i*high,y+j*width,width,high);
}
//gs.drawRect(x+high,y+width,width,high);
if(num<N+1){
gs.setColor(Color.black);
huiy=yy;
huix=xx;
System.out.println("yyyyy="+yy);
System.out.println("huiyyy="+huiy);
if(bi==gi){
getXY();
gi=gi+1;
getxx[gi]=xx;
getyy[gi]=yy;
bi=gi;
}
else{
xx=getxx[bi];
yy=getyy[bi];
bi=bi+1;
}
if(yy<huiy){ //回溯的时候
for(int i=1;i<=9;i++){
gs.setColor(Color.white);
gs.fillRect(x+i*high,y+yy*width,width-1,high-1);
gs.fillRect(x+i*high,y+huiy*width,width-1,high-1);
gs.fillRect(x+i*high,y+(yy+1)*width,width-1,high-1);
if(i!=9){
gs.setColor(Color.black);
gs.drawRect(x+i*high,y+yy*width,width,high);
gs.drawRect(x+i*high,y+(yy+1)*width,width,high);
}
else{
gs.setColor(Color.black);
gs.drawLine(x+9*width,y+width,x+9*width,y+9*width);
}
}
}
gs.setColor(Color.black);
gs.fillRect(x+xx*high,y+yy*width,width,high);
}
else
drawflag=drawflag+1;
print();
// gs.fillRect(0,0,300,300);
// for(int i=1;i<=8;i++){
// c=gettest();
// gs.fillRect(x+c*high,y+i*width,width,high);
// }
}
public int getNum(){
int a;
a=num;
System.out.println(a);
return a;
}
public void print (){
for(int i=1;i<=8;i++)
System.out.println("yp="+y[i]);
}
public boolean check(int n,int yn){//该方法用来检验冲突,int n,int y为被检验的行值和列值,如果该位置不冲突,返回true;
//int n=this.n;
//int yn=this,yn; n
for(int j=1;j<n;j++){
// System.out.println("y[j]="+y[j]);
//System.out.println(" yn="+yn);
if((Math.abs(n-j) == Math.abs(y[j] - yn))||(y[j]==yn))
return false;
}
return true;
}
public int layer(int i,int yn){ //i是第i层,yn表示第num层的取值
int j=i;
for(;yn<N+1;yn++,j++){
// System.out.println("yn="+yn);
if(check(i,yn)==true){ //如果check不成功说明被杀
y[i]=yn;
System.out.println("ynnn="+y[i]);
flag=false;
//return yn;
break;
}
//else //check不成功
}
if(yn==N+1){ //这一层不成功
flag=true;
return 9;
}
return yn;
}
public void creatQ(int a){
System.out.println("fancreatQ1="+y[1]);
for(int i=1;i<=N;i++)
y[i]=1;
y[1]=a;
System.out.println("fancreatQ2="+y[1]);
}
public void FanNum(int n){
num=n;
System.out.println("="+num);
}
public void getXY(){
if(num<N+1){
layer(num,y[num]);
if(flag){
xx=8;
yy=num;
}
else{
yy=num;
xx=y[num];
}
System.out.println("num="+num);
System.out.println("yn="+y[num]);
if(flag&&num!=1&&num!=2){
if(num==3){
System.out.println("Error");
}
num=num-2;
y[num]=y[num]+1; //四的答案是什么再调试
}
else{
num=num+1;
if(num<=N){
y[num]=1;
}
}
}
System.out.println("yy="+yy);
System.out.println("xx="+xx);
}
private void jbInit() throws Exception {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -