没有合适的资源?快使用搜索试试~ 我知道了~
多媒体展示_网络游鱼_java项目开发
4星 · 超过85%的资源 需积分: 9 8 下载量 157 浏览量
2011-10-24
11:12:41
上传
评论
收藏 842KB DOC 举报
温馨提示
试读
23页
网络游鱼是要在一台计算机上实现一条鱼从一个屏幕游动到另一个屏幕的动态画面。本系统实现在一台计算机的两个屏幕上显示出一条鱼游动的整个动画,即一条鱼从计算机的一个屏幕慢慢地游动到另一个屏幕上。游动时,要求看起来像是同一条鱼在一个整体的屏幕上游动,因此要求能够从一个屏幕移动到另一个屏幕。用户的需求是游戏者通过计算机运行相应命令来实现鱼的游动。鱼的游动方向、起始位置、振幅、运行速度等参量都是随机产生的,因此鱼的游动也是随机的,没有规律性。当鱼越过了屏幕的边界时,鱼就会消失。当鱼在一个屏幕中游出边界时,在另一个屏幕将看不到该鱼的游动,或者该鱼已经游出了边界,不在我们的视线范围以内
资源推荐
资源详情
资源评论
多媒体展示系统——网络游鱼
1、课程设计概述
此次计算机科学与技术专业面向对象课程设计于 2009 年 6 月在实验楼二楼网络机
房进行,持续时间为二周。本次课程设计主要是利用所学的面向对象程序设计语言—
—JAVA 来编写程序,实现特定功能,以加深对面向对象程序设计这个概念的理解。
2、课程设计题目描述
我们设计的多媒体展示系统——网络游鱼是要在一台计算机上实现一条鱼从一个
屏幕游动到另一个屏幕的动态画面。本系统实现在一台计算机的两个屏幕上显示出一
条鱼游动的整个动画,即一条鱼从计算机的一个屏幕慢慢地游动到另一个屏幕上。游
动时,要求看起来像是同一条鱼在一个整体的屏幕上游动,因此要求能够从一个屏幕
移动到另一个屏幕。用户的需求是游戏者通过计算机运行相应命令来实现鱼的游动。
鱼的游动方向、起始位置、振幅、运行速度等参量都是随机产生的,因此鱼的游动也
是随机的,没有规律性。当鱼越过了屏幕的边界时,鱼就会消失。当鱼在一个屏幕中
游出边界时,在另一个屏幕将看不到该鱼的游动,或者该鱼已经游出了边界,不在我
们的视线范围以内。
3、系统需求分析与设计
3.1 系统需求分析
随着网络通信技术、图像处理技术以及多媒体技术的发展,越来越多的用户喜欢
通过多媒体来进行各项娱乐游戏。为了满足用户的需求,本系统实现在一台计算机的
两个屏幕上显示出一条鱼游动的整个动画,即一条鱼从计算机的一个屏幕慢慢地游动
到另一个屏幕上。
3.2 系统设计
3.2.1 系统总体设计
(1)系统功能分析
本系统要用到以下的 Java 编程技术实现的功能:
① 网络功能:这一程序将由一个服务器程序和两个客户端程序构成。客户端承担
着显示这条鱼从一个屏幕游动至另一个屏幕的功能,即这条鱼的游动过程由一个客户
端的屏幕显示。服务器将用网络功能来协调这几个客户端的显示。
② 图像显示功能:客户端需要显示鱼游动的动画,这将由图像显示功能来完成。
显示动画的时候,用到了双缓冲技术来消除鱼游动时的闪烁问题。
③ 多线程功能:当客户端要求与服务器端建立连接时,服务器端就将用到多线程
功能,为每一个建立起来的连接创建一个线程。这样计算机在处理时不需要消息队列,
因为所有的线程都是相同的块的一个部分,并且可以共享。这样的话程序比单线程模
1
型和 STA 的执行速度都要快,因为降低了系统的负载,因而可以优化来减少系统处理
的时间。
(2)系统技术方案
由于要设计一个多屏动画演示程序,必须实现网络传输,就必须用到 java.net 饱中
的 ServerSocket 和 socket 类还包括 InetAdress 和 URL 类等,对基本数据流进行读、写
等操作。
设计是以 Java 独立应用程序来实现的,当然就要引用船体和画布类,对图像进行
生成显示、定位和覆盖等操作。包括以下几个类:
javax.swing.JFrame;
javax.swing.JPanel;
java.awt.Graphics,java.awt.Toolkit。
为了实现动画与控制的同步,我们引进了多线程,就要用到 java.lang.Thread 类或
java.lang.Runnable 接口。
程序中要捕获异常,就要用到多种捕获异常类,这些类是在 J2SE 编程环境下自动
引入的 java.lang 包的异常类。
(3)类图
系统中用到了一些基本类、服务器端所包含的类以及客户端包含的类。系统所用
到的类如图 1 所示:
图 1 系统类图
3.2.2 程序详细设计
(1)实现机制
① 多线程
Java 语言的多线程机制可以实现在后台程序中能够同时处理多个任务。Java 中实
现线程的方法有两种,第一种是生成 Thread 类的子类,并定义该子类的自己的 run 方
法,线程的操作在 run 方法中实现。要使线程实现预定功能,必须定义自己的 run()
方法。
2
线程间的通信使线程可以相互交流和等待。通信的方式可以通过经常共享数据使
线程互相交流,也可以用线程控制方法使线程互相等待。
② 图像显示
JFrame 窗口是 window 的子类,因而具有 window 窗口的所有特性。
要显示图像,首先要将图片数据从网络或者将磁盘上装载于内存中,装载图像也
就是创建一个 Image 对象。创建 Image 图像通向通常不用它的构造方法,而是通过调
用 Applet 类对象的方法来获得。
③ Socket 技术
网络最基本的连接形式就是让两台计算机连接在一起,并且“交谈”或者“沟通”,一
旦两台计算机都找到对方,就进行对话。
Socket 中的 Serversocket 类的 getIntAdress 和 getLocalPort 方法可得到服务器的 IP
地址和端口。
④ 异常处理
(2)程序框架
本系统的程序框架主要包括服务器端和客户端两部分。
服务器端的程序框架如图 2 所示。该图也是服务器端活动顺序图,是服务器端的
动态模型。图中省去了一些 Java 系统类中的方法和自定义类中的一些简单方法。
图 2 服务器端的活动顺序图
客户端的程序框架如图 3 和图 4 所示。图 3 是客户端活动顺序图,也是客户端的动
态模型。图中省去了一些 Java 系统类中的方法和自定义类中的一些简单方法。图 4 是
游鱼的活动顺序图。
3
图 3 客户端活动顺序图
图 4 游鱼的活动顺序图
(3)代码设计
在本系统中,我们小组共有两名成员,整个程序的流程、算法和基本类的设计由
我和刘琼共同完成,刘琼负责实现服务器端的程序,我主要负责实现客户端的程序,
现将我负责的工作描述如下。
基本类的设计:
fish 类
Fish 类定义了一条鱼游动的一些参量,以及如何在 Panel 上显示鱼。它用线程来实
现,意味着它是独立执行的,游动的过程中需要休眠一段时间,因此鱼的游动不影响
其他方面的执行。另外,游鱼一旦超过了边界(到达左、右端边框或到达最大振幅),
就向服务器发送消息。Fish 类的详细代码代码见附录。
FishPanel 类
FishPanel 类对绘图做了一些初始化工作,如创建鱼和背景的 Image 对象、加载背
景 图 片 、 接 收 某 条 鱼 的 信 息 , 然 后 用 Tokenizer 解 析 信 息 , 存 储 到 一 个 数 组 中 。
FishPanel 类的详细代码见附件。
SwimFish0 类
4
SwimFish0 类是一个窗口,该窗口的大小固定为 600*480,并且不能改变。该类只
包含了一个构造方法,该方法的主要功能是将一个 Fishpanel 的对象加入到当前窗口的
容器内。所以,这个类实际上是给游鱼提供了一个显示窗口。SwimFish0 类的详细代码
见附件。
SwimFish1 类
SwimFish 1类与 SwimFish 的功能相似,主要在鱼游过 fish0 区域后,以不同的 ID
给游鱼提供了另一个显示窗口。这样就为鱼从一个屏幕游向另一个屏幕提供了显示的
窗口。
SwimFish 1类与 SwimFish 的代码相同。
FishConstants 接口
该接口定义了一些常量,比如端口和组播地址,以供整个应用中的其他类所共享,
同时也是所有类之间的一个共同的约定。FishConstants 接口的详细代码见附件。
MessageListener 接口
该接口类似于 Java 平台的事件监听接口,那些希望接受新消息的类必须实现该接
口。MessageListener 接口的详细代码见附件。
MessageManager 接口
该接口用来和 FishServer 通信。MessageManager 接口的代码见附录。
服务器端程序设计:由刘琼设计。
① FishServer 类
它是一个多线程的、基于 Socket 和 Packet 的服务器。它创建一个 ServerSocket 后,
马上创建一个新的线程 ReceivingThread 来接受从客户端发出的消息。当接受到新消息
时,向所有的客户端广播。
ReceivingThread 类
它是一个线程,负责监听特定客户端的消息,用 StringTokenizer 解析接收到的消
息,并且把消息发到一个 MessageListener。
MulticastSendingThread 类
它是一个线程,通过一个 Multicast Datagram 来广播消息,通知游鱼到达的位置。
客户端程序设计:
在具体的实现中,我们设置了两个客户端程序,分别显示一条鱼在两个客户机上
的游动情况。
① FishClient0 类
它 是 第一 个 客 户 端 应 用 程序 , 通 过 SwimFish0 和 SocketMessageManager 来 与
FishServer 通信。FishClient0 类的详细代码见附件。
② FishClient1 类
它 是 第二 个 客 户 端 应 用 程序 , 通 过 SwimFish1 和 SocketMessageManager 来 与
FishServer 通信。FishClient1 类的详细代码见附件。
③ PacketReceivingThread 类
负责监听从 FishServer 发过来的包含消息的 DatagramPackets,并将符合要求的消
息送到指定的 MessageListener。PacketReceivingThread 类的详细代码见附件。
④ SendingThread 类
通过一个单独的线程来向 FishServer 发送消息。该类在构造方法中传入建立连接的
Socket 和要发送的信息,然后在线程体中,通过 Socket 上建立的字符输出流来传递信
息。SendingThread 类的详细代码见附件。
⑤ SocketMessageManager 类
通过 Socket 与 FishServer 通信。如果已经连接了则快速返回,否则建立一个 Socket
5
剩余22页未读,继续阅读
资源评论
- wg_hadoop2014-03-24以前在相关的资料上看过相应的例子,不过一直没做,供者提供的设计文档真的很不错,有一定的参考价值!!
- page1002013-02-17经过测试可以使用,而且效果还蛮不过的,自己也进行了一些改进
- didato2013-08-20一个非常简单的例子,适合入门学习。
hongzhan012
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功