设计模式大作业——斗地主程序

  • 格式:ppt
  • 大小:665.50 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

声音模块
<<enumeration>> FileType
+SOUND +IMAGE +UNKNOWN
PlayerFactory
<<static>>-map: Map <<static>>-factory: PlayerFactory
-PlayerFactory() <<static>>+getInstance() +getPlayer()
java.lang.Runnable
<<abstract>> PortObservable -listeners: List -port: int +addListener() +removeListener()
Sender -address: InetAddress
Receiver -address: InetAddress
2020/7/10
分工合作
• 刘品:游戏主程序,代码整合,模块框架 • 季汉:游戏AI • 张遵东:声音模块设计与编码 • 李耀武:网络模块设计 • 赵艺鸣:网络模块编码实现 • 孙健:游戏界面
2020/7/10
用例图
2020/7/10
时序图——人机对战
/游 戏 参 与 者
/控 制 器
/电 脑 智 能
2020/7/10
时序图——多人对战
游戏参与者 打开游戏大厅
控制模块 初始化环境
网络通信模块
图像显示模块
音效输出模块
获取局域网信息
初始化图像
初始化音效
选取游戏对手 是否组建游戏
否 参与游戏
2020/7/10
生成游戏对象
创建游戏主机 创建游戏从机
建立稳定的连接
开始游戏
开始游戏动作 游戏循环
否 游戏逻辑判断 是否结束
NetDataFactory
<<static>>+map: Map
<<static>>+convert(buffer: byte[]) <<static>>+registerNDF()
NetDataSupport
-format: NetDataFormat -datas: List -address: InetAddress
网络模块
2020/7/10
Net
UDPNetSupport -socket: DatagramSocket -sendPort: int -receivePort: int -observer: UDPPortObservable +broadCastData(datas: NetData[]) +sendData(info: NetConnectionInfo, datas: NetData[])
+addData(data: Object) +getDatas() +dataToByte() +byteToData()
纸牌管理
java.awt.MouseListener java.swing.JLabel
Card
-name: String -up: Boolean -canClick: boolean -clicked: boolean -main: Main
<<static>>+play(filename: String) <<static>>+playBackground(filename: String) <<static>>+stop()
SoundDetermine
<<static>>+judgeAndPlay() <<static>>+play(filename: String) <<static>>+single(list: List) <<static>>+couple(list: List) <<static>>+triple(list: List) <<static>>+bomp(list: List)
<<static>>+initUdp(sendPort: int, receivePort: int) <<static>>+registerListener(listener: PortListener) <<static>>+broadcast(datas: NetData) <<static>>+send(ncif: NetConnectionInfo, datas: NetData[]) <<static>>+buildNCDF(users: GameUser)
+Card(m: Main, name: String) +turnFront() +turnRear() +mouserPressed() +getName()
CardManager
<<static>>-manager: CardManager <<static>>-map: Map
<<static>>+init(main: Main) <<static>>+getInstance() +getAll() +getCard(key: String) +getRandomSequence(list: List)
/图 像 管 理
/音 效 管 理
1 : 填写用户昵称() 2 : 生成用户信息()
3 : 开始游戏()
7 : 进行游戏()
4 : 初始化画面() 5 : 初始化音效()
6 : 启动AI()
8 : 得到对手下一步动作()
9 : 刷新画面()
10 : 输出音效()
11 : 游戏主循环() 12 : 游戏结束,输出结果()
NetConnectionInfo
UDPPortObservable +run()
NetConnectionInfoImpl
-receivers: List -senders: List
PortListener
NetDataFormat +type: List
NetData
NetManager
<<static>>-udpPortObservable: UDPPortObservable <<static>>-udpNetSupport: UDPNetSupport <<static>>-es: ExecutorService
是 游戏结束
结束操作
推出游戏环境
传输游戏信息
刷新图像
通知游戏结束
输出游戏概要
输出音效
2020/7/10
游戏中的设计模式
声音 模块
单例 模式
工厂 模式
门面 模式
网络 模块
监听者 模式
纸牌 管理
享元 模式
2020/7/10
java.lang.Runnable
SoundPlayer -isStop: Boolean -hasStop: Boolean -tempData: Byte -sourceDataLine: SourceDataLine +run() +playSound() +loopSound() +stopSound()
2020/7/10
游戏前台界面
2020/7/10
游戏主程序
2020/7/10
游戏大厅
2020/7/10
2020/7/10
PaBaidu NhomakorabeahProcessor
<<static>>+toRealPath(filename: String) <<static>>+getFileType(filename: String)
2020/7/10
SoundManager
<<static>>-es: ExecutorService <<static>>-factory: PlayerFactory