《动物保护者认识实习报告》由会员分享,可在线阅读,更多相关《动物保护者认识实习报告(39页珍藏版)》请在金锄头文库上搜索。
1、计算机认识实习实验报告计算机认识实习实验报告专业:上海大学计算机工程与科学班级: 姓名: 学号: 计算机工程与科学学院报告日期 2016 年 6 月 24 日教师评语:成绩: 总序号:140一、一、实习目的和要求实习目的和要求计算机认识实习是理论联系实际的重要实践性教学环节。通过认识实习,了解程序设计的 一般过程,树立良好的设计方法,巩固有关计算机软件的知识,加深专业知识的了解,扩大专 业知识面,培养和提高发现问题、认识问题、分析问题及解决问题的能力,为有关后续专业课 程的学习奠定基础。 本次认识实习要求使用 VB6.0 设计实现一个简单的游戏软件。通过 Visual Basic 语言的使 用
2、,体会使用 VB 进行程序设计的特色,试探用 VB 开发更为复杂的应用程序;加强高级语言 的编程能力,了解计算机软件设计的基本方法和一般步骤。通过实习,对计算机及计算机软件 设计有一个较为全面的认识,培养发现问题、认识问题、分析问题及解决问题的能力,提高自 学能力和上机动手能力,并通过查阅资料了解计算机软件开发技术的最新技术和发展趋势。二、二、实习内容实习内容综合运用课堂知识,使用 VB6.0 设计实现一个相对综合的游戏软件动物保护者,并 完成相关功能要求。 游戏概述:游戏界面为 88 的被大火围困的动物区,随机排列了若干动物。游戏者单击 两个相邻小动物使它们交换位置,如果交换后在同一行同一列
3、出现相邻的同类动物三个或三个 以上,表示这些动物可以顺利获救。小动物闪烁后消失,表示被救出火场。形成的空位,被上 方的动物图标依次落下后填补,最上面的空档由随机产生的动物图标填补。火势蔓延若干时间 后(半分钟或一、两分钟可选)游戏结束。救出动物数(如图右窗框)最多者获胜。 基本要求: 能完成概述中的基本功能。 画面应能实现动画效果。如:交换时能在画面上有所表示。找到获救的动物,消失前 应能闪烁等。也可配上声音表示。 用时钟或进度条计时。 动物下落后形成的有效区也应计分。 主界面为窗口界面,包含菜单栏。菜单中至少要有“运行”菜单,含“run”命令、“stop”命令;“帮助”菜单,含“Help”
4、命令、 “About” 命令。Help 内容是操作说明。About 内容是开发者的姓名、学号、日期等。 (见有关要求的说明。 ) 建议功能: 用户可以选择扩大游戏盘面,获救动物个数。 (若大于三个还可以选择排列形状。 ) 选择计时长短,可以记录成绩。 游戏者可以选择身份:游戏者、摆擂台者、挑战者。 游戏者:作上述一般游戏,可记分。 设擂台者:计时、记个数,等待挑战。 挑战者:选一个擂台,用计时器、动物个数评分,最后上排行板。 作者可以自行发挥各种附加功能和游戏规则,只要在你的帮助信息中给出说明。 用户可以选择其他内容作为本题的素材。如:符号图形,小动物图形等。三、三、系统概要设计说明,功能模块
5、及流程和工作原理系统概要设计说明,功能模块及流程和工作原理(1)系统概要设计说明 本系统为一款三消游戏系统,系统中有多种游戏模式可供用户选择,并且设置了得分记录 系统和对战系统。游戏以娱乐为目的,游戏界面简单,操作容易,并有计时模式和不计时模式可选,满足不同用户的游戏需求。在计时的游戏模式中,以单位时间内得分高低来对不同时间 模式的用户得分进行比较,并计入排行榜。在对抗模式中,用户可以发起挑战或参加挑战,挑 战时间均为 30 秒,通过挑战榜来显示挑战结果。 (2)功能模块及流程 该系统总共划分了五个模块 : a) 初始化模块。对游戏界面进行初始化操作,根据需求显示或隐藏、启用或禁用部 分控件按
6、钮。 b) 画图模块。通过随机算法初始化游戏地图,并在每一格上显示相应的动物图片。 c) 动物操作模块。游戏系统中最主要的模块,用户通过鼠标点击来交换相邻的动物, 符合条件后进行消除,下落,并在顶部生成新的动物。 d) 计时模块。使用 Timer 制作倒计时器记录游戏时间,在计时器归零后结束游戏。 e) 得分模块。在游戏时间结束之后记录用户姓名和得分,并存储在外部 txt 文件中。 显示得分时,读取外部 txt 文件中的信息,处理后在排行榜中显示。(3)工作原理 通过一个全局变量(modechs)来记录用户选择的模式,并根据模式进行相应的操作。其 中包括:在计时模式中启动计时器和显示计时文本框
7、、启用得分记录;在非计时模式中禁用计 时器并隐藏计时文本框、禁用得分记录,显示 combo 记录;在发起挑战模式中,记录得分时 弹出姓名输入框;在参加挑战模式中,弹出窗体给用户选择想要参加的挑战,并在记录得分时 弹出姓名输入框,最后弹出挑战榜,显示挑战结果。初始化完成之后,生成游戏地图,用户进 行操作,启动计时器,给出相应的反馈,最后记录得分。四、四、系统详细设计、关键技术与难点、测试数据系统详细设计、关键技术与难点、测试数据(1)系统详细设计 本系统总共使用了 6 个窗体,其中包括:主界面,游戏榜,挑战榜,选择挑战,玩法和提 示,关于游戏。大多数主要功能和核心算法都在主界面窗体实现,其余窗体
8、起到辅助作用。 在界面设计上,本系统各窗体(关于游戏除外)采用了较为统一风格的图标和背景。通过 image 空间来实现透明按钮,使游戏风格独特,更具观赏性和娱乐性。 (2)关键技术与难点 本系统的关键技术遇难点主要有三消实现和成绩记录(排行榜) 。其中三消实现包括了: 生成地图、判断死地图、交换图标、判断可消除、消除、下落、生成新图标,成绩记录包括了 记录成绩和读取成绩。以下对部分难点进行介绍。 生成地图 stnwgame():首先在主界面窗体声明一个通用的二维数组(88) ,以该数组表 示游戏地图,利用 Randomize 生成 05 的随机整数。为防止生成地图后立即得分(盘面中有可 消除的
9、图标) ,需要一边生成一边判断数组中的数所在行和列是否有三个或以上相同,若有则 重新生成一个和行、列的数都不相同的随机数。 判断死地图 Boolean isDie():理论上是游戏中的重要算法,但测试至今尚未遇到过死地图初始化模块画图模块计时模块动物操作模块得分模块图一 功能模块流程图的情况。通过扫描数组判断盘面上是否有可消除模型,若有则立即返回 False。 交换图标:在图标控件数组的 Click 事件中实现。判断用户点击的两个图标是否在同一行 或同一列,若不是则不作出反应,若是交换这两个图标。交换后,判断本次交换是否可消除, 若是则调用相关功能进行消除,若否则调用延时函数并再次交换。 判断
10、可消除 Boolean isLine(n As Integer)和 Boolean mapline():isLine 用于判断交换的图标 周围是否有可消除模型(连续三个) ,全部用 if 语句判断,速度较快。Mapline 用于判断整个 地图中是否有可消除模型,用双重循环,速度较慢。 消除 remove():使用辅助二维数组,将可消除的图标标记为-1,并用延时函数和另一个辅 助数组做出消除时闪烁的效果。 下落 down():通过四重循环将-1 排序到顶部,使用交换标志 flag 来优化。 成绩记录:用户将名字输入在输入框中,将本次得分和名字记录在 txt 文件中,通过逗号 进行分割。读取时也利
11、用换行符和逗号进行分割,将数据存在相关数组中。在游戏榜中存放数 据时,每次找到文件中最小的一次记录和当前成绩比较,若当前成绩较大,则覆盖这次记录; 读取时进行冒泡排序,将得分最高的显示在最前面。在挑战榜中发起挑战时,每次覆盖掉最早 的一次记录,将最新成绩记录在最后,并将对手姓名、得分、比赛结果分别设置为 NONE、0、NONE。 (3)测试数据26,eris,1 3,aacd,1 53,Test,1 106,Eris,2 0,a,3 0,a,3 0,a,1 0,a,2 0,a,1 36,e,293,test1,63,test2,test1 64,Eris,46,player,Eris 4,ad
12、min,68,player,player 48,admin,0,NONE,NONE 34,test,0,NONE,NONE图二 游戏榜数据(datarecord.txt)图三 挑战榜数据(datafight.txt)五、五、系统使用说明系统使用说明本系统为一个三消游戏系统,菜单栏中有四个按钮:游戏、排行榜、工具、帮助。 在游戏菜单中,用户可以选择三个游戏模式或退出游戏;在排行榜菜单中;用户可以打开 游戏榜或挑战榜,查看记录的游戏成绩和挑战结果;在工具菜单中,用户可以启动系统计算器 和记事本;在帮助菜单中,用户可以查看游戏玩法和提示以及关于游戏的信息。 在游戏时,点击火焰图标可以开始一局新游戏。
13、如果用户选择的是计时游戏模式(时间模 式和对抗模式) ,界面中会出现计时器文本框和暂停按钮,当游戏结束后(或计时为结束时) , 用户可以点击 score 按钮记录自己的姓名和本次游戏得分。如果用户选择的是非计时模式(休 闲模式) ,界面中则不会出现计时框和暂停按钮,score 按钮也会被禁用,无法记录得分。若用 户在计时模式中想要切换游戏模式,则必须先按下暂停按钮或等待游戏时间结束。 游戏过程中,得分文本框和计时器文本框都将禁止用户输入任何数据。用户按下暂停按钮 后,棋盘上的动物图标将会被隐藏,计时器也将暂停,直到再次按下暂停按钮后恢复。在用户 输入自己的姓名时,只可以输入英文字符和数字,过长
14、的字符串可能显示不完整。六、六、实习的收获、心得、问题、困难和建议实习的收获、心得、问题、困难和建议经过这次的实习,我觉得自己已经基本掌握了用 VB 设计简单软件的方法。由于上课只有 三次,课堂上教的内容非常有限,因此大多数内容我都是在网上一边搜索一边学习才掌握的。 VB 是一门简单易用的语言,语法规则并不复杂,各功能模块也很简单,上手非常快。尤其在 实现界面上相当直观迅速,大约两个小时左右就可以完成最简单的基本界面,之后只需要编写 代码和美化就可以了。 虽然这次实习是我第一次自己制作游戏,但由于做的是一款平时玩得非常多的三消游戏, 因此在功能分析和设计上没有太大困难,相对容易地设计出了关键步
15、骤及其核心算法。一开始 写的几个 sub 和 function 代码量比较大,加上对语法还不太适应,调试修改了多次才完成,使 得早期的进度比较慢。特别是由于控件数组的两个图标贴反了而迟迟没有发现,为程序的查错 带来了很大的困难。在这些问题修正之后,之后的进展就快了很多,基本上是边学边做,写完 一部分就立刻进行调试,也取得了比较好的效果。 在界面设计方面,因为希望游戏界面能够比较美观,并且有一定的风格,因此花费了一定 的时间来设计图标和背景图,完成之后的效果我自己也非常满意。设计这个游戏界面的时候希 望窗体和按钮都能尽可能地少,这样能够使用户在玩游戏的时候操作更方便,大多数的操作都 只需要在主界
16、面窗口里就可以完成。而这也需要玩家仔细阅读玩法说明,才能更快地上手。 制作游戏的大多数问题和困难都可以在网上搜索解决,尤其是一些博客分享的经验教程, 往往比编程书更有用。相比之下,三次上课的内容就显得有些枯燥,且内容过于简单,平白浪 费了很多时间。实际上仅仅经过几次讲课也并不能记住 VB 的具体用法,在编程时自己查阅老 师留的 PPT 反而比上课更有意义。希望老师在上课时可以少讲一些基本语法,多讲一些设计 游戏的方法,以及 VB 比较独特的用法,尤其是控件数组和界面设计。附录附录 1 1:核心代码及说明:核心代码及说明Sub stnwgame() 生成地图Dim i, j, n As IntegerFor i = 0 To 7For j = 0 To 7Randomizea(i, j) = Int(Rnd * 6)Dim find3i, find3j As Boolean 行、列重复标志If j = 2 ThenIf a(i, j -