简单JAVA五子棋代码.docx
- 文档编号:12196827
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:15
- 大小:168.25KB
简单JAVA五子棋代码.docx
《简单JAVA五子棋代码.docx》由会员分享,可在线阅读,更多相关《简单JAVA五子棋代码.docx(15页珍藏版)》请在冰豆网上搜索。
简单JAVA五子棋代码
简单JAVA五子棋代码
只需要建两个类就可以了
1.MainFrame类继承JFrame类
2.MainPanel类继承JPanel类实现接口MouseListener
两个类详细代码如下
MainFrame类,如下:
packagegame.gobang;
importjava.awt.BorderLayout;
importjava.awt.Color;
importjavax.swing.JFrame;
/**
*五子棋
*@WangJB
*@version19:
4613/03/17
*/
publicclassMainFrameextendsJFrame{
publicstaticvoidmain(String[]args){
MainPanelpanel=newMainPanel();
MainFrameframe=newMainFrame("五子棋");
frame.setSize(680,680);
panel.setBackground(Color.GRAY);
frame.add(panel,BorderLayout.CENTER);
panel.addMouseListener(panel);
frame.setVisible(true);
}
publicMainFrame(){
super();
}
publicMainFrame(Stringstr){
super(str);
}
}
MainPanel类如下:
packagegame.gobang;
importjava.awt.Color;
importjava.awt.Graphics;
importjava.awt.Panel;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjavax.swing.JOptionPane;
/**
*五子棋的面板设计
*@authorWangJB
*@version00.5913/3/16
*/
publicclassMainPanelextendsPanelimplementsMouseListener{
privatestaticfinalintCOLUMN=16;//列数
privatestaticfinalintROW=16;//行数
privatestaticfinalintGAP=40;//间距
privatestaticbooleanisBlack=true;
privatestaticintclick_X;
privatestaticintclick_Y;
privatechar[][]allChess=newchar[ROW][COLUMN];
publicMainPanel(){
super();
for(inti=0;i for(intj=0;j allChess[i][j]='*'; } } } publicvoidpaint(Graphicsg){ for(inti=0;i g.setColor(Color.BLACK); g.drawLine(20,20+i*GAP,640-20,20+i*GAP); } for(inti=0;i g.setColor(Color.BLACK); g.drawLine(20+i*GAP,20,20+i*GAP,640-20); } for(inti=0;i for(intj=0;j if(allChess[i][j]=='~'){ g.setColor(Color.WHITE); g.fillOval(5+i*40,5+j*40,30,30); g.drawOval(5+i*40,5+j*40,30,30); } if(allChess[i][j]=='! '){ g.setColor(Color.BLACK); g.fillOval(5+i*40,5+j*40,30,30); g.drawOval(5+i*40,5+j*40,30,30); } } } } publicbooleanisWin(intx,inty,booleanisColor){//判断是否为5个相同的棋子,是返回true,否返回false charch=allChess[x][y]; /*横向判断*/ intRLastX=x; while(RLastX>=0&&allChess[RLastX][y]==ch){//横向判断是否到达5个相同的棋子 RLastX--; } intRNum=0;//统计横向相同的棋子数 RLastX++; while(RLastX RNum++; RLastX++; } /*纵向判断*/ intLLastY=y; while(LLastY>=0&&allChess[x][LLastY]==ch){//纵向判断是否到达5个相同的棋子 LLastY--; } intLNum=0;//统计纵向相同的棋子数 LLastY++; while(LLastY LLastY++; LNum++; } /*左下右上判断*/ intLDLastX=x; intRULastY=y; while(LDLastX>=0&&RULastY LDLastX--; RULastY++; } intLDNum=0; LDLastX++; RULastY--; while(LDLastX LDNum++; LDLastX++; RULastY--; } /*左上右下判断*/ intRULastX=x; intLDLastY=y; while(RULastX>=0&&LDLastY>=0&&allChess[RULastX][LDLastY]==ch){ RULastX--; LDLastY--; } intRUNum=0; RULastX++; LDLastY++; while(RULastX>=0&&LDLastY RULastX++; LDLastY++; RUNum++; } if(RNum>=5||LNum>=5||RUNum>=5||LDNum>=5){ returntrue; } returnfalse; } @Override publicvoidmouseClicked(MouseEvente){ //TODOAuto-generatedmethodstub //System.out.println(e.getX()); //e.getY(); } publicvoidmousePressed(MouseEvente){//鼠标点击事件处理过程 //TODOAuto-generatedmethodstub intclick_x=e.getX(); intclick_y=e.getY(); intchess_x=Math.round((float)(click_x-20)/GAP); intchess_y=Math.round((float)(click_y-20)/GAP); click_X=chess_x; click_Y=chess_y; if(isBlack==true&&allChess[chess_x][chess_y]=='*'){ allChess[chess_x][chess_y]='! '; isBlack=false; } if(isBlack==false&&allChess[chess_x][chess_y]=='*'){ allChess[chess_x][chess_y]='~'; isBlack=true; } System.out.println(e.getX()); System.out.println(e.getY()); repaint(); for(intj=0;j<16;j++){ for(inti=0;i<16;i++){ System.out.print(allChess[i][j]+""); } System.out.println(); } System.out.println(); if(isWin(chess_x,chess_y,isBlack)){ System.out.println("你赢了"); } if(isWin(chess_x,chess_y,isBlack)){ if(isBlack){ JOptionPane.showMessageDialog(null,"白子赢了"); }else{ JOptionPane.showMessageDialog(null,"黑子赢了"); } System.exit(0); } } @Override publicvoidmouseReleased(MouseEvente){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseEntered(MouseEvente){ //TODOAuto-generatedmethodstub } @Override publicvoidmouseExited(MouseEvente){ //TODOAuto-generatedmethodstub } publicvoidsetAllChess(char[][]allChess){ this.allChess=allChess; } publicchar[][]getAllChess(){ returnallChess; } } 运行结果图片: 更多精彩代码请访问【安卓阅】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 JAVA 五子棋 代码