欢迎来到天天文库
浏览记录
ID:38669486
大小:792.52 KB
页数:15页
时间:2019-06-17
《五子棋对战实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验项目五子棋网络对战和聊天实验日期20160406实验报告要求:一、实验目的:学习和使用socket编程,熟练软件开发二、实验原理:使用socket进行网络通信,java作为编程语言三、实验要求:编写五子棋程序可以实现联机网络对战,并且可以进行聊天四、实验步骤、结果(程序+注释+截图)及分析:首先拟定编程语言与开发方案,选择java语言,考虑到java可以跨平台运行,然后决定把这个程序拆分为客户端、服务器两个部分,每个部分再分成5个小的部分实现不同功能。1、然后考虑使用java的swing包,创建ClientChessPanel类负责棋盘部分,包括判断
2、输赢,使用数组chesses[i][j]记录棋盘上棋子的分布,对数组进行不同的赋值表示网格节点上无棋、黑棋、白棋;使用playChessHandler作为鼠标单击事件,单击事件调用Clientskt中的函数传送棋子坐标以及输赢信息。drawChess函数画棋子,drawGrids画网格,gameOver判断棋盘棋子分布,输赢情况。importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;importChatOneToOneClient.Clientskt;classClientChessPan
3、elextendsJPanel{privatestaticfinallongserialVersionUID=1L;privateintspace=20;//网格间的距离privateintgrids=30;//棋盘的网格数privateintradius=space/2;//棋的半径Clientsktskt;//当chesses[i][j]=0,表示网格节点(i,j)上无棋//当chesses[i][j]=1,表示网格节点(i,j)上放白棋//当chesses[i][j]=2,表示网格节点(i,j)上放黑棋privateint[][]chesses=n
4、ewint[grids+1][grids+1];privateintcurrColor=1;//当前棋的颜色privateMouseListenerplayChessHandler=newMouseAdapter(){publicvoidmouseClicked(MouseEvente){if(skt.reMouseGo()){intx=e.getX();inty=e.getY();//放一颗棋子15if(x<=grids*space&&x>=0&&y<=grids*space&&y>=0)if(chesses[round(x)][round(y)]==
5、0){chesses[round(x)][round(y)]=currColor;repaint();//刷新图形skt.dataout("x:"+String.valueOf(round(x)));skt.dataout("y:"+String.valueOf(round(y)));skt.setMouseGo(false);if(gameOver(currColor)){skt.dataout("g:你输了");skt.chat.clientDialog=newClientMyDialog(skt.chat,"你赢了");skt.chat.clien
6、tDialog.setVisible(true);}currColor=currColor==1?2:1;//切换棋子的颜色}}}};publicintround(floata){//获得接近a的网格节点坐标floatf=a/space;returnMath.round(f);}publicClientChessPanel(intspace,intgrids,Clientsktskt){this.space=space;this.grids=grids;this.radius=space/2;this.skt=skt;setBackground(Colo
7、r.BLUE);setSize(space*grids,space*grids);addMouseListener(playChessHandler);startChess();}publicvoidstartChess(){clearGrids();//清空棋盘currColor=1;repaint();//刷新图形}privatevoidclearGrids(){for(inti=0;i<=grids;i++)for(intj=0;j<=grids;j++)chesses[i][j]=0;15}//画一颗棋子privatevoiddrawChess(
8、Graphicsg,intx,inty,intcolor){g.setColor
此文档下载收益归作者所有