您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 17JAVA实习报告
实习报告实习性质:JAVA程序设计学生姓名:胡桂豪专业班级:计应103指导教师:万青、陈戈、谢先伟实习时间:2011-12-31—2012-1-6实习地点:4312重庆工程职业技术学院学生姓名专业班级指导教师胡桂豪计应103万青、陈戈、谢先伟实习时间2011-12-31至2012-1-6实习地点4312实习名称JAVA程序设计自我总结(包括遵守纪律、增长知识、动手能力、独立工作、团队协作等方面)指导教师意见实习单位意见并盖章(院内实习由系签署)考核等级目录1实习目的.....................................................................................................................................................42实习内容.....................................................................................................................................................42.1设计文档..........................................................................................................................................42.2需求分析...........................................................................................................................................62.3设计方法...........................................................................................................................................62.3.1ChessFrame主要功能...........................................................................................................62.3.2游戏主窗体...........................................................................................................................72.3.3主菜单...................................................................................................................................82.3.4创建待机室...........................................................................................................................92.3.5服务器端.............................................................................................................................102.3.6客户端.................................................................................................................................123实习心得...................................................................................................................................................141实习目的根据教学计划的安排,本课程在后半学期将进行一周的课程实习安排,完成《JAVA小游戏:五子棋》的开发。通过实习,可以使学生进一步掌握Java面向对象设计方法、JDK常用类、Java窗口界面设计、数据库访问等方面的知识和技能,将前面学习的基础知识应用到实际的软件开发中去,积累应用程序分析、设计、编码、调试的经验。Java的广泛流行是与它所编写的程序可以在网络上运行且可以跨平台。事实上,支持Java的浏览器内置Java虚拟机,使得Java的小程序能够在网络上完全地传送和运行。这样使得程序人员即使不具备有关的网络知识,也能编写出高质量的网络通信程序。“网上五子棋游戏”便是其最好的例子。本程序是一个基于网络协议为TCP/IP的网上对弈游戏,采用服务器-客户端的网络架构模式,允许网络上的多台机器(可能是两台机器)同时运行,一台用作服务器,始终处理网络上要求它进行服务的请求。如果有机器请求与它进行连接,用作服务器的机器接受之后就可以进行相互之间的通信。通过本程序,我们初步熟悉并掌握java语言的基本知识,掌握服务器-客户端的网络架构模式,为以后学习高级web开发课程做准备。2实习内容2.1设计文档(1)界面棋盘设计在对棋盘界面设计方面要考虑简洁友好,符合游戏者需求。棋子的设计方面系统中设置了两种棋子颜色,white或者black,游戏者可自行选择。棋子怎样画出来,怎样使棋子按我们所想的方式来绘制出来是设计的主要难题。运行时要求当每次点击鼠标的时候就在点击鼠标的地方画一个棋子,所以得定义一个棋子的类使点击鼠标时系统把棋子绘制出来。这样主界面里的棋子就确定了,而且也确定了几个所需要的类。可以先定义好这些类了。有了以上的准备就可以把棋盘绘制出来了,下棋时每次在适当位置点击鼠标的时候就在所点击的位置上画出你这个角色的颜色,然后计算机会自动的下棋,计算机自动下棋要有一个控制变量来控制能不能下棋。人可以随意的下子,可是计算机就要计算在哪个位置下子了。这里由计算机下子的算法来确定,人人对战的话就不象单机游戏一样,要计算机来判断人下子之后计算机下那一个地方了,人人对战只要在双方下子的时候判断赢棋情况,当然还要同步的控制两个人下棋的顺序,这样的话就要用到线程了,各自都继承或实现线程类或接口,以便各自能随时单独控制接发消息。(2)算法设计对于五子棋游戏,无论人机对战,还是双人对战,都需要判断棋盘上是否存在五子连珠情况,这既是游戏名字的由来,也是游戏结束的标志。判断五子连珠的原理是从横,竖,左斜线,右斜线4条线上判断是否存在5个相连的同类棋子。对战一方落子后,在该处向8个方向检测连续的同类棋子,如果检测到直线方向上存在5个连续的同类棋子(包含本位置棋子),则判断为“连五”并结束检测循环。基于检测结果,可以判断游戏是否结束,并根据获胜方的落子代码判断获胜方是谁。由于不考虑禁手问题,在实现“连五”过程中,我们可以考虑完成“双四”,“四三”,“双三”,“冲四”,“活三”,“活四”来实现目的。活四:有两个点能形成“连五”的四就是活四;冲四:只有一个点能形成“连五”的四叫做“冲四”,或者叫做“单四”;活三:己方在落一子就能形成“活四”的三叫做“活三”。“活三”分为“连活三”和“跳活三”。连活三:在棋盘某一条阳线或阴线上有同色三子相连,且在此三子两端延长线上有一端至少有一个,另一端至少有两个无子的交叉点与此三子紧密相连。跳活三:中间仅间隔一个无子交叉点的连三,但两端延长线均至少有一个无子的交叉点与此三子相连。双三:由于黑方走一着在无子交叉点上同时形成二个或二个以上黑方活的局面。双四:由于黑方走一着在无子交叉点上同时形成二个或二个以上黑方四的局面。四三:指某一方同时具备两个先手,其中一个是四,一个是活三。在实现上面这些高级算法的时候,我们需要一个基础,就是对制定位置周围情况进行检测。在棋盘上面,棋子存在8个移动方向,检测时需要对每个方向进行检测。为了简单直观,这里将每步棋子的移动生成一个新的棋子。2.2需求分析一款小游戏的确立是建立在各种各样的需求上面的,这种需求往往来自于玩家的实际需求,其中玩家的实际需求最为重要.面对游戏拥有不同知识和理解层面的玩家,游戏制作人对玩家需求的理解程度,在很大程度上决定了此类游戏开发的成败.因此如何更好地的了解,分析,明确玩家需求,并且能够准确,清晰以文档的形式表达给游戏制作人,保证开发过程按照满足玩家需求为目的正确开发方向进行,是每游戏游戏制作人需要面对的问题。作为五子棋的设计需要考虑到的最基本的需求莫过于人机对战与人人对战功能的实现,当然还有下棋过程中的下棋悔棋功能以及判断游戏的胜负等方面的要求。当然最好是要考虑到界面的友好性,作为一个娱乐软件,还应该考虑到玩家在游戏时的舒适性。我们通过使用套接字SOCKET来实现游戏之间的通讯,它是基于点对点的通讯,开始让服务器初始化建立服务器套接字SOCKET,基于某个端口PORT,然后打开客户端套接字SOCKET,连接到服务器端的地址ADDRESS和端口PORT,在这之间可能发生异常EXCEPTION。“网络五子棋”是由服务器端和客户端组成的。游戏分为黑方与白方,只要其中一方的棋子形成“五子连珠”之势,即可获胜。网络五子棋游戏服务器端主要有三个类:OmokServer类、Omok_Thread类(线程类)和BManager类(消息广播者)。它的主要功能是连接客户端,使多个客户端连接在一起,最终实现联网。2.3设计方法2.3.1ChessFrame主要功能类ChessFrame主要功能是创建五子棋游戏主窗体和菜单,主要代码如下:classChessFrameextendsJFrameimplementsActionListener{privateString[]strsize={20x15,30x20,40x30};privateString[]strmode={人机对弈,人人对弈};publicstaticbooleaniscomputer=true,checkcomputer=true;privateintwidth,height;privateChessModelcm;privateMainPanelmp;2.3.2游戏主窗体构造五子棋游戏的主窗体,主要代码如下:publicChessFrame(){this.setTitle(五子棋游戏);cm=newChessModel(1);mp=newMainPanel(cm);Containercon=this.getContentPane();con.add(mp,Center);this.setResizable(false);this.addWindowListener(newChessWindowEvent());MapSize(20,15);JMenuBarmbar=newJMenuBar();this.setJMenuBar(mbar);JMenugameMenu=newJMenu(游戏);mbar.add(makeMenu(gameMenu,newObject[]{开局,棋盘,模式,null,退出},this));JMenulookMenu=newJMenu(视图);mbar.add(makeMenu(lookMenu,newObject[]{Metal,Motif,Windows},this));J
本文标题:17JAVA实习报告
链接地址:https://www.777doc.com/doc-1909558 .html