c五子棋实验报告篇一:五子棋对战实验报告实验项目五子棋网络对战和聊天实验日期XX0406实验报告要求: 一、实验目的: 学习和使用socket编程,熟练软件开发二、实验原理: 使用socket进行网络通信,java作为编程语言三、实验要求: 编写五子棋程序可以实现联机网络对战,并且可以进行聊天四、实验步骤、结果(程序+注释+截图)及分析: 首先拟定编程语言与开发方案,选择java语言,考虑到java可以跨平台运行, 然后决定把这个程序拆分为客户端、服务器两个部分,每个部分再分成5个小的部分实现不同功能。 1、然后考虑使用java的swing包,创建ClientChessPanel类负责棋盘部分,包括判断输赢,使用数组chesses[i][j]记录棋盘上棋子的分布,对数组进行不同的赋值表示网格节点上无棋、黑棋、白棋;使用playChessHandler作为鼠标单击事件,单击事件调用Clientskt中的函数传送棋子坐标以及输赢信息。drawChess函数画棋子,drawGrids画网格,gameOver判断棋盘棋子分布,输赢情况。 .*; .*; .*; ; classClientChessPanelextendsJPanel{ 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=newint[grids+1][grids+1]; privateintcurrColor=1;//当前棋的颜色 privateMouseListenerplayChessHandler=newMouseAdapter(){ publicvoidmouseClicked(MouseEvente){ if(()){ intx=(); inty=(); //放一颗棋子 if(x=0&&y=0) if(chesses[round(x)][round(y)]==0){ chesses[round(x)][round(y)]=currColor; repaint();//刷新图形 ("x:"+(round(x))); ("y:"+(round(y))); (false); if(gameOver(currColor)){ ("g:你输了"); =newClientMyDialog(,"你赢了"); (true); } currColor=currColor==1?2:1;//切换棋子的颜色} } } }; publicintround(floata){//获得接近a的网格节点坐标 floatf=a/space; (f); } lientChessPanel(intspace,intgrids,Clientsktskt){ =space; =grids; =space/2; =skt; setBackground(); setSize(space*grids,space*grids); addMouseListener(playChessHandler); startChess(); } publicvoidstartChess(){ clearGrids();//清空棋盘 currColor=1; repaint();//刷新图形} privatevoidclearGrids(){ for(inti=0;i for(intj=0;j chesses[i][j]=0; } //画一颗棋子 privatevoiddrawChess(Graphicsg,intx,inty,intcolor){
c五子棋实验报告 来自淘豆网m.daumloan.com转载请标明出处.