Java程序设计实训教程课件实训二 网络五子棋_第1页
Java程序设计实训教程课件实训二 网络五子棋_第2页
Java程序设计实训教程课件实训二 网络五子棋_第3页
Java程序设计实训教程课件实训二 网络五子棋_第4页
Java程序设计实训教程课件实训二 网络五子棋_第5页
已阅读5页,还剩30页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实训二网络五子棋界面程序网络编程多线程输入输出客户端服务器涉及知识(java)异常处理输入输出(文件)多线程数据库界面网络程序2.1单机版五子棋游戏黑子先下,两人轮流下一个棋子。先连成五个的一方胜利。连成五个子的方向可以是水平,垂直,以及两个斜线方向。

2.1单机版五子棋游戏1.创建窗口及工具栏Five类FiveExtendsJFrameprivateJToolBartoolbar;privateJButtonstartButton;privateJButtonbackButton;privateJButtonexitButton;2.创建棋盘类ChessBoard类publicstaticfinalintMARGIN=15;//边距publicstaticfinalintGRID_SPAN=20;//网格间距publicstaticfinalintROWS=18;//棋盘行数publicstaticfinalintCOLS=18;//棋盘列数Imageimg;在Five类加入:privateChessBoardboardPanel;准备图片Boad.jpgToolkitgetDefaultToolkit()getImage()paintComponent()getPreferredSize():(Jfram在pack时,要知道board的大小)。3.创建棋子类(1)Chess类privateintcol;//棋子在棋盘中的列索引privateintrow;//棋子在棋盘中的行索引privateColorcolor;//颜色publicstaticfinalintDIAMETER=GRID_SPAN-2;ChessBoardcb;//棋子是要画在棋盘中,需要一个棋盘的引用publicvoiddraw(Graphicsg)在ChessBoard类加入:

Chessc=newChess(this,2,3,Color.BLACK);c.draw(g);Chessc1=newChess(this,5,2,Color.WHITE);c1.draw(g);测试棋子画出的效果。intxPos=col*cb.GRID_SPAN+cb.MARGIN;intyPos=row*cb.GRID_SPAN+cb.MARGIN;将棋盘行列转换为像素坐标:Ellipse2D.Float是Ellipse2D的内部类Ellipse2De=newEllipse2D.Float(xPos-DIAMETER/2,yPos-DIAMETER/2,,DIAMETER,DIAMETER);RadialGradientPaintpaint=newRadialGradientPaint(x,y,15,f,c);intx=xPos+DIAMETER/4;

inty=yPos-DIAMETER/4;float[]f={0f,1f};Color[]c={Color.WHITE,Color.BLACK};白色点的位置3.创建棋子类(2)4.实现单击鼠标下子ChessBoard类Chess[]chessList;//记录棋子的数组

intchessCount;//当前棋盘棋子的个数booleanisBlack=true;//默认开始是黑棋先privatebooleanhasChess(intcol,introw)//(col,row)处是否已经有棋子内部类:classMouseMonitorextendsMouseAdaptermousePressed(MouseEvente)方法中,在鼠标按下的位置创建一个棋子并添加到chessList中。将鼠标点的像素坐标转换成棋盘的行列intcol=(e.getX()-MARGIN+GRID_SPAN/2)/GRID_SPAN;introw=(e.getY()-MARGIN+GRID_SPAN/2)/GRID_SPAN;在paintComponent方法中将chessList中棋子全部画出来。5.添加判断胜利的功能ChessBoard类booleanisGamming=true;//游戏是否结束privatebooleanisWin(isWin(intcol,introw)privateChessgetChess(intcol,introw,Colorcolor)

在mousePressed方法中调用isWin(intcol,introw),进行游戏结束处理每下一个棋子,都需要在四个方向上判断是否形成了5个子连成一线,如果发现已经有5子连成一线了,则输出赢棋信息,并将isGamming设置为false。在mousePressed方法开始加入if(!isGamming)return;6.实现工具栏上的功能ChessBoard类publicvoidrestartGame()publicvoidgoback()

Five类内部类classActionMonitorimplementsActionListener重新开始悔棋退出7.改变鼠标指针的形状ChessBoard类内部类:classMouseMotionMonitorextendsMouseMotionAdapter

可以下棋的地方显示不可以下棋的地方显示2.2服务器端界面制作FiveServer类2.3客户端界面背景图片board.jpgPanelBoard类FiveClient类1.创建主窗口和棋盘图标:black.jpg,white.jpgPanelTiming类PanelUserList类PanelMessage类修改FiveClient类2.3客户端界面2.创建客户端界面右侧的三个类PanelControl类修改FiveClient类2.3客户端界面3.创建控制面板类2.4实现“连接主机”按钮的功能addAClientAClientBServerconnectClientCaddAtellName,addBaddCclientsadd1.连接服务器获取用户名服务器端(FiveServer)内部类Client增加属性添加两个方法startServer()tellName()客户端(FiveClient)内部监听器类ActionMonitor注册监听设置按钮的状态服务器端:ServerSocket构造方法的参数:端口号客户端:Socket构造方法的参数:服务器ip,端口号本机ip:127.0.0.12.将已经连接的客户端添加到用户列表中创建Command类,修改程序中的命令服务器类添加方法addAllUserToMe()addMeToAllUser()修改startServer()方法创建Communication类客户端类添加connect()方法Communication添加内部线程类ReceaveThread

2.5实现“加入游戏”按钮的功能(3)refuse:A(2)Join:AClientAClientBServer(1)Join:CClientC(4)refuse拒绝的情况(3)agree:A(2)Join:A(5)Change:A:playingChange:C:playingClientAClientBServer(1)Join:CClientC(5)guessColor(4)猜先(5)guessColor2.5实现“加入游戏”按钮的功能同意的情况1.客户端申请加入后对方选择同意或拒绝2.5实现“加入游戏”按钮的功能Command类中增加以命令常量在客户端加入“加入游戏”按钮处理“加入游戏”按钮监听器FiveClient类中添加方法join()Communication类中,添加join()方法服务器接收jion命令并发送给对手,ClientThread类对手接到命令将选择结果发送给服务器创建计时对话框类TimeDialog修改Communication类2.完成猜棋并准备好下棋2.5实现“加入游戏”按钮的功能服务器收到拒绝或同意的处理拒绝处理:将拒绝信息发给客户端同意处理:猜先,将结果发给客户端客户端收到拒绝的处理-----显示信息框客户端收到同意的处理PanelBoard类加入属性idGoingCommunication类处理同意情况修改PanelBoard类的内部类MouseMonitor2.6实现下棋功能1.客户端向服务器发送下棋消息2.6实现下棋功能在Command类中添加命令在Communication类中添加方法go()wins()在PanelBoard类中调用上面两个方法PanelBoard添加FiveClient类的引用在PanelBoard类中调用go()方法和wins()方法2.服务器接收消息并处理2.6实现下棋功能Communication类接收消息PanelBoard类添加方法addOpponentChess()winsGame()lossesGame()resetGame()3.客户端接收消息并处理2.7实现“放弃游戏”的功能1.Command类添加常量

2.添加“放弃游戏”的监听代码

3.在Communication类中天添加geveup()方法

4.服务器接收giveup命令并处理2.7实现“放弃游戏”的功能1.设计计时线程类

2.猜先后启动倒计时线程2.8加入计时功能2.9完善“关闭程序”按钮的功能1.在Command类中添加命令

2.客户端向服务器发送命令

修改“关闭程序”按钮的响应代码

Communication类添加方法disConnect()

3.服务器处理quit命令

4.客户端处理delete命令2.9完善“关闭程序”按钮的功能1.目前的程序每方总的用时是在程序中指定的,如果用户希望在申请对局时自己指定用时时间,程序中应如何处理?2.在我们的程序中,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论