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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(小游戏贪吃蛇的详细设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

小游戏贪吃蛇的详细设计.docx

1、小游戏贪吃蛇的详细设计摘要在我们空闲的时候,我们可以用一些我们学过的知识编一些东西,通过这些东西我们可以学习到汇编语言综合应用程序设计方法,还可以提高汇编语言实际应用能力,充分了解计算机硬件和软件,完成理论到实践的推进过程。这个程序就是用我所学过的汇编知识编的一个小游戏,这个游戏的程序主要就是用汇编宏和子程序的知识来编制而成的,我们用宏和子程序定义了很多的模块,模块也就是在我们的程序中直接可以调用的一个独立的程序。所以我们编写程序的时候可以很方便的用到它,所以那些基础知识也是我们编写程序的基础。关键词 汇编 贪吃蛇 小游戏前言现在有的一些人感觉生活都是很无聊的,特别是我们这些学生,所以有些时候

2、肯定会玩各种各样的游戏的,有一些大的游戏,玩起来会话掉很多的时间,而且也会花掉大量精力的 ,所以在一些闲暇的时候一些小游戏会博得很多人的喜爱,例如:俄罗斯方块,和一些格斗游戏等等。然而这些小游戏的设计方法和软件有很多,所以也有很多不同的效果,本篇设计是采用汇编中宏定义和调用,子程序的调用等一些汇编知识编制而成的一个贪吃蛇小游戏,通过这个小游戏的制作,我们可以得到很多的益处,一方面我们可以不在浪费平时的一些空闲的时间了,而热中于我们自己喜欢的游戏;另一个方面我们制作完游戏还可以给自己或者别人来享受一下,同时自己也会有一种成就感。特别当你用自己学到的知识制作出一个东西的时候,或者克服一个困难的时候

3、你就会发现你自己的价值所在了,而且这还能促进你喜欢学习的念头。目录一、系统分析 二、系统总体设计三、详细设计1、 窗口化程序2、 建立小蛇和食物3、 初始对话框4、 小蛇和食物的位置5、 分配内存空间6、 调整链表大小四、系统测试 1测试方案及用例2.测试结果及软件可靠性分析3.游戏规则五、软件使用说明书六、设计总结参考文献致谢程序清单 一、系统分析这个程序的总体的思想也就是主要用的就是宏和子程序的定义和调用,首先,定义了5个宏它们分别为:屏幕初始化宏定义在光标位置显示字符和属性定义显示字符串宏定义置光标位置宏定义读光标位置的字符和属性宏定义。它们在程序中起到主要的作用。其次,就是子程序定义了

4、,程序中定义了很多的子程序,其中有:控制子程序食物子程序,还有记分子程序等。它们首先被主程序调用,然后它们之间再互相调用,这样构成了完整的游戏程序并实现其功能。具体的设计思想是:第一,对数据进行初始化,即对寄存器的初始化,比如对食物的初始化等。第二,开始运行,判断是否符合条件,如果符合赢的条件的话,就会跳转到赢的那个子程序下,然后那个赢的子程序会调用记分的那个子程序,最后显示赢的信息和分数后再转到控制程序执行控制和其后的程序。如果要是输的话,就会跳转到输的那个子程序下,然后那个输的子程序也会调用记分的那个子程序,最后显示得分和信息。如果要是没有赢也没有输的话,那程序会跳到控制的子程序中,等控制

5、完以后程序又会跳到程序判断的那个地方重复的执行。这个就是完成这个游戏程序的整个思想。二、系统总体设计这个程序完成的功能就是和别的游戏一样,最初,给出一个初始化的界面,和一个4个方块组成的小蛇,我们要把那个最初给出那个小蛇穿过那个闪烁的小红黄相间的小方块,然后那个小方块就会变成我们那个小蛇上的组成单元一样的一个小方块,和在别的地方会在出现另一个小方块,我们接下来要做的就是要把那个小方块穿过来,然后我们那个小蛇就会变长了,然后在穿过小方块,就这样重复的做就行了,随着你的穿过你的小蛇就会越来越长了,这是你的得分就会越高,同时你难度也会变大的,因为如果你要碰到四周的变的话,或者你自己的那个小蛇首尾要是

6、相连的话你就会输了,所以当你那个小蛇很长的时候,难度自然就会变大了。动画贪吃蛇程序的流程图三详细设计1窗口化程序.data ClassName db DLGCLASS, 0;snakeDlg,0 helpMsg db Help: Space-Pause or Start | Esc-Exit | Arrow-Direction, 0scoreMsg db Length:%d, 0gameover db GAME OVER!, 0BkgndClr dd 0000dd00h ;0x00bbggrrstatusWidth dd 280,350,-1gSnake SnakeSt 2建立小蛇和食物Ini

7、tBmp proc, hWnd:HWND invoke GetDC, hWnd mov hdc, eax ;蛇体画片 invoke CreateCompatibleDC, hdc mov hSnkDC, eax invoke LoadBitmap, hInstance, SnakeBmp mov hSnkBmp, eax invoke SelectObject, hSnkDC, eax ;食物画片1 invoke CreateCompatibleDC, hdc mov hFdDC1, eax invoke LoadBitmap, hInstance, FdBmp1 mov hFdBmp1, e

8、ax invoke SelectObject, hFdDC1, eax ;食物画片2 invoke CreateCompatibleDC, hdc mov hFdDC2, eax invoke LoadBitmap, hInstance, FdBmp2 mov hFdBmp2, eax invoke SelectObject, hFdDC2, eax3初始对话框WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM LOCAL rect:RECT LOCAL ps:PosSt .if uMsg = WM_CLOSE inv

9、oke DestroyWindow, hWnd .elseif uMsg = WM_CREATE invoke GetWindowRect, hWnd, addr rect invoke SetWindowPos, hWnd, HWND_NOTOPMOST, rect.left , rect.top, CLIENTW, CLIENTH, SWP_NOZORDER .elseif uMsg = WM_INITDIALOG ;此时对话框子控件都已经初始化好了 invoke SendDlgItemMessage, hWnd, IDC_SBR1, SB_SETPARTS, 3, offset stat

10、usWidth invoke SendDlgItemMessage, hWnd, IDC_SBR1, SB_SETTEXT, 0, offset helpMsg invoke InitBmp, hWnd invoke InitGame, hWnd4.小蛇与食物的位置push rect.left pop ps.x push rect.top pop ps.ymov eax, ps.xmov ebx, ps.y ;ps存放的是下一个位置的坐标5.分配内存空间DelFromTail proc, ppNode:dword pushad assume eax:ptr Node, ebx:ptr Node

11、 mov eax, ppNode mov eax, dword ptr eax cmp eax, 0 je LRET .if eax.next = NULL ;只有一个元素,释放内在,将表头置空 invoke LocalFree, eax mov eax, ppNode mov DWORD ptr eax, 0 jmp LRET .endif mov ebx, eax.next .while ebx.next != NULL mov eax, eax.next mov ebx, ebx.next .endw mov eax.next, NULL invoke LocalFree, ebx6.调

12、整链表大小AddFromHead proc, ppNode:dword, pPos:dword pushad assume eax:ptr Node, edx: ptr PosSt mov edx, pPos push edx invoke LocalAlloc, LPTR, sizeof(Node);会改变edx的值 pop edx mov ebx, edx.x mov eax.data.x, ebx mov ebx, edx.y mov eax.data.y, ebx mov ebx, ppNode mov ebx, ebx mov eax.next, ebx push eax mov e

13、ax, ppNode pop DWORD ptr eax assume eax:nothing, edx:nothing popad retAddFromHead endp四系统测试1测试方案及用例 (1)在MASMPlus里编译snack.asm,编译无误后,接下来进行下一步测试。(2)在所创建的窗口化程序里测试小蛇上,下,左,右,和吃食物及碰撞墙壁和自己发生的现象。2. 测试结果及软件可靠性分析测试编译显示无误,出现界面图4.1 界面图测试小蛇吃食物 图4.2吃食物图吃食物成功 图4.3吃食物成功图碰撞墙壁游戏结束 图4.4碰撞墙壁游戏结束小蛇碰撞自己游戏结束 图4.5小蛇碰撞自己游戏结束图3游戏规则贪吃蛇游戏是一款简单的益智类游戏,规则很简单,就是吃屏幕上的食物增加蛇的长度来提高分数,避免蛇撞墙和撞到自己导致游戏结束。五软件使用说明书1、运行程序在我们用的软件MASM32的目录下,我们可以找到snake.exe文件,双击就可以打开了。2、玩游戏我们通过键盘的上下左右键来控制里面我们的那个小蛇的,即键盘上的键,只需要这四个键就可以了。而且有空格键可以暂停或开始游戏,esc为退出游戏。 六设计总结这个小游戏程序主要

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1