ImageVerifierCode 换一换
格式:DOCX , 页数:61 ,大小:65.36KB ,
资源ID:9219349      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-9219349.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(动物保护者 认识实习报告.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

动物保护者 认识实习报告.docx

1、动物保护者 认识实习报告总序号:140成绩: 计算机认识实习实验报告专业:上海大学计算机工程与科学班级: 姓名: 学号: 计算机工程与科学学院报告日期 2016 年 6 月 24 日教师评语:一、 实习目的和要求计算机认识实习是理论联系实际的重要实践性教学环节。通过认识实习,了解程序设计的一般过程,树立良好的设计方法,巩固有关计算机软件的知识,加深专业知识的了解,扩大专业知识面,培养和提高发现问题、认识问题、分析问题及解决问题的能力,为有关后续专业课程的学习奠定基础。本次认识实习要求使用VB6.0设计实现一个简单的游戏软件。通过Visual Basic语言的使用,体会使用VB进行程序设计的特色

2、,试探用VB开发更为复杂的应用程序;加强高级语言的编程能力,了解计算机软件设计的基本方法和一般步骤。通过实习,对计算机及计算机软件设计有一个较为全面的认识,培养发现问题、认识问题、分析问题及解决问题的能力,提高自学能力和上机动手能力,并通过查阅资料了解计算机软件开发技术的最新技术和发展趋势。二、 实习内容综合运用课堂知识,使用VB6.0设计实现一个相对综合的游戏软件动物保护者,并完成相关功能要求。游戏概述:游戏界面为88的被大火围困的动物区,随机排列了若干动物。游戏者单击两个相邻小动物使它们交换位置,如果交换后在同一行同一列出现相邻的同类动物三个或三个以上,表示这些动物可以顺利获救。小动物闪烁

3、后消失,表示被救出火场。形成的空位,被上方的动物图标依次落下后填补,最上面的空档由随机产生的动物图标填补。火势蔓延若干时间后(半分钟或一、两分钟可选)游戏结束。救出动物数(如图右窗框)最多者获胜。基本要求: 能完成概述中的基本功能。 画面应能实现动画效果。如:交换时能在画面上有所表示。找到获救的动物,消失前应能闪烁等。也可配上声音表示。 用时钟或进度条计时。 动物下落后形成的有效区也应计分。 主界面为窗口界面,包含菜单栏。菜单中至少要有“运行”菜单,含“run”命令、“stop”命令;“帮助”菜单,含“Help” 命令、“About” 命令。Help内容是操作说明。About内容是开发者的姓名

4、、学号、日期等。(见有关要求的说明。)建议功能: 用户可以选择扩大游戏盘面,获救动物个数。(若大于三个还可以选择排列形状。) 选择计时长短,可以记录成绩。 游戏者可以选择身份:游戏者、摆擂台者、挑战者。 游戏者:作上述一般游戏,可记分。 设擂台者:计时、记个数,等待挑战。 挑战者:选一个擂台,用计时器、动物个数评分,最后上排行板。 作者可以自行发挥各种附加功能和游戏规则,只要在你的帮助信息中给出说明。 用户可以选择其他内容作为本题的素材。如:符号图形,小动物图形等。三、 系统概要设计说明,功能模块及流程和工作原理(1)系统概要设计说明本系统为一款三消游戏系统,系统中有多种游戏模式可供用户选择,

5、并且设置了得分记录系统和对战系统。游戏以娱乐为目的,游戏界面简单,操作容易,并有计时模式和不计时模式可选,满足不同用户的游戏需求。在计时的游戏模式中,以单位时间内得分高低来对不同时间模式的用户得分进行比较,并计入排行榜。在对抗模式中,用户可以发起挑战或参加挑战,挑战时间均为30秒,通过挑战榜来显示挑战结果。(2)功能模块及流程该系统总共划分了五个模块:a) 初始化模块。对游戏界面进行初始化操作,根据需求显示或隐藏、启用或禁用部分控件按钮。b) 画图模块。通过随机算法初始化游戏地图,并在每一格上显示相应的动物图片。c) 动物操作模块。游戏系统中最主要的模块,用户通过鼠标点击来交换相邻的动物,符合

6、条件后进行消除,下落,并在顶部生成新的动物。d) 计时模块。使用Timer制作倒计时器记录游戏时间,在计时器归零后结束游戏。e) 得分模块。在游戏时间结束之后记录用户姓名和得分,并存储在外部txt文件中。显示得分时,读取外部txt文件中的信息,处理后在排行榜中显示。图一 功能模块流程图(3)工作原理通过一个全局变量(modechs)来记录用户选择的模式,并根据模式进行相应的操作。其中包括:在计时模式中启动计时器和显示计时文本框、启用得分记录;在非计时模式中禁用计时器并隐藏计时文本框、禁用得分记录,显示combo记录;在发起挑战模式中,记录得分时弹出姓名输入框;在参加挑战模式中,弹出窗体给用户选

7、择想要参加的挑战,并在记录得分时弹出姓名输入框,最后弹出挑战榜,显示挑战结果。初始化完成之后,生成游戏地图,用户进行操作,启动计时器,给出相应的反馈,最后记录得分。四、 系统详细设计、关键技术与难点、测试数据(1)系统详细设计本系统总共使用了6个窗体,其中包括:主界面,游戏榜,挑战榜,选择挑战,玩法和提示,关于游戏。大多数主要功能和核心算法都在主界面窗体实现,其余窗体起到辅助作用。在界面设计上,本系统各窗体(关于游戏除外)采用了较为统一风格的图标和背景。通过image空间来实现透明按钮,使游戏风格独特,更具观赏性和娱乐性。(2)关键技术与难点本系统的关键技术遇难点主要有三消实现和成绩记录(排行

8、榜)。其中三消实现包括了:生成地图、判断死地图、交换图标、判断可消除、消除、下落、生成新图标,成绩记录包括了记录成绩和读取成绩。以下对部分难点进行介绍。生成地图stnwgame():首先在主界面窗体声明一个通用的二维数组(88),以该数组表示游戏地图,利用Randomize生成05的随机整数。为防止生成地图后立即得分(盘面中有可消除的图标),需要一边生成一边判断数组中的数所在行和列是否有三个或以上相同,若有则重新生成一个和行、列的数都不相同的随机数。判断死地图Boolean isDie():理论上是游戏中的重要算法,但测试至今尚未遇到过死地图的情况。通过扫描数组判断盘面上是否有可消除模型,若有

9、则立即返回False。交换图标:在图标控件数组的Click事件中实现。判断用户点击的两个图标是否在同一行或同一列,若不是则不作出反应,若是交换这两个图标。交换后,判断本次交换是否可消除,若是则调用相关功能进行消除,若否则调用延时函数并再次交换。判断可消除Boolean isLine(n As Integer)和Boolean mapline():isLine用于判断交换的图标周围是否有可消除模型(连续三个),全部用if语句判断,速度较快。Mapline用于判断整个地图中是否有可消除模型,用双重循环,速度较慢。消除remove():使用辅助二维数组,将可消除的图标标记为-1,并用延时函数和另一个

10、辅助数组做出消除时闪烁的效果。下落down():通过四重循环将-1排序到顶部,使用交换标志flag来优化。成绩记录:用户将名字输入在输入框中,将本次得分和名字记录在txt文件中,通过逗号进行分割。读取时也利用换行符和逗号进行分割,将数据存在相关数组中。在游戏榜中存放数据时,每次找到文件中最小的一次记录和当前成绩比较,若当前成绩较大,则覆盖这次记录;读取时进行冒泡排序,将得分最高的显示在最前面。在挑战榜中发起挑战时,每次覆盖掉最早的一次记录,将最新成绩记录在最后,并将对手姓名、得分、比赛结果分别设置为NONE、0、NONE。(3)测试数据五、 系统使用说明本系统为一个三消游戏系统,菜单栏中有四个

11、按钮:游戏、排行榜、工具、帮助。在游戏菜单中,用户可以选择三个游戏模式或退出游戏;在排行榜菜单中;用户可以打开游戏榜或挑战榜,查看记录的游戏成绩和挑战结果;在工具菜单中,用户可以启动系统计算器和记事本;在帮助菜单中,用户可以查看游戏玩法和提示以及关于游戏的信息。在游戏时,点击火焰图标可以开始一局新游戏。如果用户选择的是计时游戏模式(时间模式和对抗模式),界面中会出现计时器文本框和暂停按钮,当游戏结束后(或计时为结束时),用户可以点击score按钮记录自己的姓名和本次游戏得分。如果用户选择的是非计时模式(休闲模式),界面中则不会出现计时框和暂停按钮,score按钮也会被禁用,无法记录得分。若用户

12、在计时模式中想要切换游戏模式,则必须先按下暂停按钮或等待游戏时间结束。 游戏过程中,得分文本框和计时器文本框都将禁止用户输入任何数据。用户按下暂停按钮后,棋盘上的动物图标将会被隐藏,计时器也将暂停,直到再次按下暂停按钮后恢复。在用户输入自己的姓名时,只可以输入英文字符和数字,过长的字符串可能显示不完整。六、 实习的收获、心得、问题、困难和建议经过这次的实习,我觉得自己已经基本掌握了用VB设计简单软件的方法。由于上课只有三次,课堂上教的内容非常有限,因此大多数内容我都是在网上一边搜索一边学习才掌握的。VB是一门简单易用的语言,语法规则并不复杂,各功能模块也很简单,上手非常快。尤其在实现界面上相当

13、直观迅速,大约两个小时左右就可以完成最简单的基本界面,之后只需要编写代码和美化就可以了。虽然这次实习是我第一次自己制作游戏,但由于做的是一款平时玩得非常多的三消游戏,因此在功能分析和设计上没有太大困难,相对容易地设计出了关键步骤及其核心算法。一开始写的几个sub和function代码量比较大,加上对语法还不太适应,调试修改了多次才完成,使得早期的进度比较慢。特别是由于控件数组的两个图标贴反了而迟迟没有发现,为程序的查错带来了很大的困难。在这些问题修正之后,之后的进展就快了很多,基本上是边学边做,写完一部分就立刻进行调试,也取得了比较好的效果。在界面设计方面,因为希望游戏界面能够比较美观,并且有

14、一定的风格,因此花费了一定的时间来设计图标和背景图,完成之后的效果我自己也非常满意。设计这个游戏界面的时候希望窗体和按钮都能尽可能地少,这样能够使用户在玩游戏的时候操作更方便,大多数的操作都只需要在主界面窗口里就可以完成。而这也需要玩家仔细阅读玩法说明,才能更快地上手。制作游戏的大多数问题和困难都可以在网上搜索解决,尤其是一些博客分享的经验教程,往往比编程书更有用。相比之下,三次上课的内容就显得有些枯燥,且内容过于简单,平白浪费了很多时间。实际上仅仅经过几次讲课也并不能记住VB的具体用法,在编程时自己查阅老师留的PPT反而比上课更有意义。希望老师在上课时可以少讲一些基本语法,多讲一些设计游戏的

15、方法,以及VB比较独特的用法,尤其是控件数组和界面设计。附录1:核心代码及说明Sub stnwgame() 生成地图 Dim i, j, n As Integer For i = 0 To 7 For j = 0 To 7 Randomize a(i, j) = Int(Rnd * 6) Dim find3i, find3j As Boolean 行、列重复标志 If j = 2 Then If a(i, j - 1) = a(i, j - 2) Then find3j = True Else find3j = False End If Else find3j = False End If I

16、f i = 2 Then If a(i - 1, j) = a(i - 2, j) Then find3i = True Else find3i = False End If Else find3i = False End If If (find3i = False) And (find3j = False) Then do nothing ElseIf (find3j = True) And (find3i = False) Then a(i, j) = ranexcept(a(i, j - 1), a(i, j - 1) ElseIf (find3j = False) And (find3

17、i = True) Then a(i, j) = ranexcept(a(i - 1, j), a(i - 1, j) Else a(i, j) = ranexcept(a(i - 1, j), a(i, j - 1) End If Next j Next i For n = 0 To 63 Call loadpic(n) Next nEnd SubSub remove() 消除操作 Dim b(7, 7) As Boolean 辅助数组,存放可消标志 Dim i, j As Integer Dim temp As Integer Dim c(0 To 63) As Integer 辅助数组,

18、记录可消位置 Dim fin As Integer Dim flag(0 To 63) As Integer 辅助数组,存放原有图片信息 For i = 0 To 7 For j = 0 To 7 b(i, j) = False Next j Next i For i = 0 To 7 For j = 0 To 7 If i 7 - 1 Then If a(i, j) = a(i + 1, j) And a(i, j) = a(i + 2, j) Then b(i, j) = True b(i + 1, j) = True b(i + 2, j) = True End If End If If

19、 j 7 - 1 Then If a(i, j) = a(i, j + 1) And a(i, j) = a(i, j + 2) Then b(i, j) = True b(i, j + 1) = True b(i, j + 2) = True End If End If Next j Next i fin = 0 For i = 0 To 7 For j = 0 To 7 If b(i, j) Then c(fin) = i * 8 + j fin = fin + 1 End If Next j Next i For i = 0 To fin flag(i) = -1 Next i For

20、i = 0 To 4 通过循环和延时函数实现消除时闪烁效果 For j = 0 To fin - 1 temp = a(c(j) 8, c(j) Mod 8) a(c(j) 8, c(j) Mod 8) = flag(j) flag(j) = temp Call loadpic(c(j) Next j Call Sleep2(150) Next i score = score + fin 记录得分 Text2.Text = scoreEnd SubSub down() 下降操作,用排序将-1排到顶部 Call Sleep2(100) Dim i, j, k, l As Integer Dim

21、flag As Boolean For l = 0 To 7 flag = True For j = 0 To 7 For i = 7 To 0 Step -1 If a(i, j) = -1 Then For k = i To 1 Step -1 a(k, j) = a(k - 1, j) Next k a(0, j) = -1 flag = False End If Next i Next j If flag = True Then Exit For Next l For i = 0 To 7 For j = 0 To 7 Call loadpic(i * 8 + j) Next j Ne

22、xt iEnd SubFunction isLine(n As Integer) As Boolean 判断点击位置周围是否可消 Dim i As Integer Dim j As Integer i = n 8 j = n Mod 8 If j 1 Then If a(i, j) = a(i, j - 1) And a(i, j) = a(i, j - 2) Then isLine = True Exit Function End If End If If j 0 And j 7 Then If a(i, j) = a(i, j + 1) And a(i, j) = a(i, j - 1)

23、Then isLine = True Exit Function End If End If If i 1 Then If a(i, j) = a(i - 1, j) And a(i, j) = a(i - 2, j) Then isLine = True Exit Function End If End If If i 0 And i 7 Then If a(i, j) = a(i + 1, j) And a(i, j) = a(i - 1, j) Then isLine = True Exit Function End If End If isLine = FalseEnd Functio

24、nFunction mapline() As Boolean 判断盘面中是否可消 Dim i, j As Integer For i = 0 To 7 For j = 0 To 7 If i 7 - 1 Then If a(i, j) = a(i + 1, j) And a(i, j) = a(i + 2, j) Then mapline = True Exit Function End If End If If j 7 - 1 Then If a(i, j) = a(i, j + 1) And a(i, j) = a(i, j + 2) Then mapline = True Exit Fu

25、nction End If End If Next j Next i mapline = FalseEnd FunctionPrivate Sub Picture3_Click(Index As Integer) 动物图标操作 Dim n As Integer If second = 0 Then 时间为0时点击无效 Exit Sub End If If chs1 = -1 Then chs1 = Index 记录第一次点击下标 Else If chs2 = -1 Then chs2 = Index 记录第二次点击下标 End If If chs1 -1 And chs2 -1 Then 若已

26、点击两次 If Abs(chs1 - chs2) = 1 Or Abs(chs1 - chs2) = 8 Then 判断两次点击是否相邻 Call swap(chs1, chs2) If isLine(chs1) = False And isLine(chs2) = False Then Call Sleep2(200) Call swap(chs1, chs2) cant swap Else combo = 0 初始化combo Do Call remove Call down Call fall Do While isDie = True Call stnwgame Loop combo

27、= combo + 1 Loop While (mapline = True) End If Else Cant move End If chs1 = -1 chs2 = -1 End If If modechs = 4 Then 在休闲模式下显示连击提醒和休息提醒 If combo 300 Then MsgBox 玩累了,休息一下? scorewarn = score End If End If End SubPrivate Sub Image1_Click() score按钮,记录得分 If modechs = 4 Then 休闲模式下不可用 Exit Sub ElseIf modechs

28、 = 5 Then Call startfight Exit Sub ElseIf modechs = 6 Then Call attendfight Exit Sub End If Dim name As String Dim s() As String Dim i, mindex As Integer Dim min As Long Dim c(0 To 9) As Long Open App.Path & datarecord.txt For Binary As #1 s = Split(Input(LOF(1), #1), vbCrLf) min = Val(s(0) mindex = 0 For i = 1 To 9 c(i) = Val(s(i) If c(i) min Then 若大于已存成绩中的最小值,则覆盖它 name = InputBox(请输入你的名字(仅数字和字母):) s(mindex) = sco

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2