import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.awt.Graphics; import java.lang.Math; public class dauber extends Applet implements MouseListener { Point schwarz[]=new Point[181]; //一共有181个黑子 Point weiss[]=new Point[180]; //一共有180个白子 Point qizi; //为了检测是否有重合的棋子 int n=0; //检测鼠标击键次数 int achse_x, achse_y; //获取鼠标点击处的坐标值 int i1=0; //记录黑子个数 int i2=0; //记录白子个数 int x[]=new int[361]; //记录棋盘上所有点的横坐标 int y[]=new int[361]; //记录棋盘上所有点的纵坐标 boolean mouseunten=false; //检测鼠标键是否按下 boolean mouseoben=false; //检测鼠标键是否抬起 boolean test_schwarz=false; //通过检测黑棋走 boolean test_weiss=false; //通过检测白棋走 public void init() { int y1=15; //只是为初始化棋盘上所有点而设的变量 for(int i=0; i<19; i++){x[i]=15; y[i]=y1; y1 +=20;} y1=15; for(int i=19; i<38; i++){x[i]=35; y[i]=y1; y1 +=20;} y1=15; for(int i=38; i<57; i++){x[i]=55; y[i]=y1; y1 +=20;} y1=15; for(int i=57; i<76; i++){x[i]=75; y[i]=y1; y1 +=20;} y1=15; for(int i=76; i<95; i++){x[i]=95; y[i]=y1; y1 +=20;} y1=15; for(int i=95; i<114; i++){x[i]=115; y[i]=y1; y1 +=20;} y1=15; for(int i=114; i<133; i++){x[i]=135; y[i]=y1; y1 +=20;} y1=15; for(int i=133; i<152; i++){x[i]=155; y[i]=y1; y1 +=20;} y1=15; for(int i=152; i<171; i++){x[i]=175; y[i]=y1; y1 +=20;} y1=15; for(int i=171; i<190; i++){x[i]=195; y[i]=y1; y1 +=20;} y1=15; for(int i=190; i<209; i++){x[i]=215; y[i]=y1; y1 +=20;} y1=15; for(int i=209; i<228; i++){x[i]=235; y[i]=y1; y1 +=20;} y1=15; for(int i=228; i<247; i++){x[i]=255; y[i]=y1; y1 +=20;} y1=15; for(int i=247; i<266; i++){x[i]=275; y[i]=y1; y1 +=20;} y1=15; for(int i=266; i<285; i++){x[i]=295; y[i]=y1; y1 +=20;} y1=15; for(int i=285; i<304; i++){x[i]=315; y[i]=y1; y1 +=20;} y1=15; for(int i=304; i<323; i++){x[i]=335; y[i]=y1; y1 +=20;} y1=15; for(int i=323; i<342; i++){x[i]=355; y[i]=y1; y1 +=20;} y1=15; for(int i=342; i<361; i++){x[i]=375; y[i]=y1; y1 +=20;} //以上19个循环语句是给棋盘上所有点赋值 addMouseListener(this); } //end of function init public void mousePressed(MouseEvent e) //按下鼠标键函数 { achse_x=e.getX(); //获取鼠标点击处的坐标值 achse_y=e.getY(); //获取鼠标点击处的坐标值 mouseunten=true; mouseoben=false; if(gueltigClick()){ if((n%2)==0){ //判断是白棋走还是黑棋走 for(int i=0;i<361;i++) { if((((achse_x-x[i])<=10)&&((achse_x-x[i])>=-10))&&(((achse_y-y[i])<=10)&&((achse_y-y[i])>=-10))) { schwarz[i1]=new Point(x[i]-10,y[i]-10); break; } } //该循环是为了让棋子刚好落在交点上即使鼠标点偏了 } else{ for(int i=0;i<361;i++) { if((((achse_x-x[i])<=10)&&((achse_x-x[i])>=-10))&&(((achse_y-y[i])<=10)&&((achse_y-y[i])>=-10))) { weiss[i2]=new Point(x[i]-10,y[i]-10); break; } } //该循环是为了让棋子刚好落在交点上即使鼠标点偏了 } //判断是白棋走还是黑棋走 } //鼠标点在有效位置判断语句 } //end of function mousePressed public void mouseReleased(MouseEvent e) //释放鼠标键函数画图是在松开鼠标键后开始的 { if(gueltigClick()) { mouseunten=false; mouseoben=true; if((n%2)==0){ test_schwarz=true; test_weiss=false; } else{ test_weiss=true; test_schwarz=false; } n++; } repaint(); } //end of function mouseReleased public void mouseClicked(MouseEvent e) {} //鼠标单击函数 public void mouseEntered(MouseEvent e) {} //判断鼠标是否进入有效区函数 public void mouseExited (MouseEvent e) {} //判断鼠标是否离开有效区函数 public void mouseMoved (MouseEvent e) {} //判断鼠标是否移动函数 public void paint(Graphics g) //画图函数 { int line_anfang_x1=15; //画棋盘横线 int line_anfang_y1=15; //画棋盘横线 int line_end_x1=375; //画棋盘横线 int line_end_y1=15; //画棋盘横线 int line_anfang_x2=15; //画棋盘竖线 int line_anfang_y2=15; //画棋盘竖线 int line_end_x2=15; //画棋盘竖线 int line_end_y2=375; //画棋盘竖线 g.setColor(Color.black); g.drawLine(10,10,380,10); //画棋盘外框为了美观 g.drawLine(10,10,10,380); //画棋盘外框为了美观 g.drawLine(10,380,380,380); //画棋盘外框为了美观 g.drawLine(380,380,380,10); //画棋盘外框为了美观 for(int i=0;i<19;i++){ g.drawLine(line_anfang_x1,line_anfang_y1,line_end_x1,line_end_y1); line_anfang_y1 +=20; line_end_y1 +=20; } //画棋盘横线 for(int i=0;i<19;i++){ g.drawLine(line_anfang_x2,line_anfang_y2,line_end_x2,line_end_y2); line_anfang_x2 +=20; line_end_x2 +=20; } //画棋盘竖线 for(int i=0;i385)||(achse_y<5)||(achse_y>385)) { return false; } for(int i=0;i<361;i++) { if((((achse_x-x[i])<=10)&&((achse_x-x[i])>=-10))&&(((achse_y-y[i])<=10)&&((achse_y-y[i])>=-10))) { qizi=new Point(x[i]-10,y[i]-10); break; } } for(int i=0;i