📄 chessroom.java
字号:
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.image.*;
import java.io.*;
import java.awt.event.*;
import java.lang.String;
/*
* 0 - No Chess.
* 1 - Black.
* 2 - White.
*/
class ChessRoom extends Panel
{
private int x=0;
private int y=0;
public int _col, _row;
private int index[][]=new int[15][15];
private Border border=new Border();
ClientFrame cf;
ChessRoom(ClientFrame cf)
{
this.cf = cf;
add(border);
//border.setLocation(15,5);
border.setBounds (40,27,420,420);
border.setBackground(Color.DARK_GRAY);
border.setForeground(Color.white);
this.setLayout (null);
border.addMouseListener(new mouselistener());
setSize(500,500);
setVisible(true);
setBackground(Color.DARK_GRAY);
}
public void addChess(int row,int col,int color)
{
index[row][col] = color;
border.repaint();
}
class mouselistener extends MouseAdapter//点击棋盘 并将下子信息通知对方
{
public void mouseClicked(MouseEvent evt)
{
if(cf.is_own_turn == false)
return;
x=evt.getX();
y=evt.getY();
for(int i=0;i<=14;i+=1)
for(int j=0;j<=14;j+=1)
{
if(x>14+i*28-14&&x<=14+i*28+14&&y>14+j*28-14&&y<=14+j*28+14)
//判断时候越界
if(index[i][j]==0)
{
cf.setOwnTurn(false);
_row=i;
_col=j;
if(index[_row][_col]!=0)
return;
addChess(_row, _col, cf.is_black ? 1 : 2);
ClientFrame.out.println(
MsgType.PUTCHESS+" "+
cf.adversary+" "+
_row+" "+
_col);
ClientFrame.out.flush();
return;
}
}
}
}
class Border extends Canvas
{
Image image[]=new Image[3];
public Border()
{
for(int i=0;i<=14;i++)
for(int j=0;j<=14;j++)
index[i][j]=0; //清空棋盘
image[0]=this.getToolkit().getImage(ClassLoader.getSystemResource("003.gif"));
image[1]=this.getToolkit().getImage(ClassLoader.getSystemResource("004.gif"));
MediaTracker mt=new MediaTracker(this);
mt.addImage(image[0],1);
mt.addImage(image[1],2);
try
{
mt.waitForAll();
}catch(Exception e){}
//mt.addImage(image[2],3,24,24);
}
public void paint(Graphics g)
{
Graphics2D g2D = (Graphics2D)g;
BufferedImage bimage1=(BufferedImage)this.createImage(this.getWidth(),this.getHeight());
Graphics gg = bimage1.createGraphics();
for(int i=14;i<=406;i+=28)
{
gg.drawLine(i,14,i,406);
}
for(int j=14;j<=406;j+=28)
{
gg.drawLine(14,j,406,j);
}
//draw yuan
//draw line
for(int i=0;i<=14;i+=1)
for(int j=0;j<=14;j+=1)
{
if(index[i][j]==1)
{
gg.drawImage(this.image[0],i*28,j*28,28,28,this);
}
else if(index[i][j]==2)
{
gg.drawImage(this.image[1],i*28+2,j*28+3,24,22,this);
}
}
g2D.drawImage(bimage1,0,0,this);
}
public void update(Graphics g)
{
paint(g);
}
}
public void clear()
{
for(int i=0; i<15; i++)
for(int j=0; j<15; j++)
{ index[i][j]=0;
paint(getGraphics());}
}
public boolean isOver(int row, int col)
{
int dirs[][]={
{1, 0},
{1, 1},
{0, 1},
{-1, 1}};
// Get color of adversary
int ac=index[row][col];
int leng=1;
for(int dir=0; dir<4; dir++)
{
int c, r;
int i;
leng=1;
for(i=1; i<5; i++)
{
c=col+i*dirs[dir][0];
r=row+i*dirs[dir][1];
if(c<0 || r<0 || c>14 || r>14)
break;
if(index[r][c]==ac)
leng++;
else
break;
}
for(i=1; i<5; i++)
{
c=col-i*dirs[dir][0];
r=row-i*dirs[dir][1];
if(c<0 || r<0 || c>14 || r>14)
break;
if(index[r][c]==ac)
leng++;
else
break;
}
System.out.println("Received chess at ["+
row+" "+col+
"] leng is now "+leng);
if(leng >= 5)
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -