森林资源管理信息系统实验六应用程序的设计报告.doc_第1页
森林资源管理信息系统实验六应用程序的设计报告.doc_第2页
森林资源管理信息系统实验六应用程序的设计报告.doc_第3页
森林资源管理信息系统实验六应用程序的设计报告.doc_第4页
森林资源管理信息系统实验六应用程序的设计报告.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

. . . .森林资源管理信息系统实验六 应用程序设计实验名称 应用程序设计 专业班级 地理信息系统092 学 号 200918020223 姓 名 沈而广 实验日期 2012年2月23日 一、 实验环境 Win2000以上软件操作系统,Visio软件开发环境。 二、 实验目的 (1)熟悉常用的系统开发工具,了解如何利用开发工具实现一个小系统。(2)利用面向对象开发方法进行系统开发。三、 实验内容 以下任选一题:(1)编写石头、剪刀、布游戏由玩家和电脑对战,具体规则是:“剪刀”赢“布”,“布”赢“石头”,“石头”赢“剪刀”。玩家可以选择任何一种,同时电脑也随机出一种,再对电脑和玩家的选择进行比较,看哪一方获胜,要求能记录胜负状况和累计成绩。要求图形化界面。尽量美观。并尽量满足下列要求:有音乐伴奏;能更换皮肤;能记录不同玩家的成绩;有语音说出出拳的种类;等等。(2)扑克牌21点游戏的开发基本规则双方(玩家和电脑)轮流要扑克牌,第一张牌是底牌,玩家可以看自己的底牌,不能看电脑的底牌。玩家可以选择任意时刻停止。双方都停止后计算各自总点数,然后亮出双方的总点数,超过21点者为败,都没超过或都超过21点时,总点数更靠近21点者为胜。总点数一样时,玩家胜。最多可要7次牌。电脑在点数大于16点时,则自动停止要牌。每发一张牌时,在窗体上跟踪显示电脑的牌和总点数(不包括底牌),下面跟踪显示人的总点数和数字(电脑不知道人的牌点数)。点数:每张牌都有点数, 2 到 10 的牌的点数就是其牌面的数字; J 、 Q 、 K 的点数是 10 点; A 有两种算法, 1 或者 11 ,如果 A 算为 11 时总和大于 21 ,则 A 算为 1 。例如( A, 8) 是 19 点,(A, 7, J) 则为 18 点。难点:尽量模仿真实玩21点的过程;注意扑克牌是一次洗好的,不是发一张洗一次牌。额外要求:玩家和电脑各有一定数量本金,每局可以赌一定数目的金钱,但不能赊账;能记录玩家和电脑输赢的局数;玩家可以更换头像,更换姓名;发牌具有动画效果;更换皮肤;有语音说出发牌的点数;等等。四、 编程思路我首先创建了一个类库的C#项目,在命名空间SJBClass下,定义了类Compitioner,它是比赛选手,在这个程序中就指电脑和各个玩家,与本游戏相关的信息存储在ASP.Net类Session中,应为一个参赛者打开一个浏览器窗口并且登录网站就产生一个会话,Session中存储了:能够判断每一局输赢状况,记录玩家和电脑的答案,玩家和电脑的得分。在PageLode中实例化对象Computer : Compitioner和Person : Compitioner,首先由用户出拳,然后电脑出拳,这里是通过一个Random()函数,生成13之间的随机数。其中,1代表石头,2代表剪刀,3代表布。然后,Judge类负责判断哪个参赛者获得比赛胜利。页面缓存用户分数和电脑分数。本游戏使用C#编写,在Microsoft Visual C# Express 2010和Microsoft .Net Framework 4.0环境下运行。并且采用了B/S架构,多个用户可以同时联机在线游戏。五、 程序调试与排错1、在Computer类中,用到了System.Random类的对象,调用其Next方法,但程序运行结果却是只出现石头和剪刀,电脑变得从来不会出布。因此,我在MSDN上寻找到了该问题的解决方案:Next有接收两个参数的方法,Next(Int32, Int32) 返回一个指定范围内的随机数。返回的随机数的上界(随机数不能取该上界值)。所以将程序中rd.Next(1,3)改为了rd.Next(1,4)程序就可以正确的运行了。2、因为程序运行时用前台程序控制获得两个用户的手势进行比较,这些操作耦合度较高,所以我在Judge类中我将whoWin重载了,试图将前台程序了解手势在调用判断函数判断的过程解耦合。这样直接将对象传入Judge类那就维持了OO的封装特性。前台并不需要知道Compitioner中到底有哪些成员变量,或者不用试图去保存对象本身应有的属性。public static int whoWin(gesture Ag,gesture Bg)public static int whoWin(Compitioner Ag, Compitioner Bg)却发现,传入的参数Compitioner中却无法实现public class Compitioner public virtual gesture getGesture() return new gesture(); 在这里又发现,我在Compitioner并没有记录当前手势的属性,加上realGesture属性后,应为Person的手势是用户输入的,所以会引起不一致性,而且会有手势难表示的问题,就像前台程序不会告诉类一个枚举或者字符串类型的真正表示手势的量。那样将会使前台设计变得复杂,也不利于提高程序内聚性。所以我又创建了gestureCode这一项,专门用来存储每个手势相对应的数值,然后在Judge类需要获知手势的时候再将其解释为手势的枚举型对象。3、在网页中添加声音时,我首先接触的就是标签,但是测试的时候只有IE可以用,不具有浏览器通用性,且不符合W3C公布的XHTML1.1标准,我了解了最新的HTML5标准中新添加的元素,可以用其播放各种声音和视频动态图片等等各种流文件,使用它播放背景音乐的格式如下:那么采用它播放输、赢、平三种状态的声音呢?这里我用到了中间图片的名字来获取比赛状态var status = judgeImg.src.substr(judgeImg.src.lastIndexOf(/) + 1, 20); if (status = win.gif) sound(win); else if (status = loose.gif) sound(loose); else sound(draw);然后根据比赛状态来播放声音的脚本如下:function sound(aa) var MUSIC1 = document.createElement(aa + Music);MUSIC1.play();这样的函数竟然无法实现,那么一个标签但改变它的src呢?function sound(aa) var soundTar = document.getElementById(e1); soundTar.src = sounds/ + aa + .mp3;事实证明这种方法也是错误的。那试试动态创建embed标签? var e = document.createElement(EMBED); e.id = swfEmbed; e.src = sounds/ + aa + .mp3; e.width = 400; e.height = 300; e.loop = 1; e.autostart = true; document.appendChild(e);e.play();这样任然不起作用。所以我最终改用C#脚本using System.Media;SoundPlayer myMusic = new SoundPlayer();myMusic.SoundLocation = 我的路径;myMusic.Play();音乐可以顺利播放了。六、 开发日志4月11日:系统可行性分析、系统需求分析、系统设计4月12日:系统类库实现,类库代码调试与测试4月13日:系统界面编程,基本功能实现4月14日:系统界面动画效果制作与应用4月15日:界面美化、增加声音功能4月16日:系统的测试与排错实验六 应用程序设计一、实验目的(1)熟悉常用的系统开发工具,了解如何利用开发工具实现一个小系统。(2)利用面向对象开发方法进行系统开发。二、实验内容以下任选一题:(1)编写石头、剪刀、布游戏由玩家和电脑对战,具体规则是:“剪刀”赢“布”,“布”赢“石头”,“石头”赢“剪刀”。玩家可以选择任何一种,同时电脑也随机出一种,再对电脑和玩家的选择进行比较,看哪一方获胜,要求能记录胜负状况和累计成绩。要求图形化界面。尽量美观。并尽量满足下列要求:有音乐伴奏;能更换皮肤;能记录不同玩家的成绩;有语音说出出拳的种类;等等。(2)扑克牌21点游戏的开发基本规则双方(玩家和电脑)轮流要扑克牌,第一张牌是底牌,玩家可以看自己的底牌,不能看电脑的底牌。玩家可以选择任意时刻停止。双方都停止后计算各自总点数,然后亮出双方的总点数,超过21点者为败,都没超过或都超过21点时,总点数更靠近21点者为胜。总点数一样时,玩家胜。最多可要7次牌。电脑在点数大于16点时,则自动停止要牌。每发一张牌时,在窗体上跟踪显示电脑的牌和总点数(不包括底牌),下面跟踪显示人的总点数和数字(电脑不知道人的牌点数)。点数:每张牌都有点数, 2 到 10 的牌的点数就是其牌面的数字; J 、 Q 、 K 的点数是 10 点; A 有两种算法, 1 或者 11 ,如果 A 算为 11 时总和大于 21 ,则 A 算为 1 。例如( A, 8) 是 19 点,(A, 7, J) 则为 18 点。难点:尽量模仿真实玩21点的过程;注意扑克牌是一次洗好的,不是发一张洗一次牌。额外要求:玩家和电脑各有一定数量本金,每局可以赌一定数目的金钱,但不能赊账;能记录玩家和电脑输赢的局数;玩家可以更换头像,更换姓名;发牌具有动画效果;更换皮肤;有语音说出发牌的点数;等等。三、实验的要求(1)必须按照实验内容规定的游戏规则进行开发,不得更改,鼓励在满足实验要求的内容上增加功能使得游戏可玩性更强,界面更美观。(2)每个学生独立完成本次实验,提交基于windows的可运行的具有图形化界面的软件。在提交前必须请3位以上同学测试,并写出测试同学的姓名和发现的问题以及改正的情况。(3)写一份实验报告,要求描述整体的编程思路、在编程过程中遇到的技术问题(难点或要点)及其解决方案并附上开发日志。(4)每个学生须在实验课上到讲台演示自己的软件并进行讲解,回答同学的质询。(安排在第1

温馨提示

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

评论

0/150

提交评论