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

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

?? mybox.asm

?? 推箱子 win32做的!!! 本游戲是從先前Redfox的源程序修改而來(不過
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
			invoke	_SelectGate, CurrentGate
			ret
		.endif

		pushad
		mov	CurrentGate, eax
		mov	eax, 14d * 12d + 4
		mov	ebx, @Gate
		dec	ebx
		mul	ebx
		mov	esi, offset BoxMaps
		add	esi, eax
		mov	eax, dword ptr [esi]	; 取出本關卡的目標地點數量
		mov	ObjectLeft, eax
		add	esi, 4
		mov	edi, offset Map
		mov	ecx, 14d * 12d
		cld				; 設置內存地址為遞增方向
		rep	movsb

		mov	ecx, 0
		mov	esi, offset Map

;------------------查找玩家控制角色的線性邏輯坐標---------------------
@@:
		mov	ebx, ecx
		mov	al, [esi][ebx]
		cmp	al, MAP_MAN
		jz	@F
		inc	ecx
		cmp	ecx, 14d * 12d
		jnz	@B
@@:
		mov	al, MAP_ROAD
		mov	[esi][ebx], al
  
;------------------將角色的線性邏輯坐標轉換為二維邏輯坐標--------------
		mov	edx, 0
		mov	eax, ecx	; ecx的值為man在Map中的邏輯線性地址
		mov	ebx, 14d
		div	ebx
		mov	ManXPos, edx	; 余數,注意坐標從0開始計算
		mov	ManYPos, eax	; 商,  注意坐標從0開始計算

		invoke	wsprintf, addr szTmp1, addr FmtGate, CurrentGate
		invoke	lstrcpy, addr szTmp2, addr szCaption
		invoke	lstrcat, addr szTmp2, addr szTmp1
		invoke	SendMessage, hWinMain, WM_SETTEXT, 0, addr szTmp2	; 設置標題欄上的文本顯示

;-------------------初始化當前可回退次數為0-----------------------------
		xor	eax, eax
		mov	BackLength, eax

;-------------------初始化炸彈狀態--------------------------------------
		inc	eax
		mov	BombCount, eax
		dec	eax
		mov	BombFlag, eax
		mov	BombXPos, eax
		invoke	SendMessage, hWinStatus, SB_SETTEXT, 1, addr szBomb

;-------------------初始化玩家移動步數----------------------------------
		xor	eax, eax
		mov	StepNumber, eax
		invoke	wsprintf, addr szTmp2, addr szStep, StepNumber
		invoke	SendMessage, hWinStatus, SB_SETTEXT, 2, addr szTmp2

;-------------------初始化游戲時間--------------------------------------
		xor	eax, eax
		mov	TimeCircle, eax
		mov	TimeFlag, eax	; 禁止計時
		mov	GameHour, eax
		mov	GameMinute, eax
		mov	GameSecond, eax
		invoke	_SetLocalTime	; 測試使用
		popad
		ret
_SelectGate	endp
;************************************************************************


;************************************************************************
; 炸彈移動
;------------------------------------------------------------------------
_BombMove	proc	@KeyDown
		local	@xNext, @yNext
		local	@addrBomb

		pushad
		mov	eax, BombXPos
		mov	@xNext, eax
		mov	eax, BombYPos
		mov	@yNext, eax

		mov	eax, @KeyDown

		.if	eax == VK_UP
			dec	@yNext
		.elseif	eax == VK_DOWN
			inc	@yNext
		.elseif eax == VK_LEFT
			dec	@xNext
		.elseif eax == VK_RIGHT
			inc	@xNext
		.else
			ret
		.endif

		invoke	_SearchMapLinePos, @xNext, @yNext
		mov	@addrBomb, eax
		invoke	_SearchMapLinePos, ManXPos, ManYPos

		.if	eax != @addrBomb	; eax中為角色在Map中的線性邏輯地址
			mov	esi, offset Map
			invoke	_SearchMapLinePos, @xNext, @yNext
			mov	al, [esi][eax]
			.if ( al == MAP_ROAD || al == MAP_OBJECT || al == MAP_WALL )
				invoke	_SearchMapLinePos, BombXPos, BombYPos
				invoke	_PaintOneBitmap, BombXPos, BombYPos, edx, 0
				push	@xNext
				pop	BombXPos
				push	@yNext
				pop	BombYPos
			.endif
		.endif

		popad
		ret
_BombMove	endp
;************************************************************************


;************************************************************************
; 保存上一次移動的坐標及坐標位圖
;------------------------------------------------------------------------
_SaveStep	proc	x1, y1, x2, y2

		pushad
		mov	eax, BackLength

		.if	eax == BackStep
			mov	esi, offset BackBuffer
			mov	edi, esi
			add	esi, 8 * 4
			mov	ecx, 8 * ( BackStep - 1 )
			cld			; 設置內存地址位增加方式
			rep	movsd
			dec	BackLength
		.endif

		mov	esi, offset BackBuffer
		mov	eax, BackLength
		mov	ebx, 8 * 4
		mul	ebx
		add	esi, eax
		mov	eax, ManXPos
		mov	[esi], eax
		mov	eax, ManYPos
		mov	[esi + 4], eax
		mov	eax, x1
		mov	[esi + 8], eax
		mov	eax, y1
		mov	[esi + 12], eax
		invoke	_SearchMapLinePos, x1, y1
		mov	[esi + 16], edx
		mov	eax, x2
		mov	[esi + 20], eax
		mov	eax, y2
		mov	[esi + 24], eax
		invoke _SearchMapLinePos, x2, y2
		mov	[esi + 28], edx
		inc	BackLength
		popad
		ret
_SaveStep	endp
;************************************************************************


;************************************************************************
; 恢復一步Map中的地圖數據
;------------------------------------------------------------------------
_SetCoordinate	proc	x, y, @BitmapX

		pushad
		mov	esi, offset Map
		mov	eax, y
		mov	ebx, 14
		mul	ebx
		add	eax, x		; eax中保存著( x, y )在Map中的線性地址

		.if	@BitmapX == xBmBack
			mov	bl, MAP_BACK
		.elseif	@BitmapX == xBmWall
			mov	bl, MAP_WALL
		.elseif	@BitmapX == xBmRoad
			mov	bl, MAP_ROAD
		.elseif	@BitmapX == xBmBox1
			mov	bl, MAP_BOX1
		.elseif	@BitmapX == xBmBox2
			mov	bl, MAP_BOX2
		.else
			mov	bl, MAP_OBJECT
		.endif

		mov	[esi][eax], bl
		popad
		ret
_SetCoordinate	endp
;************************************************************************


;************************************************************************
; 后退一步
;------------------------------------------------------------------------
_LoadStep	proc
		local @szTemp[20] : byte

		pushad

		.if	BackLength > 0
			;----------------隱藏炸彈------------------
			xor	eax, eax
			mov	BombFlag, eax
			invoke	_SearchMapLinePos, BombXPos, BombYPos
			invoke	_PaintOneBitmap, BombXPos, BombYPos, edx, 0
			;------------------------------------------
			dec	BackLength
			mov	esi, offset BackBuffer
			mov	eax, BackLength
			mov	ebx, 8 * 4
			mul	ebx
			add	esi, eax
			invoke	_SetCoordinate, [esi + 20], [esi + 24], [esi + 28]	; 恢復地圖位圖數據
			invoke	_PaintOneBitmap, [esi + 20], [esi + 24], [esi + 28], 0	; 恢復( xNew2, yNew2 )
			invoke	_SetCoordinate, [esi + 8], [esi + 12], [esi + 16]	; 恢復地圖位圖數據
			invoke	_PaintOneBitmap, [esi + 8], [esi + 12], [esi + 16], 0	; 恢復( xNew1, yNew1 )
			mov	eax,	[esi]
			mov	ManXPos, eax
			mov	eax,	[esi + 4]
			mov	ManYPos, eax
			invoke	_PaintOneBitmap, [esi], [esi + 4], xBmMan, 0		; 恢復角色位圖
			dec	StepNumber
			
			mov	eax, [esi + 28]		; ( xNew2, yNew2 )對應的位圖數據X起始坐標
			mov	ebx, [esi + 16]		; ( xNew1, yNew1 )對應的位圖數據X起始坐標
			.if	( eax == xBmObject && ebx == xBmBox1 )
				inc	ObjectLeft	; 恢復目標數值
			.elseif	( eax != xBmObject && ebx == xBmBox2 )
				dec	ObjectLeft	; 恢復目標數值
			.endif
			
			invoke	wsprintf, addr @szTemp, addr szStep, StepNumber
			invoke	SendMessage, hWinStatus, SB_SETTEXT, 2, addr @szTemp
		.endif

		popad
		ret
_LoadStep	endp
;************************************************************************


;************************************************************************
; 將Map中的元素以二維數組的形勢表示,即由行號和列號表示,但注意行號、列號
; 是以Windows圖形中的坐標為標準,X表示列;Y表示行
;************************************************************************
_ManMove	proc	@KeyDown
		local	NewX1, NewY1, NewX2, NewY2
		local	M1 : byte, M2 : byte
		local	nPos1, nPos2
		local	szBuffer[20] : byte

		pushad
		mov	eax, ManXPos
		mov	NewX1, eax
		mov	NewX2, eax
		mov	eax, ManYPos
		mov	NewY1, eax
		mov	NewY2, eax

		mov	eax, @KeyDown
;-----------------------------------------------------------------------
;找到man所在位置的下一個位置坐標,存儲在New*中;下下一個位置坐標,存儲在New*2中
;-----------------------------------------------------------------------
		.if	eax == VK_UP
			dec	NewY1
			dec	NewY2
			dec	NewY2
		.elseif	eax == VK_DOWN
			inc	NewY1
			inc	NewY2
			inc	NewY2
		.elseif	eax == VK_LEFT
			dec	NewX1
			dec	NewX2
			dec	NewX2
		.elseif eax == VK_RIGHT
			inc	NewX1
			inc	NewX2
			inc	NewX2
		.else
			ret
		.endif

;-----------------------------------------------------------------------
		mov	esi, offset Map

; 將點( NewX1, NewY2 )在Map中對應的線性邏輯地址中的數據存儲在M1中
		invoke	_SearchMapLinePos, NewX1, NewY1
		mov	ebx, eax
		mov	nPos1, eax	; nPos1中存儲著man所在二維邏輯位置上的下一個位置坐標
		     			; 在Map中的線性邏輯坐標
		mov	al, [esi][ebx]
		mov	M1, al		; M1中存儲著man所在二維邏輯位置上的下一個位置坐標中對
		  			; 應的位圖索引

; 將點( NewX2, NewY2 )在Map中對應的線性邏輯地址中的數據存儲在M2中
		invoke	_SearchMapLinePos, NewX2, NewY2
		mov	ebx, eax
		mov	nPos2, eax	; nPos2中存儲著man所在二維邏輯位置上的下兩個位置坐標
		     			; 在Map中的線性邏輯坐標
		mov	al, [esi][ebx]
		mov	M2, al		; M2中存儲著man所在二維邏輯位置上的下兩個位置坐標中對
		 			; 應的位圖索引

;--------------------重新繪制角色所在坐標的背景位圖---------------------
		invoke	_SearchMapLinePos, ManXPos, ManYPos
		invoke	_PaintOneBitmap, ManXPos, ManYPos, edx, 0

		mov	al, M1

		.if	(al == MAP_ROAD || al == MAP_OBJECT )
			invoke	_SaveStep, NewX1, NewY1, NewX2, NewY2
			push	NewX1
			pop	ManXPos
			push	NewY1
			pop	ManYPos
		.elseif	al == MAP_BOX1
			mov	al, M2
 			.if	al == MAP_ROAD
				invoke	_SaveStep, NewX1, NewY1, NewX2, NewY2
				mov	ebx, nPos2
				mov	al, MAP_BOX1
				mov	[esi][ebx], al
				mov	ebx, nPos1
				mov	al, MAP_ROAD
				mov	[esi][ebx], al
				push	NewX1
				pop	ManXPos
				push	NewY1
				pop	ManYPos
			.elseif	al == MAP_OBJECT
				invoke	_SaveStep, NewX1, NewY1, NewX2, NewY2
				mov	ebx, nPos2
				mov	al, MAP_BOX2
				mov	[esi][ebx], al
				mov	ebx, nPos1
				mov	al, MAP_ROAD
				mov	[esi][ebx], al
				push	NewX1
				pop	ManXPos
				push	NewY1
				pop	ManYPos
				dec	ObjectLeft	; 剩余目標數減1
			.else
				jmp @F
      			.endif
		.elseif	al == MAP_BOX2
			mov	al, M2
			.if	al == MAP_ROAD
				invoke	_SaveStep, NewX1, NewY1, NewX2, NewY2
				mov	ebx, nPos2
				mov	al, MAP_BOX1
				mov	[esi][ebx], al
				mov	ebx, nPos1
				mov	al, MAP_OBJECT
				mov	[esi][ebx], al
				push	NewX1
				pop	ManXPos
				push	NewY1
				pop	ManYPos
				inc	ObjectLeft	; 剩余目標數加1
			.elseif al == MAP_OBJECT
				invoke	_SaveStep, NewX1, NewY1, NewX2, NewY2
 				mov	ebx, nPos2
				mov	al, MAP_BOX2
				mov	[esi][ebx], al
				mov	ebx, nPos1
				mov	al, MAP_OBJECT
				mov	[esi][ebx], al
				push	NewX1
				pop	ManXPos
				push	NewY1
				pop	ManYPos
			.else
				jmp	@F
			.endif
		.else
			jmp	@F
		.endif

;--------------------在狀態欄上刷新玩家的移動次數-----------------------
		inc	StepNumber
		invoke	wsprintf, addr szBuffer, addr szStep, StepNumber
		invoke	SendMessage, hWinStatus, SB_SETTEXT, 2, addr szBuffer

;--------------------重新繪制( NewX2, NewY2 )位圖-----------------------
		invoke	_SearchMapLinePos, NewX2, NewY2
		invoke	_PaintOneBitmap, NewX2, NewY2, edx, 0
@@:
;------------------------重新繪制角色位圖-------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人dvd| 91免费观看在线| 正在播放亚洲一区| 婷婷国产在线综合| 欧美精品第1页| 久久精品99国产精品| 91精品欧美一区二区三区综合在 | 亚洲精品一区二区三区影院| 久久福利视频一区二区| 久久影音资源网| www.综合网.com| 亚洲福利一二三区| 91精品国产综合久久久久久久久久 | 亚洲高清视频的网址| 欧美老肥妇做.爰bbww视频| 男男成人高潮片免费网站| 精品美女一区二区三区| 丁香婷婷深情五月亚洲| 亚洲一区二区三区视频在线播放| 欧美老肥妇做.爰bbww| 精品一区二区免费| 国产精品久久久一区麻豆最新章节| 91一区二区在线| 欧美bbbbb| 欧美国产丝袜视频| 91精品国产免费| 成人精品视频.| 水野朝阳av一区二区三区| 久久久五月婷婷| 欧美影院一区二区三区| 国产综合色视频| 亚洲最新在线观看| 久久久综合九色合综国产精品| jvid福利写真一区二区三区| 爽爽淫人综合网网站| 国产日韩在线不卡| 欧美精品vⅰdeose4hd| 国产成人在线视频网址| 亚洲国产精品久久不卡毛片| 国产日韩v精品一区二区| 色婷婷精品久久二区二区蜜臂av | 国产精品久久久久三级| 欧美一区二区福利视频| av在线免费不卡| 国产一区二区中文字幕| 午夜精品久久久久久久久久| 国产精品区一区二区三区| 国产精品传媒入口麻豆| 欧美挠脚心视频网站| a在线欧美一区| 国内成人免费视频| 日韩在线a电影| 一个色在线综合| 国产欧美日韩视频一区二区| 欧美午夜精品免费| www.一区二区| 粉嫩在线一区二区三区视频| 日韩精品午夜视频| 亚洲视频一区二区在线观看| 欧美精品一区二区三| 制服丝袜亚洲色图| 911精品产国品一二三产区| 91蝌蚪porny成人天涯| 国产91丝袜在线观看| 精品一区二区在线看| 青青草一区二区三区| 亚洲国产精品欧美一二99| 中文字幕一区av| 国产精品麻豆久久久| 欧美激情资源网| 日韩三级视频中文字幕| 欧美日韩精品一区二区三区蜜桃| 91九色最新地址| 在线看不卡av| 在线一区二区观看| 在线观看日产精品| 色噜噜狠狠成人网p站| 色婷婷久久久久swag精品| 色天天综合色天天久久| 色综合久久久久久久| 91久久线看在观草草青青| 色爱区综合激月婷婷| 91蜜桃传媒精品久久久一区二区| 99久久综合精品| 色综合久久中文字幕| 一本大道久久a久久精二百| 一本色道综合亚洲| 欧美伊人久久久久久午夜久久久久| 色视频成人在线观看免| 欧美日韩一区二区三区在线看| 欧美人成免费网站| 日韩视频在线你懂得| 久久女同性恋中文字幕| 欧美精彩视频一区二区三区| 国产精品久久久久久久久久免费看| 中文字幕中文字幕一区二区| 亚洲男人的天堂av| 狠狠色丁香九九婷婷综合五月| 国产在线播放一区二区三区| 大尺度一区二区| 日本道色综合久久| 日韩欧美激情四射| 国产亲近乱来精品视频| 伊人夜夜躁av伊人久久| 日韩黄色在线观看| 国产一二精品视频| 色偷偷成人一区二区三区91| 91精品一区二区三区在线观看| 欧美电影精品一区二区| 欧美国产丝袜视频| 亚洲一区二区美女| 久久99热狠狠色一区二区| 国产99一区视频免费| 91国偷自产一区二区开放时间 | 久久久久久久久伊人| 久久亚洲影视婷婷| 中文字幕亚洲不卡| 日韩福利电影在线| 成人黄色电影在线 | 成人app网站| 91精品在线一区二区| 国产精品天天看| 日本不卡一区二区三区高清视频| 国产成a人亚洲精品| 欧美视频一区二区三区| 国产色综合一区| 五月婷婷另类国产| 成人性生交大片免费看在线播放| 欧美日韩国产大片| 国产欧美精品一区二区三区四区| 亚洲成人福利片| 成人ar影院免费观看视频| 精品免费日韩av| 亚洲第一激情av| 一本大道久久a久久综合| 国产清纯在线一区二区www| 午夜成人免费视频| 色综合天天狠狠| 亚洲国产精品成人久久综合一区| 日韩在线观看一区二区| 91久久精品一区二区| 国产精品人成在线观看免费| 蜜桃av一区二区在线观看| 91精品福利视频| 亚洲人吸女人奶水| 国产精品一区二区男女羞羞无遮挡| 欧美日韩一区精品| 亚洲制服丝袜av| 99re6这里只有精品视频在线观看| 欧美变态凌虐bdsm| 日韩二区三区四区| 欧美久久久一区| 亚洲国产aⅴ成人精品无吗| 91在线一区二区三区| 久久久99久久| 经典三级在线一区| 日韩一级大片在线观看| 亚洲制服丝袜在线| 91黄色在线观看| 亚洲黄网站在线观看| 99久久精品情趣| 国产精品色噜噜| 成人久久视频在线观看| 日韩欧美专区在线| 美日韩黄色大片| 国产日韩欧美精品在线| 国产精一区二区三区| 久久日韩精品一区二区五区| 久久国产精品区| 26uuu国产在线精品一区二区| 麻豆成人免费电影| 精品国内二区三区| 国产老肥熟一区二区三区| 国产人妖乱国产精品人妖| 国产一区二区三区四| 久久九九99视频| 国产69精品久久777的优势| 精品国产三级a在线观看| 日韩高清一区二区| 精品国产成人系列| 久久精品国产99国产精品| 久久久久国产成人精品亚洲午夜| 国产精品综合在线视频| 精品欧美黑人一区二区三区| 激情文学综合网| 欧美激情在线一区二区| 菠萝蜜视频在线观看一区| 伊人色综合久久天天| 欧美日韩精品一二三区| 麻豆久久久久久久| 日本一区二区在线不卡| 一本大道久久a久久综合| 丝袜亚洲另类丝袜在线| 精品国一区二区三区| 波多野结衣亚洲一区| 亚洲成a人v欧美综合天堂| 日韩欧美一区电影| 成人av网站在线观看免费| 一级特黄大欧美久久久| 欧美videossexotv100|