import javax.swing.*;
import java.awt.event.*;
import java.awt.*;public class GamePanel extends JPanel {
int X=0;
int Y=0;
private int x=0,y=0;
private int[][] Chess=new int[8][8];
int playflag=1;
int count=0;
public void paintComponent(Graphics g){//draw chess
super.paintComponent(g);
//画棋盘
g.drawRect(0,0,600,600);
g.setColor(Color.CYAN);
g.fillRect(0, 0, 600, 600);
g.setColor(Color.BLACK);
for(int i=10;i<=540;i+=60){
g.drawLine(i,10,i,490);
}
for(int i=10;i<=540;i+=60){
g.drawLine(10,i,490,i);
}
//画棋子
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
if(Chess[i][j]==1){
g.setColor(Color.BLACK);
g.drawOval(i*60+15,j*60+15,50,50);
g.fillOval(i*60+15,j*60+15,50,50);
}
if(Chess[i][j]==2){
g.setColor(Color.white);
g.drawOval(i*60+15,j*60+15,50,50);
g.fillOval(i*60+15,j*60+15,50,50);
}
}
}
}
class DrChListener implements MouseListener{
public void mouseClicked(MouseEvent e){}
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e){
x=e.getX();
y=e.getY();
X=x/60;
Y=y/60;
//先判断该位置有无棋子
if(playflag==1){
if(Chess[X][Y]==0){
heicheck();
playflag=2;
}
}
if(playflag==2){
if(Chess[X][Y]==0){
baicheck();
playflag=1;
}
}
repaint();
}
public void mouseEntered(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
}
public GamePanel(){
setPreferredSize(new Dimension(500,500));
addMouseListener(new DrChListener());
for(int i=0;i<=7;i++){
for(int j=0;j<=7;j++){
Chess[i][j]=0;
}
}
Chess[3][3]=1;
Chess[4][4]=1;
Chess[3][4]=2;
Chess[4][3]=2;
}
//下黑棋
public void heicheck(){
heicheckl(X,Y);
if(count>0&&Chess[X-1][Y]==2){
for(int i=0;i<=count;i++){
Chess[X-i][Y]=1;
}
count=0;
}
heichecklu(X,Y);
if(count>0&&Chess[X-1][Y-1]==2){
for(int i=0;i<=count;i++){
Chess[X-i][Y-i]=1;
}
count=0;
}
heichecku(X,Y);
if(count>0&&Chess[X][Y-1]==2){
for(int i=0;i<=count;i++){
Chess[X][Y-i]=1;
}
count=0;
}
heicheckru(X,Y);
if(count>0&&Chess[X+1][Y-1]==2){
for(int i=0;i<=count;i++){
Chess[X+i][Y-i]=1;
}
count=0;
}
heicheckr(X,Y);
if(count>0&&Chess[X+1][Y]==2){
for(int i=0;i<=count;i++){
Chess[X+i][Y]=1;
}
count=0;
}
heicheckrd(X,Y);
if(count>0&&Chess[X+1][Y+1]==2){
for(int i=0;i<=count;i++){
Chess[X+i][Y+i]=1;
}
count=0;
}
heicheckd(X,Y);
if(count>0&&Chess[X][Y+1]==2){
for(int i=0;i<=count;i++){
Chess[X][Y+i]=1;
}
count=0;
}
heicheckld(X,Y);
if(count>0&&Chess[X-1][Y+1]==2){
for(int i=0;i<=count;i++){
Chess[X-i][Y+i]=1;
}
count=0;
}
}
public void heicheckl(int x,int y){
if(x==-1){
count=-9;
return;
}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckl(x-1,y);
count++;
}
public void heichecklu(int x,int y){
if(y==-1||x==-1){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heichecklu(x-1,y-1);
count++; } public void heichecku(int x,int y){
if(y==-1){
count=-9;
return;}
if(Chess[x][y]==1){
count=0;
return;}
heichecku(x,y-1);
count++;
}
public void heicheckru(int x,int y){
if(x==8||y==-1){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckru(x+1,y-1);
count++;
}
public void heicheckr(int x,int y){
if(x==8){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckr(x+1,y);
count++;
}
public void heicheckrd(int x,int y){
if(x==8||y==8){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckrd(x+1,y+1);
count++;
}
public void heicheckd(int x,int y){
if(y==8){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckd(x,y+1);
count++;
}
public void heicheckld(int x,int y){
if(x==-1||y==8){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckld(x-1,y+1);
count++;
}
//下白棋
public void baicheck (){
baicheckl(X,Y);
if(count>0&&Chess[X-1][Y]==1){
for(int i=0;i<=count;i++){
Chess[X-i][Y]=2;
}
count=0;
}
count=0;
baichecklu(X,Y);
if(count>0&&Chess[X-1][Y-1]==1){
for(int i=0;i<=count;i++){
Chess[X-i][Y-i]=2;
}
count=0;
}
count=0;
baichecku(X,Y);
if(count>0&&Chess[X][Y-1]==1){
for(int i=0;i<=count;i++){
Chess[X][Y-i]=2;
}
count=0;
}
count=0;
baicheckru(X,Y);
if(count>0&&Chess[X+1][Y-1]==1){
for(int i=0;i<=count;i++){
Chess[X+i][Y-i]=2;
}
count=0;
}
count=0;
baicheckr(X,Y);
if(count>0&&Chess[X+1][Y]==1){
for(int i=0;i<=count;i++){
Chess[X+i][Y]=2;
}
count=0;
}
count=0;
baicheckrd(X,Y);
if(count>0&&Chess[X+1][Y+1]==1){
for(int i=0;i<=count;i++){
Chess[X+i][Y+i]=2;
}
count=0;
}
count=0;
baicheckd(X,Y);
if(count>0&&Chess[X][Y+1]==1){
for(int i=0;i<=count;i++){
Chess[X][Y+i]=2;
}
count=0;
}
count=0;
baicheckld(X,Y);
if(count>0&&Chess[X-1][Y+1]==1){
for(int i=0;i<=count;i++){
Chess[X-i][Y+i]=2;
}
count=0;
}
count=0;
}
public void baicheckl(int x,int y){
if(x==-1){
count=-9;
return;
}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckl(x-1,y);
count++;
}
public void baichecklu(int x,int y){
if(y==-1||x==-1){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baichecklu(x-1,y-1);
count++; }
public void baichecku(int x,int y){
if(y==-1){
count=-9;
return;}
if(Chess[x][y]==2){
count=0;
return;}
baichecku(x,y-1);
count++;
}
public void baicheckru(int x,int y){
if(x==8||y==-1){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckru(x+1,y-1);
count++;
}
public void baicheckr(int x,int y){
if(x==8){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckr(x+1,y);
count++;
}
public void baicheckrd(int x,int y){
if(x==8||y==8){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckrd(x+1,y+1);
count++;
}
public void baicheckd(int x,int y){
if(y==8){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckd(x,y+1);
count++;
}
public void baicheckld(int x,int y){
if(x==-1||y==8){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckld(x-1,y+1);
count++;
}
}算法
import java.awt.event.*;
import java.awt.*;public class GamePanel extends JPanel {
int X=0;
int Y=0;
private int x=0,y=0;
private int[][] Chess=new int[8][8];
int playflag=1;
int count=0;
public void paintComponent(Graphics g){//draw chess
super.paintComponent(g);
//画棋盘
g.drawRect(0,0,600,600);
g.setColor(Color.CYAN);
g.fillRect(0, 0, 600, 600);
g.setColor(Color.BLACK);
for(int i=10;i<=540;i+=60){
g.drawLine(i,10,i,490);
}
for(int i=10;i<=540;i+=60){
g.drawLine(10,i,490,i);
}
//画棋子
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
if(Chess[i][j]==1){
g.setColor(Color.BLACK);
g.drawOval(i*60+15,j*60+15,50,50);
g.fillOval(i*60+15,j*60+15,50,50);
}
if(Chess[i][j]==2){
g.setColor(Color.white);
g.drawOval(i*60+15,j*60+15,50,50);
g.fillOval(i*60+15,j*60+15,50,50);
}
}
}
}
class DrChListener implements MouseListener{
public void mouseClicked(MouseEvent e){}
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e){
x=e.getX();
y=e.getY();
X=x/60;
Y=y/60;
//先判断该位置有无棋子
if(playflag==1){
if(Chess[X][Y]==0){
heicheck();
playflag=2;
}
}
if(playflag==2){
if(Chess[X][Y]==0){
baicheck();
playflag=1;
}
}
repaint();
}
public void mouseEntered(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
}
public GamePanel(){
setPreferredSize(new Dimension(500,500));
addMouseListener(new DrChListener());
for(int i=0;i<=7;i++){
for(int j=0;j<=7;j++){
Chess[i][j]=0;
}
}
Chess[3][3]=1;
Chess[4][4]=1;
Chess[3][4]=2;
Chess[4][3]=2;
}
//下黑棋
public void heicheck(){
heicheckl(X,Y);
if(count>0&&Chess[X-1][Y]==2){
for(int i=0;i<=count;i++){
Chess[X-i][Y]=1;
}
count=0;
}
heichecklu(X,Y);
if(count>0&&Chess[X-1][Y-1]==2){
for(int i=0;i<=count;i++){
Chess[X-i][Y-i]=1;
}
count=0;
}
heichecku(X,Y);
if(count>0&&Chess[X][Y-1]==2){
for(int i=0;i<=count;i++){
Chess[X][Y-i]=1;
}
count=0;
}
heicheckru(X,Y);
if(count>0&&Chess[X+1][Y-1]==2){
for(int i=0;i<=count;i++){
Chess[X+i][Y-i]=1;
}
count=0;
}
heicheckr(X,Y);
if(count>0&&Chess[X+1][Y]==2){
for(int i=0;i<=count;i++){
Chess[X+i][Y]=1;
}
count=0;
}
heicheckrd(X,Y);
if(count>0&&Chess[X+1][Y+1]==2){
for(int i=0;i<=count;i++){
Chess[X+i][Y+i]=1;
}
count=0;
}
heicheckd(X,Y);
if(count>0&&Chess[X][Y+1]==2){
for(int i=0;i<=count;i++){
Chess[X][Y+i]=1;
}
count=0;
}
heicheckld(X,Y);
if(count>0&&Chess[X-1][Y+1]==2){
for(int i=0;i<=count;i++){
Chess[X-i][Y+i]=1;
}
count=0;
}
}
public void heicheckl(int x,int y){
if(x==-1){
count=-9;
return;
}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckl(x-1,y);
count++;
}
public void heichecklu(int x,int y){
if(y==-1||x==-1){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heichecklu(x-1,y-1);
count++; } public void heichecku(int x,int y){
if(y==-1){
count=-9;
return;}
if(Chess[x][y]==1){
count=0;
return;}
heichecku(x,y-1);
count++;
}
public void heicheckru(int x,int y){
if(x==8||y==-1){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckru(x+1,y-1);
count++;
}
public void heicheckr(int x,int y){
if(x==8){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckr(x+1,y);
count++;
}
public void heicheckrd(int x,int y){
if(x==8||y==8){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckrd(x+1,y+1);
count++;
}
public void heicheckd(int x,int y){
if(y==8){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckd(x,y+1);
count++;
}
public void heicheckld(int x,int y){
if(x==-1||y==8){
count=-9;
return;}
else if(Chess[x][y]==1){
count=0;
return;}
heicheckld(x-1,y+1);
count++;
}
//下白棋
public void baicheck (){
baicheckl(X,Y);
if(count>0&&Chess[X-1][Y]==1){
for(int i=0;i<=count;i++){
Chess[X-i][Y]=2;
}
count=0;
}
count=0;
baichecklu(X,Y);
if(count>0&&Chess[X-1][Y-1]==1){
for(int i=0;i<=count;i++){
Chess[X-i][Y-i]=2;
}
count=0;
}
count=0;
baichecku(X,Y);
if(count>0&&Chess[X][Y-1]==1){
for(int i=0;i<=count;i++){
Chess[X][Y-i]=2;
}
count=0;
}
count=0;
baicheckru(X,Y);
if(count>0&&Chess[X+1][Y-1]==1){
for(int i=0;i<=count;i++){
Chess[X+i][Y-i]=2;
}
count=0;
}
count=0;
baicheckr(X,Y);
if(count>0&&Chess[X+1][Y]==1){
for(int i=0;i<=count;i++){
Chess[X+i][Y]=2;
}
count=0;
}
count=0;
baicheckrd(X,Y);
if(count>0&&Chess[X+1][Y+1]==1){
for(int i=0;i<=count;i++){
Chess[X+i][Y+i]=2;
}
count=0;
}
count=0;
baicheckd(X,Y);
if(count>0&&Chess[X][Y+1]==1){
for(int i=0;i<=count;i++){
Chess[X][Y+i]=2;
}
count=0;
}
count=0;
baicheckld(X,Y);
if(count>0&&Chess[X-1][Y+1]==1){
for(int i=0;i<=count;i++){
Chess[X-i][Y+i]=2;
}
count=0;
}
count=0;
}
public void baicheckl(int x,int y){
if(x==-1){
count=-9;
return;
}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckl(x-1,y);
count++;
}
public void baichecklu(int x,int y){
if(y==-1||x==-1){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baichecklu(x-1,y-1);
count++; }
public void baichecku(int x,int y){
if(y==-1){
count=-9;
return;}
if(Chess[x][y]==2){
count=0;
return;}
baichecku(x,y-1);
count++;
}
public void baicheckru(int x,int y){
if(x==8||y==-1){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckru(x+1,y-1);
count++;
}
public void baicheckr(int x,int y){
if(x==8){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckr(x+1,y);
count++;
}
public void baicheckrd(int x,int y){
if(x==8||y==8){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckrd(x+1,y+1);
count++;
}
public void baicheckd(int x,int y){
if(y==8){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckd(x,y+1);
count++;
}
public void baicheckld(int x,int y){
if(x==-1||y==8){
count=-9;
return;}
else if(Chess[x][y]==2){
count=0;
return;}
baicheckld(x-1,y+1);
count++;
}
}算法
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货