亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mybox.asm

?? 推箱子 win32做的!!! 本游戲是從先前Redfox的源程序修改而來(不過
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
; 此時的( NewX1, NewY1 )的位圖已被角色位圖覆蓋,所以不必繪制
;-----------------------------------------------------------------------
		invoke	_PaintOneBitmap, ManXPos, ManYPos, xBmMan, 0

  		popad
 		ret
_ManMove	endp
;************************************************************************


;************************************************************************
; 引爆炸彈
;------------------------------------------------------------------------
_UseBomb	proc
		local	@nPos

		pushad
		mov	eax, BombFlag

		.if	eax == 1
			mov	esi, offset Map
			invoke	_SearchMapLinePos, BombXPos, BombYPos
			mov	@nPos, eax
			mov	al, [esi][eax]
			.if	al == MAP_WALL
				mov	ebx, @nPos
				mov	al, MAP_ROAD
				mov	[esi][ebx], al
				invoke	_PaintOneBitmap, BombXPos, BombYPos, xBmRoad, 0
				invoke	MessageBeep, -1
				invoke	SendMessage, hWinStatus, SB_SETTEXT, 1, addr szNoBomb
				xor eax, eax
				mov BombCount, eax
				mov BombFlag, eax
			.endif
		.endif
		popad
		ret
_UseBomb	endp
;************************************************************************


;************************************************************************
; 顯示或隱藏炸彈
;------------------------------------------------------------------------
_ShowBomb	proc

		pushad
		mov	eax, BombFlag

		.if	eax == 0	; 炸彈不存在
			mov	eax, BombCount
			.if	( eax == 1 && BombXPos == 0 )	; 第一次顯示炸彈
			@Reset:
				mov	esi, offset Map
				xor	ebx, ebx
				mov	ecx, 14d * 12d
			@@:
				mov	al, [esi][ebx]
				inc	ebx
				cmp	al, MAP_WALL
				loopnz	@B

				dec	ebx
				mov	eax, ebx	; ebx的值為man在Map中的邏輯線性地址
				mov	edx, 0
				mov	ebx, 14d
				div	ebx
				mov	BombXPos, edx	; 余數,注意坐標從0開始計算
				mov	BombYPos, eax	; 商,  注意坐標從0開始計算
				mov	eax, 1
				mov	BombFlag, eax
				jmp	@Exit
			.elseif	eax == 1
				invoke	_SearchMapLinePos, ManXPos, ManYPos
				mov	ebx, eax
				invoke	_SearchMapLinePos, BombXPos, BombYPos
				.if	( ebx == eax || edx == xBmBox1 || edx == xBmBox2 )
					jmp	@Reset
				.endif
				mov	eax, 1
				mov	BombFlag, eax
			.endif
		.else	; 炸彈已顯示,則隱藏炸彈
			invoke	_SearchMapLinePos, BombXPos, BombYPos
			invoke	_PaintOneBitmap, BombXPos, BombYPos, edx, 0
			xor	eax, eax
			mov	BombFlag, eax
		.endif
@Exit:
		popad
		ret
_ShowBomb	endp
;************************************************************************


;************************************************************************
; 檢測玩家是否已將全部的箱子推到正確的位置上
;------------------------------------------------------------------------
_Check		proc

		.if	ObjectLeft == 0
			mov	eax, TRUE
		.else
			mov	eax, FALSE
		.endif

		ret
_Check		endp
;************************************************************************


;************************************************************************
; 處理按鍵消息
;------------------------------------------------------------------------
_KeyDownProc	proc	@KeyDown

		mov	eax, @KeyDown

		.if	( eax == VK_UP || eax == VK_DOWN || eax == VK_LEFT || eax == VK_RIGHT )
			mov	eax, BombFlag
			.if	eax == 1
				invoke	_BombMove, @KeyDown
				jmp	@F
			.else
				invoke	_ManMove, @KeyDown
			.endif
		.elseif	eax == VK_BACK
			invoke	_LoadStep
			jmp	@F
		.elseif	eax == VK_B
			invoke	_ShowBomb
			jmp	@F
		.elseif	eax == VK_RETURN
			invoke	_UseBomb
			jmp	@F
		.else
			jmp	@F
		.endif

		invoke	_Check	; 檢查man是否已把所有箱子都推到了正確的位置上

		.if	eax == TRUE
			xor	eax, eax
			mov	TimeFlag, eax	; 停止計時
			invoke	MessageBox, hWinMain, addr szSuccessMsg, addr szCaption, \
				MB_ICONINFORMATION or MB_OKCANCEL
			.if	eax == IDOK
				mov	eax, CurrentGate
				.if	eax == MAX_GATES
					invoke	MessageBox, hWinMain, addr szGameOver, \
						addr szCaption, MB_ICONINFORMATION
					jmp	@F
				.endif
				inc	eax
				invoke	_SelectGate, eax
				invoke	_Repaint
			.endif
		.endif
@@:
		ret
_KeyDownProc endp
;************************************************************************


;************************************************************************
; "關于"消息對話框窗口過程
;------------------------------------------------------------------------
_ProcDlgMain	proc	uses ebx edi esi hWnd, wMsg, wParam, lParam

		mov	eax, wMsg

		.if	eax == WM_CLOSE
			invoke	EndDialog, hWnd, NULL
		.elseif	eax == WM_INITDIALOG
			invoke	LoadIcon, hInstance, ICO_MSG
			invoke	SendMessage, hWnd, WM_SETICON, ICON_BIG, eax
		.elseif	eax == WM_COMMAND
			mov	eax, wParam
			.if	ax == IDOK
				invoke	EndDialog, hWnd, NULL
			.endif
		.else
			mov	eax, FALSE
			ret
		.endif

		mov	eax, TRUE
		ret
_ProcDlgMain	endp
;************************************************************************


;************************************************************************
; 主窗口過程
;------------------------------------------------------------------------
_ProcWinMain	proc	uses ebx edi esi, hWnd, uMsg, wParam, lParam
		local	@szTimerBuffer[20] : byte
		local	@PS : PAINTSTRUCT

		mov	eax, uMsg
;------------------------------------------------------------------------
		.if	eax == WM_TIMER
			mov	eax, wParam
			.if	eax == ID_SHOWBOMB
				mov	eax, BombFlag
				.if	eax == 1
					invoke	_SearchMapLinePos, BombXPos, BombYPos
					.if	edx == xBmWall
						inc	dwCount
						mov	eax, dwCount
						and	eax, 1
						inc	eax
						.if	eax == 1
							invoke	_PaintOneBitmap, BombXPos, BombYPos, xBmBomb, 0
						.else
							invoke	_PaintOneBitmap, BombXPos, BombYPos, edx, 0
						.endif
					.else
						invoke	_PaintOneBitmap, BombXPos, BombYPos, xBmBomb, 0
					.endif
				.endif
			.elseif	eax == ID_GAMETIMER
				invoke	_SetGameTime
				mov	eax, GameHour
				mov	ebx, GameMinute
				mov	ecx, GameSecond
				invoke	wsprintf, addr @szTimerBuffer, addr szGameTime, \
					eax, ebx, ecx
				invoke	SendMessage, hWinStatus, SB_SETTEXT, 0, addr @szTimerBuffer
			.endif

;------------------------------------------------------------------------
		.elseif	eax == WM_KEYDOWN
			invoke	_KeyDownProc, wParam

;------------------------------------------------------------------------
		.elseif	eax == WM_COMMAND
			mov	eax, wParam

;..............................刷新當前關卡..............................
			.if	eax == IDM_REFLUSH
				invoke	_SelectGate, CurrentGate
				invoke	_Repaint	; 繪制窗口客戶區

;..............................加載上一關卡..............................
			.elseif	eax == IDM_PREV
				mov	eax, CurrentGate
				dec	eax
				invoke	_SelectGate, eax
				invoke	_Repaint	; 繪制窗口客戶區

;..............................加載下一關卡..............................
			.elseif	eax == IDM_NEXT
				mov	eax, CurrentGate
				inc	eax
				invoke	_SelectGate, eax
				invoke	_Repaint	; 繪制窗口客戶區

;.............................."關于"消息命令............................
			.elseif	eax == IDM_ABOUT
				invoke	DialogBoxParam, hInstance, DLG_MAIN, hWnd, \
					offset _ProcDlgMain, NULL

;..............................退出命令..................................
			.else
				invoke	_FreeRes
				invoke	_Quit
			.endif

;------------------------------------------------------------------------
		.elseif	eax == WM_PAINT
			invoke	BeginPaint, hWnd, addr @PS
			invoke	_WMPaint, eax
			invoke	EndPaint, hWnd, addr @PS

;------------------------------------------------------------------------
		.elseif	eax == WM_NOTIFY
			mov	ebx, lParam
			.if	[ ebx + NMHDR.code ] == TTN_NEEDTEXT
				assume	ebx : ptr TOOLTIPTEXT
				mov	eax, [ebx].hdr.idFrom
				mov	[ebx].lpszText, eax
				push	hInstance
				pop	[ebx].hinst
				assume	ebx : nothing
			.endif

;------------------------------------------------------------------------
		.elseif	eax == WM_CREATE
;..........................設置標題欄圖標................................
			invoke	LoadIcon, hInstance, ICO_MAIN
			invoke	SendMessage, hWnd, WM_SETICON, ICON_BIG, eax

;..........................設置工具欄....................................
			invoke	CreateToolbarEx, hWnd, \
				WS_VISIBLE or WS_CHILD or TBSTYLE_FLAT or TBSTYLE_TOOLTIPS, \
				ID_TOOLBAR, NUM_BUTTONS, hInstance, IDM_TOOLBAR, offset stToolbar, \
				NUM_BUTTONS, 16, 16, 16, 16, sizeof TBBUTTON
			mov	hWinToolbar, eax

;..........................設置狀態欄....................................
			invoke	CreateStatusWindow, WS_CHILD OR WS_VISIBLE,
				NULL, hWnd, ID_STATUSBAR
			mov	hWinStatus, eax
			invoke	SendMessage, hWinStatus, SB_SETPARTS, 4, offset dwStatusWidth

;..........................設置定時器....................................
			invoke	SetTimer, hWnd, ID_GAMETIMER, 1000, NULL
			invoke	SetTimer, hWnd, ID_SHOWBOMB, 500, NULL
			xor	eax, eax
			mov	TimeFlag, eax	;禁止計時

;..........................讀入地圖數據資源..............................
			invoke	_LoadRes

;------------------------------------------------------------------------
		.elseif	eax == WM_CLOSE
			invoke	_FreeRes
			invoke	_Quit

;------------------------------------------------------------------------
		.else
			invoke	DefWindowProc, hWnd, uMsg, wParam, lParam
			ret

;------------------------------------------------------------------------
		.endif

		xor	eax, eax
		ret
_ProcWinMain	endp
;************************************************************************


;************************************************************************
_WinMain	proc
		local	@stWndClass : WNDCLASSEX
		local	@stMsg : MSG
		local	cxScreen, cyScreen

		invoke	InitCommonControls
		invoke	GetModuleHandle, NULL
		mov	hInstance, eax
		invoke	LoadMenu, hInstance, IDM_MAIN
		mov	hMenu, eax
;------------------------------------------------------------------------
; 注冊窗口類
;------------------------------------------------------------------------
		invoke	RtlZeroMemory, addr @stWndClass, sizeof @stWndClass
		mov	@stWndClass.cbSize, sizeof WNDCLASSEX
		mov	@stWndClass.style, CS_HREDRAW or CS_VREDRAW
		mov	@stWndClass.lpfnWndProc, offset _ProcWinMain
		push	hInstance
		pop	@stWndClass.hInstance
		invoke	LoadCursor, hInstance, IDM_CUR
		mov	@stWndClass.hCursor, eax
		mov	@stWndClass.hbrBackground, COLOR_BTNFACE + 1
		mov	@stWndClass.lpszClassName, offset szClassName
		invoke	RegisterClassEx,addr @stWndClass
;------------------------------------------------------------------------
; 創建窗口
;------------------------------------------------------------------------
		invoke	GetSystemMetrics, SM_CXSCREEN
		mov	cxScreen, eax
		invoke	GetSystemMetrics, SM_CYSCREEN
		mov	cyScreen, eax
		mov	eax, cxScreen
		shr	eax, 1
		mov	cxScreen, eax
		mov	eax, cyScreen
		shr	eax, 1
		mov	cyScreen, eax
		mov	eax, cxScreen
		sub	eax, 213d
		mov	cxScreen, eax
		mov	eax, cyScreen
		sub	eax, 240
		mov	cyScreen, eax
		invoke	CreateWindowEx, NULL, offset szClassName, \
			offset szCaption, WS_CAPTION or WS_SYSMENU or WS_BORDER, \
			cxScreen, cyScreen, 425, 460,\
			NULL, hMenu, hInstance, NULL
		mov	hWinMain, eax
;------------------------------------------------------------------------
; 顯示窗口
;------------------------------------------------------------------------
		invoke	_SelectGate, 1
		invoke	ShowWindow, hWinMain, SW_SHOWNORMAL
		invoke	UpdateWindow, hWinMain
;------------------------------------------------------------------------
; 消息循環
;------------------------------------------------------------------------
		.while	TRUE
			invoke	GetMessage, addr @stMsg, NULL, 0, 0
			.break	.if eax == 0
			invoke	TranslateMessage, addr @stMsg
			invoke	DispatchMessage, addr @stMsg
		.endw
		ret
_WinMain	endp
;************************************************************************


;************************************************************************
start:
		call	_WinMain
		invoke	ExitProcess, NULL
;========================================================================
		end	start

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美剧情片在线观看| 日韩亚洲欧美在线| 日韩欧美一区在线| 日韩毛片视频在线看| 久久99精品久久只有精品| 一本色道**综合亚洲精品蜜桃冫| 精品福利一区二区三区免费视频| 亚洲国产视频直播| 色婷婷久久99综合精品jk白丝| 国产欧美一区二区精品秋霞影院| 日韩av电影免费观看高清完整版在线观看| 成人av影视在线观看| 久久综合久久综合九色| 蜜桃一区二区三区在线观看| 精品视频在线免费观看| 亚洲精品v日韩精品| 99精品视频在线观看免费| 久久无码av三级| 九色|91porny| 日韩三级在线免费观看| 免费成人深夜小野草| 51精品秘密在线观看| 亚洲午夜三级在线| 欧美亚洲一区二区三区四区| 亚洲免费大片在线观看| 93久久精品日日躁夜夜躁欧美| 国产情人综合久久777777| 国产精品69毛片高清亚洲| xnxx国产精品| 国产精品亚洲第一区在线暖暖韩国 | 全部av―极品视觉盛宴亚洲| 91福利视频在线| 麻豆视频一区二区| 国产主播一区二区| 久久久青草青青国产亚洲免观| 久久精品国产在热久久| 日韩一区二区三区电影在线观看 | 91精品国产综合久久小美女| 亚洲综合丁香婷婷六月香| 色妞www精品视频| 一区二区三区毛片| 欧美日韩成人一区二区| 免费在线视频一区| 久久综合视频网| 成人一区二区三区视频在线观看 | 日韩精品一区二区在线| 国产精品一区二区你懂的| 337p日本欧洲亚洲大胆色噜噜| 国产精品中文字幕一区二区三区| 国产网站一区二区| 色噜噜狠狠一区二区三区果冻| 亚洲一区二区三区激情| 日韩你懂的在线播放| 国产福利91精品一区二区三区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 欧美在线观看一区二区| 婷婷开心激情综合| 精品国产青草久久久久福利| caoporen国产精品视频| 亚洲国产婷婷综合在线精品| 精品国产成人在线影院| av在线播放不卡| 欧美日韩在线观看一区二区 | 欧美日韩精品一区二区天天拍小说| 日韩高清不卡一区二区三区| 久久久午夜精品| 99国产精品久久久久久久久久| 婷婷中文字幕一区三区| 国产精品网站在线| 欧美日韩国产一区二区三区地区| 精品一区二区在线看| 有码一区二区三区| 久久亚洲私人国产精品va媚药| 色婷婷精品大在线视频| 玖玖九九国产精品| 一区二区三区在线视频观看58| 久久综合成人精品亚洲另类欧美| 一本久久综合亚洲鲁鲁五月天| 精品一区二区日韩| 亚洲gay无套男同| 国产女主播在线一区二区| 884aa四虎影成人精品一区| 国产91丝袜在线观看| 丝袜亚洲另类欧美综合| 综合电影一区二区三区| 精品国产乱码久久久久久老虎| 欧美写真视频网站| 成人app软件下载大全免费| 久久精品久久久精品美女| 亚洲va在线va天堂| 亚洲欧美日韩中文播放| 欧美国产日韩一二三区| 精品蜜桃在线看| 欧美三级韩国三级日本三斤| 91色.com| 成人免费视频一区| 国产成人免费9x9x人网站视频| 日本中文在线一区| 午夜精品福利一区二区蜜股av| 亚洲日韩欧美一区二区在线| 欧美激情在线一区二区| 久久久国产精品麻豆| 日韩视频免费直播| 91精品国产综合久久久久久漫画 | 亚洲一区二区三区中文字幕| 国产人伦精品一区二区| 久久久综合视频| 精品国产乱码91久久久久久网站| 4438亚洲最大| 欧美高清hd18日本| 欧美一区二区三区人| 欧美精品v日韩精品v韩国精品v| 在线看国产一区| 欧美吞精做爰啪啪高潮| 8x8x8国产精品| 欧美精品vⅰdeose4hd| 欧美一区二区免费视频| 51午夜精品国产| 精品国内二区三区| 国产三级精品三级| 中文字幕中文字幕在线一区| 亚洲婷婷综合色高清在线| 亚洲精品精品亚洲| 亚洲一卡二卡三卡四卡五卡| 午夜电影网亚洲视频| 男人的j进女人的j一区| 国产综合一区二区| 99久久免费视频.com| 91久久精品网| 欧美一区二区黄| 日本一区免费视频| 一区二区三区波多野结衣在线观看| 亚洲免费色视频| 日韩精品欧美精品| 国产精一品亚洲二区在线视频| 成人永久免费视频| 欧美制服丝袜第一页| 日韩欧美在线1卡| 久久久久久久久久久黄色| 亚洲欧美一区二区三区久本道91 | 欧美精品久久99| 久久影院午夜片一区| 国产精品久久久久久妇女6080| 一区二区久久久久久| 蜜桃在线一区二区三区| 成人美女视频在线观看| 欧美日韩在线不卡| 国产婷婷色一区二区三区四区 | 久久99精品国产麻豆婷婷| 成人免费va视频| 91精品国产欧美一区二区18| 国产精品你懂的在线欣赏| 污片在线观看一区二区| 成人综合在线观看| 91精品国产综合久久精品app| 国产欧美va欧美不卡在线| 香蕉久久夜色精品国产使用方法| 国产伦精品一区二区三区在线观看| 色综合欧美在线| 久久女同性恋中文字幕| 亚洲一二三四区| 东方aⅴ免费观看久久av| 欧美一级黄色录像| 亚洲一区二区在线视频| 国产不卡一区视频| 精品久久久久久久久久久久包黑料 | 国产乱码字幕精品高清av | 国产精品美女一区二区在线观看| 日欧美一区二区| 91麻豆文化传媒在线观看| 久久综合精品国产一区二区三区| 亚洲影院免费观看| 成人综合婷婷国产精品久久免费| 欧美一区二区三区系列电影| 亚洲同性同志一二三专区| 国产在线播放一区二区三区| 欧美日韩一级大片网址| 国产精品久久久久久久久搜平片 | 在线免费不卡电影| 国产精品欧美一区喷水| 国产一区二区三区香蕉| 欧美二区在线观看| 一区二区三区免费| 91麻豆国产福利精品| 国产欧美va欧美不卡在线| 紧缚捆绑精品一区二区| 欧美一二区视频| 日韩高清不卡一区二区三区| 欧美午夜宅男影院| 一区二区视频在线| 91官网在线观看| 夜夜操天天操亚洲| 91久久精品网| 亚洲二区在线视频| 欧美揉bbbbb揉bbbbb| 亚洲国产婷婷综合在线精品| 欧美日韩国产精品成人| 日本网站在线观看一区二区三区| 在线成人免费视频| 日本视频中文字幕一区二区三区|