您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 18《Java项目实训》课程设计模板(2)
信息科学与工程学院课程设计题目:TicTacToe游戏姓名:郭磊学号:201312310109班级:3+2课程:java项目实训任课教师刘梦琳2014年12月20日课程设计任务书及成绩评定题目TicTacToe游戏课程设计的任务及要求任务:开发一个分布式的井字游戏的applet,分布式的井字游戏运行用户在因特网上任意不同机器上玩游戏。具体要求:服务器创建一个服务器套接字,并接受两个玩家一组的连接请求,构成一个会话,每个会话都是一个线程,管理两个玩家之间的通信并且判断游戏状态。服务器可以建立任意多个会话,在每一个会话中,第一个与服务器连接的客户端标志为玩家1,使用的棋子为x,第二个与服务器连接的客户端标志为玩家2,使用的棋子标记为o,服务器通知玩家各自使用的标记。一旦两个客户端都与服务器建立连接,服务器就启动一个线程,实现两个玩家的游戏课程设计所需的软件、硬件等硬件环境:Iterl(R)Core(TM)2DuoCPU,主频2.31GHz;内存3G;硬盘320G以上;1024×768显示分辨率软件环境:JDK6.0以上、eclipse等设计报告:1、设计目的和任务2、总体设计:包括程序设计组成框图、流程图。3、详细设计:包括模块功能说明:函数功能、入口及出口参数说明,函数调用关系描述等。4、调试与测试:包括调试方法,测试结果分析与讨论,测试过程中遇到的主要问题及采取的解决措施。5、源程序清单和执行结果:清单中应有足够的注释。任课教师评语成绩:教师签名:日期:目录绪论............................................................................................................................11.1设计目的........................................................................................................11.2设计任务........................................................................................................11.3运行环境........................................................................................................12总体设计....................................................................................................................22.1游戏运行原理................................................................................................22.2程序设计组成框图........................................................................................22.3程序设计流程图............................................................................................33详细设计实现............................................................................................................33.1系统结构.........................................................................................................43.2服务器端........................................................................................................43.3客户端..........................................................................................................123.4连接服务器..................................................................................................143.5游戏开始.......................................................................................................154心得体会..................................................................................................................18TicTacToe游戏1绪论1.1设计目的学习如何使用套接字数据流,使用多线程和网格开发一个分布式的井字游戏,分布式的井字游戏运行用户在因特网上任意不同的机器上玩游戏1.2设计任务开发一个井字游戏的Applet,该游戏允许两个游戏者在同一台机器上玩游戏。1.3运行环境环境是在个人笔记本上搭建的,根据运行情况得出本系统的运行环境至少为:硬件环境:Iterl(R)Core(TM)2DuoCPU,主频2.31GHz;内存3G;硬盘320G以上;1024×768显示分辨率软件环境:JDK6.0以上、eclipse等22总体设计2.1游戏运行原理服务器创建一个服务器套接字,并接受每两个玩家一组的连接请求,构成一个会话,每个会话都是一个线程,管理两个玩家之间的通信并且判断游戏状态。服务器可以建立任意多个会话,如图2-1所示:图2-1游戏运行原理服务器创建一个服务器套接字,并接受两个玩家一组的连接请求,构成一个会话,每个会话都是一个线程,管理两个玩家之间的通信并且判断游戏状态。服务器可以建立任意多个会话,在每一个会话中,第一个与服务器连接的客户端标志为玩家1,使用的棋子为x,第二个与服务器连接的客户端标志为玩家2,使用的棋子标记为o,服务器通知玩家各自使用的标记。一旦两个客户端都与服务器建立连接,服务器就启动一个线程,实现两个玩家的游戏2.2程序设计组成框图Tic-Tac-Toe游戏设计时,把它分为了不同的模块,每个模块赋予了不同的功能。程序的整体结构设计,如下图2-2所示服务器会话2会话1玩家1玩家2玩家2玩家13图2-2图2-32.3程序设计流程图TicTacToe客户端服务器服务器Socket网络连接会话处理界面生成开始请求连接服务器,并从服务器获知标记从服务器获取开始信号等待玩家标记第一个单元格,发送该单元格的行列索引给服务器从服务器接收状态如果状态为Win,显示赢家,如果玩家2获胜,接收玩家2的最后一步移动,打断循环如果状态为DRAW,显示游戏结束,打断循环如果状态为CONTINUE,获取玩家2选中的行列索引,并标记该单元格结束43详细设计实现3.1系统结构该游戏主要分为服务器和客户端两部分,服务器主要负责创建对话,并传递数据,客户端用来显示对方的动作,在界面上显示出来。3.2服务器端创建服务器套接字,接受来自第一个玩家的连接并且通过玩家谁是使用标记X的玩家1,接受来自第二个玩家的连接并且通知玩家谁是使用标记O的玩家2,启动会话线程。连接服务器端Sockettry{//createaserversocketServerSocketserverSocket=newServerSocket(8000);jtaLog.append(newDate()+:Serverstartedatsocket8000\n);//NumberasessionintsessionNo=1;//Readytocreateasessionforeverytwoplayerswhile(true){jtaLog.append(newDate()+:Waitforplayerstojoinsession+sessionNo+'\n');//connecttoplayer1Socketplayer1=serverSocket.accept();jtaLog.append(newDate()+:Player1joinedsession+5sessionNo+'\n');jtaLog.append(Player1'sIPaddress+player1.getInetAddress().getHostAddress()+'\n');//notifythattheplayerisPlayer1newDataOutputStream(player1.getOutputStream()).writeInt(PLAYER1);//connecttoplayer2Socketplayer2=serverSocket.accept();jtaLog.append(newDate()+:Player2joinedsession+sessionNo+'\n');jtaLog.append(Player2'sIPaddress+player2.getInetAddress().getHostAddress()+'\n');//notifythattheplayerisPlayer2newDataOutputStream(player2.getOutputStream()).writeInt(PLAYER2);//DisplaythissessionandincrementsessionnumberjtaLog.append(newDate()+:Startathreadforsession+sessionNo+++'\n');处理会话1)通知玩家1开始2)接受来自玩家1的被选中单元格的行列索引63)确定游戏状态(WIN,DRAW,CONTINUE)。如果玩家1获胜或者平局,就发送状态(PLAYER1_WON,DRAW)给两个玩家,然后发送玩家1的移动给玩家2,退出。4)如果状态为Continue,则通知玩家2参加投票,然后发送玩家1新选中的行列索引给玩家25)接收来自玩家2的被选中单元格的行列索引26)如果玩家2获胜,就发送状态(Player2_WON)给两个玩家,然后发送玩家2的移动给玩家1,退出7)如果是状态为CONTINUE,则发送这个状态,然后发送玩家2新选中的行列索引给玩家1classHandleASessionimplementsRunnable,TicTacToeContants{privateSocketplayer1;privateSocketplayer2;//createandinitializecellsprivatechar[][]cell=newchar[3][3];privateDataInputStreamfromPlayer1;privateDataOutputStreamtoPlayer1;privateDataInputStreamfromPlayer2;privateDataOutputStreamtoPlayer2;//continuetoplayprivatebooleancontinueToPlay=true;/**Constructathread*/pub
本文标题:18《Java项目实训》课程设计模板(2)
链接地址:https://www.777doc.com/doc-5499017 .html