吉林大学软件学院卓班设计模式第三次练习

时间:2022-11-10 14:46:44
【文件属性】:

文件名称:吉林大学软件学院卓班设计模式第三次练习

文件大小:2.04MB

文件格式:RAR

更新时间:2022-11-10 14:46:44

吉林大学 设计模式

练习03 创建型+结构型+其它(以step0_src中代码为基础) 1. 在代码中大量地使用了cout, 这限定了程序只能输出到控制台屏幕,同时也限定了程序中大部分类只能在控制台程序中被复用。为更好提高Menu等类的复用性,并适应多种输出设备,如输出到流设备(含控制台)、输出到打印机、输出到窗口等, 可以将输出独立出来。请根据给出的类图,设计并实现相关类(PrinterDevice、WindowDevice不用实现,暂不考虑cin的处理),并修改原程序,使得输出结果不变。 2. 若希望输出各菜单时,左端都增加一些空格或Tab,使得显示更美观一些,如下图所示。请使用装饰模式扩展1中的类。 转变成 3. 考虑1中的PrinterDevice,若系统中没有本地打印机,而是使用网络打印机;在网络上打印机有多台,当有打印需要时,由系统根据情况选择一台打印。现希望维持OutDevice等类接口的一致,同时让用户在适应打印设备时,感觉与本地打印“一样”。请使用代理模式,给出相关部分的类图并简要加以说明。 4. 现希望在Process各Menu时,增加一些额外的操作:如在菜单之前显示一个Head,例如主菜单可能显示为: ========================= = = ========================= 主菜单 1: New 2: Load 3: Save 4: Option 5: Play..." 6: Change To EF 0: Exit Your selected: 也可能在菜单显示时,循环播放背景音乐,离开菜单时,停止播放。 现将Menu中的Process改为virtual,通过复用已有的各Menu,给Menu增加一些额外的功能。请使用装饰模式进行扩展,使得Process各Menu时,都循环播放背景音乐,离开菜单时,停止播放;同时显示主菜单时,显示如上图(Window下可使用PlaySound API函数,另由于LoadMenu类名与Windows中的LoadMenu API函数重名,可将菜单LoadMenu 类改为其它名字或使用名字空间避免重名)。 5. 现添加Player。作为Demo,可设为2-3个player,如第1号是HumanPlayer;第2号玩家是AutoPlayer,第3号玩家是AutoPlayer。当选择MainMenu->Play时,各Player依次Play;轮到AutoPlayer时,显示当前Map,然后转下一个player;轮到HumanPlayer时,显示PlayMenu菜单,如下: PlayMenu 1. Go… 2. Load 3. Save 4. Back To MainMenu Your selected: 选择1时,显示当前Map; 选择2时,进入LoadMenu;选择3时,进入SaveMenu (SaveMenu可从MainMenu的子菜单中移除掉);选择4时,进入MainMenu。请完成实现代码。实现时,需将MainMenu的子菜单SaveMenu移到PlayMenu的子菜单;修改LoadMenu的动作,当返回时,不再返回到MainMenu,而是直接执行MainMenu的Play过程;


【文件预览】:
练习03
----L03()
--------Debug()
--------L03.sln(1KB)
--------L03()
--------x64()
----类图.docx(45KB)
----练习03.docx(73KB)

网友评论