从零开始Java游戏开发PPT课件

上传人:沈*** 文档编号:181433549 上传时间:2023-01-13 格式:PPT 页数:33 大小:1,012.50KB
收藏 版权申诉 举报 下载
从零开始Java游戏开发PPT课件_第1页
第1页 / 共33页
从零开始Java游戏开发PPT课件_第2页
第2页 / 共33页
从零开始Java游戏开发PPT课件_第3页
第3页 / 共33页
资源描述:

《从零开始Java游戏开发PPT课件》由会员分享,可在线阅读,更多相关《从零开始Java游戏开发PPT课件(33页珍藏版)》请在装配图网上搜索。

1、2021/3/9108游戏3-22021/3/92目标:为游戏添加网络通信功能和游戏逻辑,利用Socket进行网络通信,C/S架构服务器端和客户端编写,B/S架构实现。任务:开发网络对弈程序2021/3/93完成项目开发:程序运行时,有两个客户端通过网络进行对奕。2021/3/94步骤一:先完成简单的C/S架构步骤二:再完成第二个例,实现一个服务器与多个客户端通信步骤三:再为服务器端创建线程,实现多线程服务器步骤四:最后加入分析两客户端通信的信息,实现游戏规则的代码2021/3/95网络通信就是通过某种方法让一台计算机与其它计算机交换数据。通信就是给其它计算机传数据,或者接收其它计算机发来的数

2、据。对网络的任何形式的访问最后都归结为从网卡接收数据或向网卡传送数据。网络通信解决两个问题:(1)如何识别不同的计算机。(2)如何传送数据。2021/3/96网络中的两台计算机靠协议进行通信网络中用IP标识不同的通信实体IP:219.123.14.110IP:116.123.214.108http ftp mail 2021/3/97在两台电脑间传送数据时,传送或接收数据的先后顺序,数据的格式等内容的约定构成通信的协议。Internet网的数据传送有很多协议,如TCP/IP,UDP,FTP等,协议不同,具体到网络通信程序,接收和发送数据部分的代码会有不同。本次的例子都是采用TCP/IP协议。2

3、021/3/98网络上不同的计算机用IP来标识。实际上一个IP对应一张网卡。如果一台电脑上有多张网卡,那么就需要多个IP来标识每一张网卡。每个网卡有多个端口,供应用程序采用不同的通信协议传输数据。每种协议都采用不同的端口号,端口号可以设置,如设置某网卡用8080号端口进行TCP/IP协议方式的数据传输。2021/3/99一般网络上程序都是一个服务器,一个客户端,这种程序的总体结构叫架构,如上图所示这种总体结构叫C/S架构(即客户/服务器)架构。C/S架构中,提出数据访问要求的程序叫客户端,被提出数据访问要求的程序叫服务器端。一个客户端可能是一台配置很高的电脑,一个服务器端可能只是一台普通电脑。

4、客户端和服务器端可以是同一台电脑。CSCSCS2021/3/910网络很普遍,所以,几乎所有的编程语言都提供网络编程的组件。Java提供Socket组件供网络编程使用。Socket是一个类。在用Java进行网络编程时,只需使用Socket的有关方法,按照一定步骤编写出接收数据,处理数据,或处理数据,发送数据的代码即可。2021/3/911事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的API来完成这些工作。Socket就是其中之一,对于Java而言,这些API存在于 这个包里面

5、,因此只要导入这个包就可以准备网络编程了。2021/3/912Java提供了对TCP套接字的良好的支持,有两种套接字类:.Socket;.ServerSocket;当编写连接到已有服务的客户端软件的时候使用Socket类。当编写绑定到本地端口以提供服务的服务器软件的时候使用ServerSocket类。这是与DatagramSocket的UDP工作方式不同的地方-在TCP中,连接服务器地和从客户端接收数据的函数被分为两个独立的类。2021/3/913Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是get

6、OutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据)。2021/3/914要完成这个工作,需要完成三个部分的工作,以下依次说明:1、建立服务器类 2、建立客户端代码 3、建立用户界面2021/3/915创建服务器对象:ServerSocket server=new

7、 ServerSocket(9998)建立一个Socket连接:Socket incoming=server.accept()输入流和输出流:BufferedReader in=new BufferedReader(new InputStreamReader(incoming.getInputStream();PrintWriter out=new PrintWriter(incoming.getOutputStream(),true);随后,就可以使用in.readLine()方法得到客户端的输入,也可以使用out.println()方法向客户端发送数据。关闭这两个数据流 out.close

8、();in.close();2021/3/916创建一个Socket对象:Socket socket=new Socket(168.160.12.42,9998);数据的输入和输出 in=new BufferedReader(new InputStreamReader(socket.getInputStream();out=new PrintWriter(socket.getOutputStream(),true);2021/3/917客户机/服务器的典型通信过程:1、服务器监听相应端口的输入;2、客户机发出一个请求;3、服务器接收到此请求;4、服务器处理这个请求,并把结果返回给客户机;5、重

9、复上述过程,直至完成一次会话过程。2021/3/918服务方:import java.io.*;import .*;public class MyServer public static void main(String args)throws IOException ServerSocket server=new ServerSocket(5678);Socket client=server.accept();BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream();PrintWrit

10、er out=new PrintWriter(client.getOutputStream();while(true)String str=in.readLine();System.out.println(str);out.println(has receive.);out.flush();if(str.equals(end)break;client.close();2021/3/919这个程序的主要目的在于服务器不断接收客户机所写入的信息只到,客户机发送End字符串就退出程序,并且服务器也会做出Receive为回应,告知客户机已接收到消息。2021/3/920客户机代码:import .*;

11、import java.io.*;public class Client static Socket server;public static void main(String args)throws Exception server=new Socket(InetAddress.getLocalHost(),5678);BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream();PrintWriter out=new PrintWriter(server.getOutputStream(

12、);BufferedReader wt=new BufferedReader(new InputStreamReader(System.in);while(true)String str=wt.readLine();out.println(str);out.flush();if(str.equals(end)break;System.out.println(in.readLine();server.close();2021/3/921客户机代码则是接受客户键盘输入,并把该信息输出,然后输出End用来做退出标识。这个程序只是简单的两台计算机之间的通讯,如果是多个客户同时访问一个服务器呢?你可以试

13、着再运行一个客户端,结果是会抛出异常的。那么多个客户端如何实现呢?2021/3/922一个Server一个Client 一对多的C/S 一个server 多个ClientCSCSCSCC2021/3/923网络通信模型 B/S架构:如果客户端是浏览器,则通信程序的架构叫浏览器/服务器架构(即Browser/Server架构,简称B/S架构)。客户端是通用的浏览器,省掉了客户端升级的麻烦。BSBB2021/3/924一个服务器为多个客户端服务 其实,简单的分析一下,就可以看出客户和服务通讯的主要通道就是Socket本身,而服务器通过accept方法就是同意和客户建立通讯.这样当客户建立Socke

14、t的同时。服务器也会使用这一根连线来先后通讯,那么既然如此只要我们存在多条连线就可以了。那么我们的程序可以变为如下:2021/3/925改进为多线程服务器:try file:/建立服务器ServerSocket server=new ServerSocket(9998);int i=1;for(;)Socket incoming=server.accept();new ServerThread(incoming,i).start();i+;catch(IOException ex)ex.printStackTrace();2021/3/926这里仅仅只是加了一个外层的While循环,这个循环的

15、目的就是当一个客户进来就为它分配一个Socket直到这个客户完成一次和服务器的交互,这里也就是接受到客户的End消息.那么现在就实现了多客户之间的交互了。2021/3/927但是.问题又来了,这样做虽然解决了多客户,可是是排队执行的。也就是说当一个客户和服务器完成一次通讯之后下一个客户才可以进来和服务器交互,无法做到同时服务,那么要如何才能同时达到既能相互之间交流又能同时交流呢?很显然这是一个并行执行的问题了。所以线程是最好的解决方案。2021/3/928那么下面的问题是如何使用线程.首先要做的事情是创建线程并使得其可以和网络连线取得联系。然后由线程来执行刚才的操作,要创建线程要么直接继承Th

16、read要么实现Runnable接口,要建立和Socket的联系只要传递引用就可以了.而要执行线程就必须重写run方法,而run方法所做的事情就是刚才单线程版本main所做的事情,因此我们的程序变成了multiThread.java 2021/3/929本程序实现的是基于B/S模式的网络对奕游戏,实现了多线程编程,实现多客户对奕。并且实现了服务器端管理客户端的功能,包括客户端和服务器端。实现功能:用户上线包括新用户上线和已使用过该系统的用户上线每位在线的用户将会收到该用户上线的通知 2021/3/930该用户会收到所有已在线的用户的信息朋友下线 服务器端删除该用户信息每位在线的用户将会收到该用

17、户下线的通知,同时删除改用户的信息聊天终止,文件传输终止修改用户名字用户可以在对应的文本框内直接修改名称 2021/3/931用户可以在保存的Myinfo.txt中直接修改名称聊天功能:公聊:所有在线的用户都可以看到你的发言私聊:能和所有以在线的用户进行私聊,其他用户看不到私聊对象之间的聊天文件传输能给所有的已在线用户发送文件(先打开私聊窗口)网络对弈功能。实现棋局逻辑设计,实现游戏逻辑程序设计。2021/3/932源代码:客户端TicTacToeClient.java服务器端TicTacToeServer.java2021/3/933放映结束 感谢各位的批评指导!谢谢 谢!谢!让我们共同进步

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!