- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第二讲坦克大战面向对象设计(2) * 第二讲坦克大战面向对象设计(2) 本讲实现单机版对战和网络版对战。 本讲概要 坦克单机对战的实现 坦克网络对战的实现 单机对战 本节中将对坦克游戏进行扩展,增加另一辆坦克,由第二个人进行控制,进行两辆坦克的对战 只需要再创建一个Tank对象,由另外的键盘按键进行控制,这里我们使用“l”控制第二辆坦克左移,“p”控制上移,“\’”控制右移,“;”控制下移,空格键控制发炮。 坦克网络对战功能的实现 在上一节中,我们实现了坦克对战的功能,本节我们将结合第八章网络通信的知识,在上一节坦克对战功能的基础上增加网络对战的功能 编程思路 上一节的坦克对战中,两辆坦克都是由键盘控制,只不过控制两辆坦克的键不同而已 网络坦克对战功能中,一辆坦克由本机键盘控制。而另外一辆坦克由另外一台电脑的键盘控制,该电脑按键后,通过网络把按键信息传到本机,本机在得到信息之后,根据这个信息控制另一辆坦克的动作。其过程如图所示。 流程图 电脑1和电脑2互相之间发送各自的按键信息,控制对方游戏中一辆坦克的移动。进行网络通信可以使用TCP和UDP,这里我们使用TCP进行通信。 使用TCP通信 当使用TCP通信时,两台电脑要进行互相通信,需要有一台充当服务器的电脑,建立TCP服务器的代码如下: ServerSocket ss = new ServerSocket(8888); 其中ServerSocket是一个服务器类,该服务器的坚挺端口是8888,使用Socket s = ss.accept()方法等待客户端的连接 当客户连接到来之时accept()方法会返回一个Socket对象,该Socket对象就是与客户端连接的对象。 使用TCP通信 调用InputStream is = s.getInputStream()方法得到输入流,客户端的输入从这里读取; 调用OutputStream os=s.getOutputStream()方法得到输出流,发给客户端的数据从这里发出。 使用TCP通信 在客户端,通过调用Socket s = new Socket(“127.0.0.1”, 8888);语句,连接服务器的8888端口,连接成功之后得到一个Socket对象,该对象与服务器端的Socket对象对应,客户端的输入即是服务器的输出,客户端的输出即是服务器端的输入 使用TCP通信 在GameCanvas类中,定义两个属性,分别是: ServerSocket ss=null; Socket s=null; 这两个属性的默认值都是null,如果是服务器那么ss就应该被创建,如果是客户端,ss的值就是null,因此可以根据ss是否是null来判断是否服务器端。 还需要输入输出流对象,用来进行输入输出处理,这两个对象分别是: PrintWriter pw=null; BufferedReader br=null; 使用TCP通信 设置服务器 定义一个设置服务器端的setServer()方法 调用该方法把一个GameCanvas对象设置成服务器端,该方法传入一个port参数,用来设置服务器的监听端口。在方法里运行一个线程,在这个线程中运行accept()方法,等待客户端的连接,并且产生输入流和输出流 setServer()方法 public void setServer(final int port) { //服务器端操纵player2 Tank tmp=player; player=player2; player2=tmp; Thread th=new Thread(){ public void run() { try { ss=new ServerSocket(port); s=ss.accept(); pw=new PrintWriter(s.getOutputStream(),true); br=new BufferedReader( new InputStreamReader(s.getInputStream())); //敌人自动运行 new EnemyMovement().start(); }catch(Exception e){e.printStackTrace();}; } }; th.start(); } 设置客户端 定义一个客户端连接服务器的方法connect() 调用该方法使得客户端连接服务器,传入服务器IP和服务器端口作为参数 connect()方法 public void connect(Strin
您可能关注的文档
- 新编财务管理 第四版 课件加答案 全 附表 财务管理 高职.doc
- 新编财务会计16版教案1 2章.doc
- Flash CS4 Professional实用案例教程 第二版 高职多媒体 洪光 课件Flash CS4快速入门 第3章.ppt
- 新编财务会计16版教案第八章 投资性房地产和其他资产.doc
- 新编财务会计16版教案第九章 流动负债.doc
- 新编财务会计16版教案第三章金融资产.doc
- Flash CS4 Professional实用案例教程 第二版 高职多媒体 洪光 课件Flash CS4快速入门 第5章.ppt
- 新编财务会计16版教案第十三章财务报告.doc
- Illustrator CS4 实用案例教程 高职多媒体 葛洪央第1章 Illustrator基础.ppt
- 新编财务会计16版教案第十章 非流动负债.doc
- 电子教案 word版 +课程标准 大纲 电子教案:【项目4】搭建企业的网络营销平台.doc
- Java面向对象程序设计与应用开发教程第二讲图形用户界面应用篇.ppt
- 电子教案 word版 +课程标准 大纲 电子教案:【项目6】许可Email营销.doc
- Java面向对象程序设计与应用开发教程第七章Java多线程.ppt
- Java面向对象程序设计与应用开发教程第三讲 Java类的特性二.ppt
- 电子教案 word版 +课程标准 大纲 电子教案:【项目7】网络广告营销.doc
- 电子教案 word版 +课程标准 大纲 电子教案:【项目8】博客营销.doc
- Java面向对象程序设计与应用开发教程第十一章Java数据库连接.ppt
- 电子教案 word版 +课程标准 大纲 电子教案:【项目9】网络客户关系管理.doc
- Java面向对象程序设计与应用开发教程第四章异常处理.ppt
原创力文档


文档评论(0)