小游戏贪吃蛇的详细设计(编辑修改稿)内容摘要:

们小组的每位成员,谢谢。 16 程序清单 .386 .model flat,stdcall option casemap:none include \masm32\include\ include \masm32\include\ include \masm32\include\ include \masm32\include\ include。 include \masm32\include\。 for status bar include include include d:\masmplus\include\。 for Random includelib \masm32\lib\ includelib \masm32\lib\ includelib \masm32\lib\ includelib \masm32\lib\ includelib d:\masmplus\lib\ WinMain proto :DWORD,:DWORD,:DWORD,:DWORD AboutProc proto, hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM WndProc proto hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .data ClassName db DLGCLASS, 0。 snakeDlg,0 helpMsg db Help: [Space]Pause or Start | [Esc]Exit | [Arrow]Direction, 0 scoreMsg db Length:%d, 0 gameover db GAME OVER!, 0 BkgndClr dd 0000dd00h。 0x00bbggrr statusWidth dd 280,350,1 gSnake SnakeSt .data? hInstance HINSTANCE ? CommandLine LPSTR ? hdc dd ? hSnkDC dd ? hFdDC1 dd ? hFdDC2 dd ? hSnkBmp dd ? hFdBmp1 dd ? hFdBmp2 dd ? hbrBackground dd ? 17 fPause dd ? isOver dd ? buffer db 100 dup (?) .code start: invoke InitCommonControls invoke GetModuleHandle, NULL mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT invoke ExitProcess,eax Random proc _r0:DWORD mov eax, _r0 imul eax, 23 add eax, 123 and eax, 7FFFH ret Random endp。 将改变链表头,没有返回值 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]., ebx mov ebx, [edx].y mov [eax]., ebx mov ebx, ppNode mov ebx, [ebx] mov [eax].next, ebx push eax mov eax, ppNode pop DWORD ptr [eax] 18 assume eax:nothing, edx:nothing popad ret AddFromHead endp。 删除链表最后一个元素,无返回值 DelFromTail proc, ppNode:dword pushad assume eax:ptr Node, ebx:ptr Node 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, ebx LRET: assume eax:nothing, ebx:nothing popad ret DelFromTail endp FreeAll proc, ppNode:dword push eax mov eax, ppNode mov eax, [eax] .while eax != 0 19 push (Node ptr [eax]).next invoke LocalFree, eax pop eax .endw mov eax, ppNode mov dword ptr [eax], 0 pop eax ret FreeAll endp IsExist proc, pNode:dword, pPos:dword push ebx push ecx push edx mov eax, pNode mov edx, pPos assume eax:ptr Node, edx:ptr PosSt .while eax != NULL mov ebx, [eax]. mov ecx, [eax]. .if ebx == [edx].x amp。 amp。 ecx == [edx].y mov eax, TRUE .break .endif mov eax, [eax].next .endw assume eax:nothing, edx:nothing pop edx pop ecx pop ebx ret IsExist endp WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG LOCAL hDlg:HWND mov ,SIZEOF WNDCLASSEX。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。