📄 chess.java
字号:
if((now_qizi==red_master_1||now_qizi==blue_master_1)&&now_h!=goto_h&&Math.abs(goto_h-now_h)!=1)return(false);
if((now_qizi==red_master_1||now_qizi==blue_master_1)&&now_l!=goto_l&&Math.abs(goto_l-now_l)!=1)return(false);
if((now_qizi==blue_nurse_1||now_qizi==blue_nurse_2||now_qizi==red_nurse_1||now_qizi==red_nurse_2)&&(Math.abs(goto_h-now_h)!=1||Math.abs(goto_l-now_l)!=1))return(false);
if((now_qizi==blue_nurse_1||now_qizi==blue_nurse_2||now_qizi==red_nurse_1||now_qizi==red_nurse_2)&&(goto_l<3||goto_l>5))return(false);
if((now_qizi==blue_nurse_1||now_qizi==blue_nurse_2)&&goto_h>2)return(false);
if((now_qizi==red_nurse_1||now_qizi==red_nurse_2)&&goto_h<7)return(false);
if((now_qizi==blue_elef_1||now_qizi==blue_elef_2)&&goto_h>4)return(false);
if((now_qizi==red_elef_1||now_qizi==red_elef_2)&&goto_h<5)return(false);
if((now_qizi==blue_elef_1||now_qizi==blue_elef_2||now_qizi==red_elef_1||now_qizi==red_elef_2)&&(Math.abs(goto_h-now_h)!=2||Math.abs(goto_l-now_l)!=2))return(false);
if((now_qizi==blue_elef_1||now_qizi==blue_elef_2||now_qizi==red_elef_1||now_qizi==red_elef_2)&&qipan[(goto_l+now_l)/2][(goto_h+now_h)/2]!=0)return(false);
if((now_qizi<=16&&now_qizi>=12)&&goto_h<now_h)return(false);
if((now_qizi<=32&&now_qizi>=28)&&goto_h>now_h)return(false);
if(isbing(now_qizi)&&now_h!=goto_h&&Math.abs(goto_h-now_h)!=1)return(false);
if(isbing(now_qizi)&&now_l!=goto_l&&Math.abs(goto_l-now_l)!=1)return(false);
if((now_qizi<=16&&now_qizi>=12)&&now_h<5&&goto_l!=now_l)return(false);
if((now_qizi<=32&&now_qizi>=28)&&now_h>4&&goto_l!=now_l)return(false);
if((now_qizi==blue_horse_1||now_qizi==blue_horse_2||now_qizi==red_horse_1||now_qizi==red_horse_2)&&(Math.abs(now_h-goto_h)!=2&&Math.abs(now_h-goto_h)!=1))return(false);
if((now_qizi==blue_horse_1||now_qizi==blue_horse_2||now_qizi==red_horse_1||now_qizi==red_horse_2)&&(Math.abs(now_l-goto_l)!=1&&Math.abs(now_l-goto_l)!=2))return(false);
if((now_qizi==blue_horse_1||now_qizi==blue_horse_2||now_qizi==red_horse_1||now_qizi==red_horse_2)&&Math.abs(now_l-goto_l)==Math.abs(now_h-goto_h))return(false);
if((now_qizi==blue_horse_1||now_qizi==blue_horse_2||now_qizi==red_horse_1||now_qizi==red_horse_2)&&now_h-goto_h==2&&qipan[now_l][now_h-1]!=0)return(false);
if((now_qizi==blue_horse_1||now_qizi==blue_horse_2||now_qizi==red_horse_1||now_qizi==red_horse_2)&&now_h-goto_h==-2&&qipan[now_l][now_h+1]!=0)return(false);
if((now_qizi==blue_horse_1||now_qizi==blue_horse_2||now_qizi==red_horse_1||now_qizi==red_horse_2)&&now_l-goto_l==2&&qipan[now_l-1][now_h]!=0)return(false);
if((now_qizi==blue_horse_1||now_qizi==blue_horse_2||now_qizi==red_horse_1||now_qizi==red_horse_2)&&now_l-goto_l==-2&&qipan[now_l+1][now_h]!=0)return(false);
return(true);
}
public void carry(int goto_l,int goto_h)
{
int now_l=qizi[now_qizi][1],now_h=qizi[now_qizi][2];
Graphics g=getGraphics();
if(haveqizi(goto_l,goto_h))qizi[qipan[goto_l][goto_h]][4]=1;
g.drawImage(everybox[now_l][now_h],ltoL(now_l)-34,htoH(now_h)-34,this);
g.drawImage(qizi_pic[now_qizi],ltoL(goto_l)-34,htoH(goto_h)-34,this);
qizi[now_qizi][1]=goto_l;qizi[now_qizi][2]=goto_h;
qipan[now_l][now_h]=0;
qipan[goto_l][goto_h]=now_qizi;
}
public int between(int start_l,int start_h,int end_l,int end_h)
{
int count=0;
if(start_l==end_l)
{
if(start_h>end_h){int t=start_h;start_h=end_h;end_h=t;}
for(int i=start_h+1;i<end_h;i++)
if(qipan[start_l][i]!=0)count++;
}
else
{
if(start_l>end_l){int t=start_l;start_l=end_l;end_l=t;}
for(int i=start_l+1;i<end_l;i++)
if(qipan[i][start_h]!=0)count++;
}
return(count);
}
public void unpickout(int unpickout_qizi_l,int unpickout_qizi_h)
{
Graphics g=getGraphics();
g.drawImage(everybox[unpickout_qizi_l][unpickout_qizi_h],ltoL(unpickout_qizi_l)-34,htoH(unpickout_qizi_h)-34,this);
g.drawImage(qizi_pic[now_qizi],ltoL(unpickout_qizi_l)-34,htoH(unpickout_qizi_h)-34,this);
}
public void pickout(int pickout_qizi_l,int pickout_qizi_h)
{
Graphics g=getGraphics();
setForeground(Color.white);
g.drawLine(ltoL(pickout_qizi_l)-33,htoH(pickout_qizi_h)-33,ltoL(pickout_qizi_l)-33+5,htoH(pickout_qizi_h)-33);
g.drawLine(ltoL(pickout_qizi_l)-33,htoH(pickout_qizi_h)-33,ltoL(pickout_qizi_l)-33,htoH(pickout_qizi_h)-33+5);
}
public void movepic(int mouse_l_num,int mouse_h_num)
{
Graphics g=getGraphics();
g.drawImage( everybox[moveqizi_l_num][moveqizi_h_num],ltoL(moveqizi_l_num)-34,htoH(moveqizi_h_num)-34,this);
if(haveqizi(moveqizi_l_num,moveqizi_h_num)&&qipan[moveqizi_l_num][moveqizi_h_num]!=now_qizi)g.drawImage(qizi_pic[qipan[moveqizi_l_num][moveqizi_h_num]],ltoL(moveqizi_l_num)-34,htoH(moveqizi_h_num)-34,this);
g.drawImage(qizi_pic[now_qizi],ltoL(mouse_l_num)-34,htoH(mouse_h_num)-34,this);
}
public void unmovepic()
{
Graphics g=getGraphics();
g.drawImage( everybox[moveqizi_l_num][moveqizi_h_num],ltoL(moveqizi_l_num)-34,htoH(moveqizi_h_num)-34,this);
if(haveqizi(moveqizi_l_num,moveqizi_h_num)&&qipan[moveqizi_l_num][moveqizi_h_num]!=now_qizi)g.drawImage(qizi_pic[qipan[moveqizi_l_num][moveqizi_h_num]],ltoL(moveqizi_l_num)-34,htoH(moveqizi_h_num)-34,this);
g.drawImage(everybox[qizi[now_qizi][1]][qizi[now_qizi][2]],ltoL(qizi[now_qizi][1])-34,htoH(qizi[now_qizi][2])-34,this);
g.drawImage(qizi_pic[now_qizi],ltoL(qizi[now_qizi][1])-34,htoH(qizi[now_qizi][2])-34,this);
}
public ChessPanel()
{
datainti();
System.out.println("0,0,0,9:"+between(0,0,9,0));
setLayout(null);
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseMoved(MouseEvent e)
{
if(now_qizi!=0)
{
Graphics g=getGraphics();
int mouse_l_pix=e.getX(),mouse_h_pix=e.getY();
if(mouse_l_pix>ltoL(8))mouse_l_pix=ltoL(8);
int mouse_l_num=Ltol(mouse_l_pix);
int mouse_h_num=Ltol(mouse_h_pix);
if(mouse_l_num!=moveqizi_l_num||mouse_h_num!=moveqizi_h_num)
{
qizi[now_qizi][3]=1;
movepic(mouse_l_num,mouse_h_num);
pickout( mouse_l_num,mouse_h_num);
moveqizi_l_num=mouse_l_num;
moveqizi_h_num=mouse_h_num;
}
}
}
});
addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
int x=e.getX(),y=e.getY();
int l_num=Ltol(x),h_num=Htoh(y);
mouse_sign=-mouse_sign;
if(mouse_sign==-1)
{
if(isOK(l_num,h_num))
{
carry(l_num,h_num);
System.out.println("Carrying "+now_qizi+"to"+l_num+h_num);
qizi[now_qizi][3]=0;
unpickout(qizi[now_qizi][1],qizi[now_qizi][2]);
now_qizi=0;
turn_number=-turn_number;
}
else
{
unmovepic();
qizi[now_qizi][3]=0;
unpickout(qizi[now_qizi][1],qizi[now_qizi][2]);
now_qizi=0;
System.out.println("cancel pick out");
}
}
if(mouse_sign==1)
{
if(haveqizi(l_num,h_num))
{
now_qizi=qipan[l_num][h_num];
if(turn_number==red&&isred(now_qizi)||turn_number==blue&&(!isred(now_qizi)))
{
pickout(l_num,h_num);
qizi[now_qizi][3]=1;
moveqizi_l_num=l_num;
moveqizi_h_num=h_num;
System.out.println("pick out:"+now_qizi);
}
else
{
now_qizi=0;
mouse_sign=-1;
}
}
else
{
mouse_sign=-1;
System.out.println("cancel pick out"+" "+haveqizi(l_num,h_num));
}
}
System.out.println("NOW:"+now_qizi);
System.out.println() ;
}
});
}
public void paint(Graphics g)
{
g.drawImage(qipan_pic,0,0,this);
for(int i=1;i<33;i++)
{
if(qizi[i][4]!=1&&qizi[i][3]!=1)g.drawImage(qizi_pic[i] ,ltoL(qizi[i][1])-33,htoH(qizi[i][2])-33,this) ;
}
for(int i=1;i<33;i++)
{
if(qizi[i][3]==1)g.drawImage(qizi_pic[i] ,ltoL(moveqizi_l_num)-33,htoH(moveqizi_h_num)-33,this) ;
}
}
public void updata(Graphics g)
{
paint(g);
}
}
class MyFrame extends JFrame
{
JPanel myPanel=new ChessPanel();
public MyFrame()
{
Container ctPane=getContentPane();
Graphics g=getGraphics();
setTitle("Tube's Chinese Chess");
setBounds(0,0,1024,737);
setResizable(false);
addComponentListener(new ComponentAdapter()
{
public void componentMoved(ComponentEvent e)
{
}
}
);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
ctPane.setLayout(null);
myPanel.setLayout(null);
myPanel.setBackground(Color.red);
myPanel.setBounds(0,0,1024,737);
ctPane.add(myPanel);
}
}
public class Chess
{
public static void main(String args[])
{
JFrame chessframe=new MyFrame();
chessframe.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -