ADD file via upload

main
p5p9m3wxy 1 year ago
parent ef689e42eb
commit fbb256986f

@ -0,0 +1,201 @@
import java.awt.event.ActionListener;
import java.awt.event.MouseListener;
import java.awt.event.ActionEvent;
import java.awt.Graphics;
import java.awt.Color;
import java.util.ArrayList;
//实现对GoBangframe下棋界面的监听接口处理
public class frameListener implements GoBangconfig,MouseListener{
public GoBangframe gf;
//public int turn;//判断当前轮到谁了1表示黑方2表示白方
//动态数组对象的实例化
//public ArrayList<ChessPosition>ChessPositonList=new ArrayList<ChessPosition>();
public void setGraphics(GoBangframe gf) {
this.gf=gf;
//清除棋盘的全部信息
for(int i=0;i<row;i++)
for(int j=0;j<column;j++) {
gf.isAvail[i][j]=0;
}
gf.ChessPositonList.clear();
gf.turn=1;
gf.repaint();
}
public void mouseClicked(java.awt.event.MouseEvent e) {
int x=e.getX();
int y=e.getY();
//计算棋子要落在棋盘的哪个交叉点上
int countx=(x/40)*40+20;
int county=(y/40)*40+20;
Graphics g=gf.getGraphics();
// System.out.println(gf.isAvail[0][0]);
if(gf.isAvail[(countx-20)/40][(county-20)/40]!=0) {
if(ButtonListener.q>1) {
return;
}
gf.textA.setText("此处已经有棋子了,请下在其它地方");
//System.out.println("此处已经有棋子了,请下在其它地方");
}
else {
//计算棋盘上棋子在数组中相应的位置
int colu=(countx-20)/40;
int ro=(county-20)/40;
if(gf.turn==1) {
//先获取要落的地方
g.setColor(Color.black);
//落子
g.fillOval(countx-size/2, county-size/2, size, size);
//设置当前位置已经有棋子了,棋子为黑子
gf.isAvail[colu][ro]=1;
//把当前所下的棋子位置保存在动态数组中
gf.ChessPositonList.add(new ChessPosition(colu,ro));
gf.turn++;
gf.textA.setText("黑方已下:白方手");
//判断是否已经出现五颗棋子了
//列判断
//首先界定数组范围,防止越界
int imin=colu-4,imax=colu+4;
if(imin<0) imin=0;
if(imax>18) imax=18;
int count1=0;//判断相连的黑棋子数
for(int i=imin;i<=imax;i++) {
if(gf.isAvail[i][ro]==1) count1++;
//如果出现了其他棋子,或者是没有棋子时,就重新开始计数
else count1=0;
if(count1==5) {
gf.textA.setText(" 黑方赢!");
return;
}
}
//行判断
//首先界定数组范围,防止越界
int jmin=ro-4,jmax=ro+4;
if(jmin<0) jmin=0;
if(jmax>18) jmax=18;
int count2=0;//判断相连的棋子数
for(int j=jmin;j<=jmax;j++) {
if(gf.isAvail[colu][j]==1) count2++;
else count2=0;
if(count2==5) {
gf.textA.setText(" 黑方赢!");
return;
}
//如果出现了其他棋子,或者是没有棋子时,就重新开始计数
}
//左对角线判断
//首先界定数组范围,防止越界
int count3=0;//判断相连的棋子数
for(int i=-4;i<=4;i++) {
if((colu+i>=0)&&(ro+i>=0)&&(colu+i<=18)&&(ro+i<=18)) {
if(gf.isAvail[colu+i][ro+i]==1) count3++;
//如果出现了其他棋子,或者是没有棋子时,就重新开始计数
else count3=0;
if(count3==5) {
gf.textA.setText(" 黑方赢!");
return;
}
}
}
//右对角线判断
int count4=0;//判断相连的棋子数
for(int i=-4;i<=4;i++) {
if((colu+i>=0)&&(ro-i>=0)&&(colu+i<=18)&&(ro-i<=18)) {
//System.out.print("count4:"+count4);
if(gf.isAvail[colu+i][ro-i]==1) count4++;
//如果出现了其他棋子,或者是没有棋子时,就重新开始计数
else count4=0;
if(count4==5) {
gf.textA.setText(" 黑方赢!");
return;
}
}
}
}
else {
g.setColor(Color.white);
g.fillOval(countx-size/2, county-size/2, size, size);
//设置当前位置已经有棋子了,棋子为白子
gf.ChessPositonList.add(new ChessPosition(colu,ro));
gf.isAvail[colu][ro]=2;
gf.turn--;
gf.textA.setText("白方已下:黑方手");
//列判断
//首先界定数组范围,防止越界
int imin=colu-4,imax=colu+4;
if(imin<0) imin=0;
if(imax>18) imax=18;
int count1=0;//判断相连的白棋子数
for(int i=imin;i<=imax;i++) {
if(gf.isAvail[i][ro]==2) count1++;
//如果出现了其他棋子,或者是没有棋子时,就重新开始计数
else count1=0;
if(count1==5) {
gf.textA.setText(" 白方赢!");
return;
}
}
//行判断
//首先界定数组范围,防止越界
int jmin=ro-4,jmax=ro+4;
if(jmin<0) jmin=0;
if(jmax>18) jmax=18;
int count2=0;//判断相连的棋子数
for(int j=jmin;j<=jmax;j++) {
if(gf.isAvail[colu][j]==2) count2++;
//如果出现了其他棋子,或者是没有棋子时,就重新开始计数
else count2=0;
if(count2==5) {
gf.textA.setText(" 白方赢!");
return;
}
}
//左对角线判断
//首先界定数组范围,防止越界
int count3=0;//判断相连的棋子数
for(int i=-4;i<=4;i++) {
if((colu+i>=0)&&(ro+i>=0)&&(colu+i<=18)&&(ro+i<=18)) {
if(gf.isAvail[colu+i][ro+i]==2) count3++;
//如果出现了其他棋子,或者是没有棋子时,就重新开始计数
else count3=0;
if(count3==5) {
gf.textA.setText(" 白方赢!");
return;
}
}
}
//右对角线判断
int count4=0;//判断相连的棋子数
for(int i=-4;i<=4;i++) {
if((colu+i>=0)&&(ro-i>=0)&&(colu+i<=18)&&(ro-i<=18)) {
if(gf.isAvail[colu+i][ro-i]==2) count4++;
//如果出现了其他棋子,或者是没有棋子时,就重新开始计数
else count4=0;
if(count4==5) {
gf.textA.setText(" 白方赢!");
return;
}
}
}
}
}
}
public void mousePressed(java.awt.event.MouseEvent e) {
}
public void mouseReleased(java.awt.event.MouseEvent e) {
}
public void mouseEntered(java.awt.event.MouseEvent e) {
}
public void mouseExited(java.awt.event.MouseEvent e) {
}
}
Loading…
Cancel
Save