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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mybox.asm

?? 推箱子 win32做的!!! 本游戲是從先前Redfox的源程序修改而來(不過
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
;************************************************************************
		.386
		.model	flat, stdcall
		option	casemap : none
;************************************************************************
include		windows.inc
include		user32.inc
include		kernel32.inc
include		gdi32.inc
include		Comctl32.inc

includelib	user32.lib
includelib	kernel32.lib
includelib	gdi32.lib
includelib	Comctl32.lib

include		StoreHouse.inc	; 導(dǎo)入關(guān)卡地圖數(shù)據(jù)

;************************************************************************
; 宏定義數(shù)據(jù)
;------------------------------------------------------------------------
ICO_MAIN	equ	1000h	; 窗口圖標(biāo)ID
ICO_MSG		equ	1001h
IDM_CUR		equ	1000h	; 窗口光標(biāo)ID

IDM_MAIN	equ	1000h	; 菜單ID
IDM_REFLUSH	equ	1001h
IDM_PREV	equ	1002h
IDM_NEXT	equ	1003h
IDM_ABOUT	equ	1004h
IDM_EXIT	equ	1005h

ID_TOOLBAR	equ	1	; 工具欄ID
IDM_TOOLBAR	equ	2000h	; 工具欄圖標(biāo)位圖ID
ID_STATUSBAR	equ	2	; 狀態(tài)欄ID
DLG_MAIN	equ	3	; 消息對話框ID

BM_MAIN		equ	3000h	; 背景位圖資源ID

ID_GAMETIMER	equ	100	; 關(guān)卡計(jì)時(shí)器
ID_SHOWBOMB	equ	101	; 刷新炸彈計(jì)時(shí)器

xBmBack    	equ	0d
xBmWall    	equ	30d
xBmRoad    	equ	60d
xBmBox1    	equ	90d
xBmBox2    	equ	120d
xBmObject  	equ	150d
xBmMan     	equ	180d
xBmBomb		equ	210d

VK_B		equ	42h	; 字母"B"的掃描碼
BackStep	equ	20d	; 后退的次數(shù)

;************************************************************************
; 數(shù)據(jù)段
;------------------------------------------------------------------------
		.const
szClassName	db	'Game', 0
szCaption	db	'推箱子', 0
dwStatusWidth	dd	80, 160, 255, -1

NUM_BUTTONS	equ	6	;工具欄圖標(biāo)位圖中包含的小圖標(biāo)個(gè)數(shù)
stToolbar	equ	this byte
TBBUTTON <0, IDM_REFLUSH, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, -1>
TBBUTTON <1, IDM_PREV, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, -1>
TBBUTTON <2, IDM_NEXT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, -1>
TBBUTTON <3, IDM_ABOUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, -1>
TBBUTTON <0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0, 0, -1>
TBBUTTON <4, IDM_EXIT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0, -1>

;------------------------------------------------------------------------
		.data
szOutOfRange	db	'已超出游戲關(guān)卡范圍!', 0
szSuccessMsg	db	'您成功通過了關(guān)卡!是否繼續(xù)?', 0
szGameOver	db	'已到達(dá)最后一關(guān)', 0
FmtGate		db	'—第%d關(guān)', 0
szBomb		db	'炸彈數(shù)量 : 1', 0
szNoBomb	db	'炸彈數(shù)量 : 0', 0
szStep		db	'移動(dòng)次數(shù) : %d', 0
szGameTime	db	'    %02d:%02d:%02d', 0

;------------------------------------------------------------------------
		.data?
hInstance	dd	?	; 實(shí)例句柄
hWinMain	dd	?	; 主窗口句柄
hMenu		dd	?	; 菜單句柄
hWinToolbar	dd	?	; 工具欄句柄
hWinStatus	dd	?	; 狀態(tài)欄句柄
hBackDC		dd	?	; 背景位圖設(shè)備環(huán)境句柄
hBitmap		dd	?	; 背景位圖句柄

LocalTime	dd	?	; 當(dāng)前系統(tǒng)時(shí)間的秒數(shù)
TimeCircle	dd	?	; 時(shí)間循環(huán)周期的秒數(shù): 24 * 3600 * n
TimeFlag	dd	?	; 計(jì)時(shí)標(biāo)志位,1表示進(jìn)行及時(shí);0表示停止計(jì)時(shí)
GameHour	dd	?
GameMinute	dd	?
GameSecond	dd	?

Map		db	14d * 12d dup (?)	; 存放當(dāng)前關(guān)卡的地圖數(shù)據(jù)
ObjectLeft	dd	?	; 剩余的目標(biāo)地點(diǎn)數(shù)量
ManXPos		dd	?	; 角色的列坐標(biāo)
ManYPos		dd	?	; 角色的行坐標(biāo)
BombXPos	dd	?	; 炸彈的列坐標(biāo)
BombYPos	dd	?	; 炸彈的行坐標(biāo)
CurrentGate	dd	?	; 當(dāng)前的關(guān)卡號
BombCount	dd	?	; 炸彈的剩余數(shù)量,初始化時(shí)為1
BombFlag	dd	?	; 炸彈的存在標(biāo)志,1表示存在,0表示隱藏
StepNumber	dd	?	; 玩家移動(dòng)次數(shù)
dwCount		dd	?	; 隨機(jī)數(shù)

BackBuffer	dd	8 * BackStep dup (?)	; 回退坐標(biāo)緩沖區(qū)
BackLength	dd	?			; 當(dāng)前可回退的次數(shù)

;************************************************************************


;************************************************************************
; 代碼段
;------------------------------------------------------------------------
		.code
;************************************************************************
_Quit		proc

		invoke	DestroyWindow, hWinMain
		invoke	PostQuitMessage, NULL
		ret
_Quit		endp
;************************************************************************


;************************************************************************
; 加載位圖資源
;------------------------------------------------------------------------
_LoadRes	proc
		local @hDC	; 參考句柄

		invoke	GetDC, hWinMain
		mov	@hDC, eax
		invoke	CreateCompatibleDC, @hDC
		mov	hBackDC, eax
		invoke	LoadBitmap, hInstance, BM_MAIN
		mov	hBitmap, eax
		invoke	ReleaseDC, hWinMain, @hDC
		invoke	SelectObject, hBackDC, hBitmap
		ret
_LoadRes endp
;************************************************************************


;************************************************************************
; 釋放資源
;------------------------------------------------------------------------
_FreeRes	proc

		invoke DeleteDC, hBackDC
		invoke DeleteObject, hBitmap
		invoke KillTimer, hWinMain, ID_GAMETIMER
;		invoke KillTimer, hWinMain, ID_SHOWBOMB
		ret
_FreeRes	endp
;************************************************************************


;************************************************************************
; 設(shè)置當(dāng)前系統(tǒng)時(shí)間
;------------------------------------------------------------------------
_SetLocalTime	proc uses ebx
		local	@Hour, @Minute, @Second
		local	@stST:SYSTEMTIME
		
		invoke	GetLocalTime, addr @stST
		movzx	eax, @stST.wHour
		mov	@Hour, eax
		movzx	eax, @stST.wMinute
		mov	@Minute, eax
		movzx	eax, @stST.wSecond
		mov	@Second, eax
		mov	eax, @Hour
		mov	ebx, 60d
		mul	ebx
		add	eax, @Minute
		mul	ebx
		add	eax, @Second
		mov	LocalTime, eax
		mov	eax, 1
		mov	TimeFlag, eax	; 允許及時(shí)
		ret
_SetLocalTime	endp
;************************************************************************


;************************************************************************
; 在狀態(tài)欄中顯示游戲中當(dāng)前關(guān)卡的運(yùn)行時(shí)間
;------------------------------------------------------------------------
_SetGameTime	proc
		local	@Hour, @Minute, @Second
		local	@stST:SYSTEMTIME

		pushad

		.if	TimeFlag == 1
			invoke	GetLocalTime, addr @stST
			movzx	eax, @stST.wHour
			mov	@Hour, eax
			movzx	eax, @stST.wMinute
			mov	@Minute, eax
			movzx	eax, @stST.wSecond
			mov	@Second, eax
			mov	eax, @Hour
			mov	ebx, 60d
			mul	ebx
			add	eax, @Minute
			mul	ebx
			add	eax, @Second
			mov	ecx, eax


			.if	( ecx == LocalTime && !TimeCircle )
				inc	eax
			.elseif	( ecx < LocalTime || ( ecx == LocalTime && TimeCircle > 0 ) )
				mov	ecx, 86400d
				sub	ecx, LocalTime
				add	TimeCircle, ecx
				push	eax
				invoke	_SetLocalTime
				pop	eax
			.endif

			add	eax, TimeCircle
			sub	eax, LocalTime
			mov	edx, 0
			mov	ebx, 3600d
			div	ebx
			mov	GameHour, eax
			mov	eax, edx
			mov	edx, 0
			mov	ebx, 60d
			div	ebx
			mov	GameMinute, eax
			mov	GameSecond, edx
		.endif

		popad
		ret
_SetGameTime	endp
;************************************************************************


;************************************************************************
; 使窗口客戶區(qū)無效,使Windows向窗口過程發(fā)送WM_PAINT消息
;------------------------------------------------------------------------
_Repaint	proc
		local	@rect:RECT

		invoke	GetClientRect, hWinMain, addr @rect
		invoke	InvalidateRect, hWinMain, addr @rect, 0
		ret
_Repaint	endp
;************************************************************************


;************************************************************************
; Pos = y * 14 + x, 其中( x, y )以0為起始坐標(biāo)
; eax中存儲(chǔ)著( x, y )在Map中的線性邏輯地址
; edx中存儲(chǔ)著( x, y )在Map中線性邏輯地址對應(yīng)的位圖索引值相應(yīng)的位圖起始X坐標(biāo)
;------------------------------------------------------------------------
_SearchMapLinePos	proc	uses ebx esi, x, y

			mov	esi, offset Map
			mov	eax, y
			mov	ebx, 14d
			mul	ebx
			add	eax, x
			mov	bl, [esi][eax]

			.if	bl == MAP_BACK
				mov	edx, xBmBack
			.elseif	bl == MAP_WALL
				mov	edx, xBmWall
			.elseif bl == MAP_ROAD
				mov	edx, xBmRoad
			.elseif bl == MAP_BOX1
				mov	edx, xBmBox1
			.elseif bl == MAP_BOX2
				mov	edx, xBmBox2
			.elseif bl == MAP_OBJECT
				mov	edx, xBmObject
			.elseif bl == MAP_MAN
				mov	edx, xBmMan
			.else
				mov	edx, xBmBomb
			.endif

			ret
_SearchMapLinePos	endp
;************************************************************************


;************************************************************************
; 將"BitMapXPosition"打印到起始點(diǎn)為( xPosition, yPosition )的客戶區(qū)中
;------------------------------------------------------------------------
_PaintOneBitmap		proc	xPosition, yPosition, BitmapXPosition, @hDC
			local	x, y

			pushad
			mov	eax, xPosition	; xPosition為在Map中的列號
			mov	ebx, 30d
			mul	ebx
			mov	x, eax

			mov	eax, yPosition	; yPosition為在Map中的行號
			mov	ebx, 30d
			mul	ebx
			add	eax, 30d	; 因?yàn)楣ぞ邫谝喈嫷娇蛻魠^(qū)中,因此要畫到客戶區(qū)以下
			mov	y, eax

			.if	@hDC == 0
				invoke	GetDC, hWinMain
				mov	@hDC, eax
				invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, BitmapXPosition, 0, SRCCOPY
				invoke	ReleaseDC, hWinMain, @hDC
			.else
				invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, BitmapXPosition, 0, SRCCOPY
			.endif

			popad
			ret
_PaintOneBitmap		endp
;************************************************************************


;************************************************************************
; 重新繪制客戶區(qū)
;------------------------------------------------------------------------
_WMPaint	proc	@hDC
		local	i, j, x, y

		mov	x, 0
		mov	y, 30d
		mov	i, 1
		mov	j, 1
		mov	esi, offset Map

;--------------------------------------------------------------------------
;按照StoreHouse中相應(yīng)的位圖索引將BackBitMap中的位圖像素復(fù)制到窗口的設(shè)備環(huán)境中
;--------------------------------------------------------------------------
@@NextRol:
		mov	x, 0
		mov	j, 1

@@NextCol:
;---Calc nPos, nPos = (i-1) * 14 + (j-1)
		mov	eax, i
		dec	eax
		mov	ebx, 14d
		mul	ebx
		add	eax, j
		dec	eax
		mov	al, [esi][eax]

		.if	al == MAP_BACK
			invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, xBmBack, 0, SRCCOPY
		.elseif	al == MAP_WALL
			invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, xBmWall, 0, SRCCOPY
		.elseif	al == MAP_ROAD
			invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, xBmRoad, 0, SRCCOPY
		.elseif al == MAP_BOX1
			invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, xBmBox1, 0, SRCCOPY
		.elseif al == MAP_BOX2
			invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, xBmBox2, 0, SRCCOPY
		.elseif al == MAP_OBJECT
			invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, xBmObject, 0, SRCCOPY
		.else
			invoke	BitBlt, @hDC, x, y, 30, 30, hBackDC, xBmMan, 0, SRCCOPY
		.endif

		add	x, 30d
		inc	j
		cmp	j, 15d
		jb	@@NextCol

		inc	i
		add	y, 30d
		cmp	i, 13
		jb	@@NextRol

;------------------------------------------------------------------------
; 按照man在Map中的坐標(biāo),將他對應(yīng)的像素復(fù)制到相應(yīng)位置
;------------------------------------------------------------------------
		invoke	_PaintOneBitmap, ManXPos, ManYPos, xBmMan, @hDC
		ret
_WMPaint	endp
;************************************************************************


;************************************************************************
; 選擇參數(shù)@Gate指定的關(guān)卡
;------------------------------------------------------------------------
_SelectGate	proc	@Gate
		local	szTmp1[10] : byte
		local	szTmp2[20] : byte

		mov	eax, @Gate

		.if	( eax > MAX_GATES || eax < 1 )
			xor	eax, eax
			mov	TimeFlag, eax
			invoke	MessageBox, hWinMain, addr szOutOfRange, \
				addr szCaption, MB_ICONINFORMATION or MB_OKCANCEL

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合九色综合欧美98| 亚瑟在线精品视频| 国产日韩av一区二区| 精品粉嫩aⅴ一区二区三区四区| 欧美老女人第四色| 在线播放一区二区三区| 欧美视频一区在线观看| 欧美色手机在线观看| 欧美在线观看视频一区二区 | 亚洲国产综合视频在线观看| 亚洲精品国产视频| 亚洲午夜视频在线观看| 亚洲一区二区四区蜜桃| 婷婷久久综合九色综合绿巨人| 午夜成人在线视频| 男人操女人的视频在线观看欧美| 免费在线观看精品| 国产黑丝在线一区二区三区| 激情综合五月天| 成人免费视频一区二区| 91在线国产观看| 欧美日韩在线三级| 欧美一级生活片| 久久先锋影音av| 一区视频在线播放| 五月天国产精品| 久久草av在线| 成人99免费视频| 欧美中文字幕久久| 精品国产百合女同互慰| 国产精品入口麻豆原神| 亚洲一区二区三区四区在线观看| 蜜臀精品一区二区三区在线观看 | 91免费观看在线| 欧美日本一道本在线视频| 精品久久一二三区| 国产精品国产a级| 五月婷婷激情综合网| 国产一区二区在线看| 91一区二区在线| 在线播放欧美女士性生活| 国产肉丝袜一区二区| 一区二区三区日韩在线观看| 99精品视频一区| 欧美一区二区三区白人| 亚洲国产精品99久久久久久久久| 亚洲一区免费在线观看| 国产精品一区三区| 欧美性受极品xxxx喷水| 久久久99久久精品欧美| 樱桃国产成人精品视频| 国产在线看一区| 欧美在线啊v一区| 久久综合视频网| 亚洲成人7777| 不卡一区中文字幕| 精品第一国产综合精品aⅴ| 亚洲精品大片www| 国产成人免费视频一区| 在线不卡中文字幕| 亚洲精品国产a久久久久久| 韩国视频一区二区| 欧美精品第1页| 亚洲图片另类小说| 国产成人午夜视频| 欧美一区三区二区| 亚洲精品视频免费看| 国产激情视频一区二区在线观看| 欧美人成免费网站| 亚洲天堂久久久久久久| 国产成人在线网站| 日韩三级av在线播放| 亚洲一二三区不卡| 99久久99久久综合| 国产农村妇女毛片精品久久麻豆| 日本午夜一区二区| 欧美天堂亚洲电影院在线播放| 欧美国产精品一区| 国产精品一级二级三级| 日韩一级欧美一级| 丝袜诱惑制服诱惑色一区在线观看| 成人高清视频在线观看| 久久精品一区二区三区av| 男人的天堂亚洲一区| 欧美精品久久一区| 亚洲成人三级小说| 欧洲一区二区三区在线| 亚洲情趣在线观看| 日韩限制级电影在线观看| 亚洲午夜精品17c| 91高清视频免费看| 亚洲精品写真福利| 91美女片黄在线观看| 国产精品二三区| 成人动漫精品一区二区| 中文字幕第一页久久| 国产成人免费在线观看不卡| 2022国产精品视频| 麻豆视频一区二区| 欧美变态口味重另类| 久久99国产乱子伦精品免费| 日韩欧美中文字幕制服| 久久精品国产99久久6| 日韩精品一区二区三区swag| 久久精品99久久久| 精品88久久久久88久久久| 久久99蜜桃精品| 亚洲精品在线网站| 国产美女精品在线| 久久精品夜色噜噜亚洲aⅴ| 国产精品456露脸| 国产性天天综合网| 成人h动漫精品一区二| 亚洲三级在线看| 91国内精品野花午夜精品| 午夜精品久久久久影视| 欧美日韩电影一区| 久久99精品国产91久久来源| 国产日本欧美一区二区| 成人午夜大片免费观看| 亚洲美女视频在线观看| 欧美人xxxx| 精品无人码麻豆乱码1区2区| 国产欧美视频在线观看| 91香蕉视频污| 亚洲高清中文字幕| wwwwxxxxx欧美| 成人福利电影精品一区二区在线观看| 亚洲人123区| 欧美一区二区三区四区视频| 国产一区二区精品在线观看| 中文字幕一区二区三中文字幕| 精品视频1区2区| 久久99精品久久久久久久久久久久| 欧美韩国日本不卡| 欧美少妇xxx| 国模大尺度一区二区三区| 最新国产成人在线观看| 欧美精品一二三| 国产老女人精品毛片久久| 亚洲精品久久嫩草网站秘色| 日韩一区二区三区av| a级高清视频欧美日韩| 日韩有码一区二区三区| 国产日韩欧美精品一区| 欧美色图激情小说| 国产精品自拍三区| 亚洲一区二区三区四区在线观看 | 欧美一区二区私人影院日本| 国产一区二区三区久久久| 亚洲毛片av在线| 日韩久久久精品| 91香蕉视频mp4| 久久99精品国产麻豆不卡| 1024精品合集| 精品国精品自拍自在线| 97精品久久久午夜一区二区三区| 秋霞电影一区二区| 综合网在线视频| 精品sm在线观看| 精品视频资源站| 99麻豆久久久国产精品免费| 老司机精品视频导航| 亚洲一区二区三区在线看| 亚洲国产高清不卡| 欧美成人欧美edvon| 欧美日韩黄视频| www.久久久久久久久| 韩国v欧美v亚洲v日本v| 天天操天天干天天综合网| 国产精品久久久久久久蜜臀| 精品国产免费人成在线观看| 日本道免费精品一区二区三区| 国产精品一品二品| 久久国产尿小便嘘嘘尿| 亚洲二区在线观看| 中文字幕中文字幕中文字幕亚洲无线| 欧美大片一区二区三区| 精品视频全国免费看| 91色.com| 99精品久久只有精品| 国产寡妇亲子伦一区二区| 久久99精品久久久久久动态图| 午夜精品久久久久久久久久| 亚洲人成网站影音先锋播放| 国产精品欧美一区喷水| 国产日韩欧美在线一区| 久久久久国产精品厨房| 精品国产凹凸成av人导航| 日韩精品中文字幕一区二区三区| 欧美男女性生活在线直播观看| 色一情一乱一乱一91av| 99久久亚洲一区二区三区青草| 国产 欧美在线| 国产精品中文字幕日韩精品| 国产精品中文有码| 国产精品一级黄| 丁香天五香天堂综合| 国产福利电影一区二区三区| 国产一区二区三区|