?? lixner.asm
字號:
ret
WndMainProc endp
_Init proc
local @hDC
invoke SendMessage,hWinMain,WM_SETTEXT,0,offset szClassName
invoke LoadBitmap,hInstance,IDB_0 ;裝入背景圖片
mov hBmpBack,eax
invoke GetDC,hWinMain
mov @hDC,eax
invoke CreateCompatibleDC,@hDC ;建立背景及數字 DC
mov hDcBack,eax
invoke ReleaseDC,hWinMain,@hDC
invoke SelectObject,hDcBack,hBmpBack
invoke _CenterWindow,hWinMain
ret
_Init endp
;********************************************************************
_Quit proc
local @stWindow:RECT
invoke DestroyMenu,hMenu
invoke DeleteDC,hDcBack
invoke DeleteObject,hBmpBack
invoke DestroyWindow,hWinMain
invoke PostQuitMessage,NULL
ret
_Quit endp
;********************************************************************
_paint proc
LOCAL i:DWORD
LOCAL j:DWORD
mov hmyDc,eax
push ebx
invoke BitBlt,hmyDc,0,0,230,280,hDcBack,200,0,SRCCOPY
xor edx,edx
xor ebx,ebx
@1:
xor ecx,ecx
@2:
lea eax,mymap
add eax,ecx
mov dl,BYTE ptr [eax+ebx*4]
push ecx
mov eax,50d
mul cl
mov i,eax
mov eax,50d
mul bl
mov j,eax
add i,15d
add j,15d
.if dl==01h
invoke BitBlt,hmyDc,i,j,100,100,hDcBack,50,0,SRCCOPY
.elseif dl == 02h
invoke BitBlt,hmyDc,i,j,50,100,hDcBack,0,0,SRCCOPY
.elseif dl == 03h
invoke BitBlt,hmyDc,i,j,50,100,hDcBack,150,0,SRCCOPY
.elseif dl == 04h
invoke BitBlt,hmyDc,i,j,50,100,hDcBack,0,100,SRCCOPY
.elseif dl == 05h
invoke BitBlt,hmyDc,i,j,50,100,hDcBack,150,100,SRCCOPY
.elseif dl == 06h
invoke BitBlt,hmyDc,i,j,100,50,hDcBack,50,100,SRCCOPY
.elseif dl == 07h
invoke BitBlt,hmyDc,i,j,50,50,hDcBack,0,200,SRCCOPY
.elseif dl == 08h
invoke BitBlt,hmyDc,i,j,50,50,hDcBack,0,200,SRCCOPY
.elseif dl == 09h
invoke BitBlt,hmyDc,i,j,50,50,hDcBack,0,200,SRCCOPY
.elseif dl == 00h
invoke BitBlt,hmyDc,i,j,50,50,hDcBack,0,200,SRCCOPY
.endif
pop ecx
@3:
inc ecx
cmp ecx,04h
jnz @2
inc ebx
cmp ebx,05h
jnz @1
pop ebx
ret
_paint endp
;********************************************************************
;********************************************************************
;********************************************************************
_formmousedown proc
;int 3
movzx ecx,y
movzx ebx,x
.if BYTE ptr [mymap+ebx*4+ecx]==0ffh
.if x>00h && y>00h && BYTE ptr [mymap+ebx*4+ecx-05h]==01h
dec cl
dec bl
.elseif x>00h && BYTE ptr [mymap+ebx*4+ecx-01h]==01h || \
BYTE ptr [mymap+ebx*4+ecx-01h]==06h
dec cl
.elseif y>00h && BYTE ptr [mymap+ebx*4+ecx-04h]==01h || \
BYTE ptr [mymap+ebx*4+ecx-04h]==02h || \
BYTE ptr [mymap+ebx*4+ecx-04h]==03h || \
BYTE ptr [mymap+ebx*4+ecx-04h]==04h || \
BYTE ptr [mymap+ebx*4+ecx-04h]==05h
dec bl
.endif
.endif
mov oldy,cl
mov oldx,bl
;/////////////////////////
movzx edx,BYTE ptr [mymap+ebx*4+ecx]
.if dl==01h ;曹操
.if oldy<02h && BYTE ptr [mymap+ebx*4+ecx+2]==088h \ ;右
&& BYTE ptr [mymap+ebx*4+ecx+6]==088h
mov BYTE ptr [mygood],01h
.endif
.if oldx>00h && BYTE ptr [mymap+ebx*4+ecx-4]==088h \ ;上
&& BYTE ptr [mymap+ebx*4+ecx-3]==088h
mov BYTE ptr [mygood+01h],01h
.endif
.if oldy>00h && BYTE ptr [mymap+ebx*4+ecx-1]==088h \ ;左
&& BYTE ptr [mymap+ebx*4+ecx+3]==088h
mov BYTE ptr [mygood+02h],01h
.endif
.if oldx<04h && BYTE ptr [mymap+ebx*4+ecx+8]==088h \ ;下
&& BYTE ptr [mymap+ebx*4+ecx+9]==088h
mov BYTE ptr [mygood+03h],01h
.endif
.elseif dl==02h || dl==03h || \
dl==04h || dl==05h
.if oldy<03h && BYTE ptr [mymap+ebx*4+ecx+1]==088h \ ;右
&& BYTE ptr [mymap+ebx*4+ecx+5]==088h
mov BYTE ptr [mygood],01h
.endif
.if oldx>00h && BYTE ptr [mymap+ebx*4+ecx-4]==088h ;上
mov BYTE ptr [mygood+01h],01h
.endif
.if oldy>00h && BYTE ptr [mymap+ebx*4+ecx-1]==088h \ ;左
&& BYTE ptr [mymap+ebx*4+ecx+3]==088h
mov BYTE ptr [mygood+02h],01h
.endif
.if oldx<04h && BYTE ptr [mymap+ebx*4+ecx+8]==088h ;下
mov BYTE ptr [mygood+03h],01h
.endif
.elseif dl==06h
.if oldy<02h && BYTE ptr [mymap+ebx*4+ecx+2]==088h ;右
mov BYTE ptr [mygood],01h
.endif
.if oldx>00h && BYTE ptr [mymap+ebx*4+ecx-4]==088h \ ;上
&& BYTE ptr [mymap+ebx*4+ecx-3]==088h
mov BYTE ptr [mygood+01h],01h
.endif
.if oldy>00h && BYTE ptr [mymap+ebx*4+ecx-1]==088h ;左
mov BYTE ptr [mygood+02h],01h
.endif
.if oldx<04h && BYTE ptr [mymap+ebx*4+ecx+4]==088h \ ;下
&& BYTE ptr [mymap+ebx*4+ecx+5]==088h
mov BYTE ptr [mygood+03h],01h
.endif
.elseif dl==07h || dl==08h || \
dl==09h || dl==00h
.if oldy<03h && BYTE ptr [mymap+ebx*4+ecx+1]==088h ;右
mov BYTE ptr [mygood],01h
.endif
.if oldx>00h && BYTE ptr [mymap+ebx*4+ecx-4]==088h ;上
mov BYTE ptr [mygood+01h],01h
.endif
.if oldy>00h && BYTE ptr [mymap+ebx*4+ecx-1]==088h ;左
mov BYTE ptr [mygood+02h],01h
.endif
.if oldx<04h && BYTE ptr [mymap+ebx*4+ecx+4]==088h ;下
mov BYTE ptr [mygood+03h],01h
.endif
.endif
ret
_formmousedown endp
;********************************************************************
;********************************************************************
_formmouseup proc
;int 3
mov cl,newy
mov bl,newx
mov ax,WORD ptr [mygood+2]
.if bl>oldx && ah==01h ;右
mov BYTE ptr [myj],01h
.elseif cl<oldy && al==01h;上
mov BYTE ptr [myi],0ffh
.endif
;////////////////////////////
mov ax,WORD ptr [mygood]
.if cl>oldy && al==01h ;下
mov BYTE ptr [myi],01h
.elseif bl<oldx && ah==01h ;左
mov BYTE ptr [myj],0ffh
.endif
;////////////////////////////
.if bl==oldy && cl==oldx
jmp over
.endif
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
movzx ebx,oldx
movzx ecx,oldy
mov dl,BYTE ptr [mymap+ebx*4+ecx]
;//////////////
.if dl==01h
;int 3
mov bl,myj
mov cl,myi
add cl,bl
.if cl==0ffh
movzx ebx,oldx
movzx ecx,oldy
mov BYTE ptr [mymap+ebx*4+ecx+5],088h
.if myj==0ffh
mov BYTE ptr [mymap+ebx*4+ecx+4],088h
.elseif myi==0ffh
mov BYTE ptr [mymap+ebx*4+ecx+1],088h
.endif
.elseif cl==1h
movzx ebx,oldx
movzx ecx,oldy
mov BYTE ptr [mymap+ebx*4+ecx],088h
add bl,myi
add cl,myj
mov BYTE ptr [mymap+ebx*4+ecx],088h
.endif
movzx ebx,oldx
movzx ecx,oldy
add bl,myj
add cl,myi
mov BYTE ptr [mymap+ebx*4+ecx],dl
mov BYTE ptr [mymap+ebx*4+ecx+1],0ffh
mov BYTE ptr [mymap+ebx*4+ecx+4],0ffh
mov BYTE ptr [mymap+ebx*4+ecx+5],0ffh
.elseif dl==2h || dl==3h || dl==4h || dl==5h
movzx ebx,oldx
movzx ecx,oldy
mov BYTE ptr [mymap+ebx*4+ecx],088h
mov BYTE ptr [mymap+ebx*4+ecx+4],088h
add bl,myj
add cl,myi
mov BYTE ptr [mymap+ebx*4+ecx],dl
mov BYTE ptr [mymap+ebx*4+ecx+4],0ffh
.elseif dl==6h
movzx ebx,oldx
movzx ecx,oldy
mov BYTE ptr [mymap+ebx*4+ecx],088h
mov BYTE ptr [mymap+ebx*4+ecx+1],088h
add bl,myj
add cl,myi
mov BYTE ptr [mymap+ebx*4+ecx],dl
mov BYTE ptr [mymap+ebx*4+ecx+1],0ffh
.elseif dl==7h || dl==8h || dl==9h || dl==00h
;int 3
movzx ebx,oldx
movzx ecx,oldy
mov BYTE ptr [mymap+ebx*4+ecx],088h
add bl,myj
add cl,myi
mov BYTE ptr [mymap+ebx*4+ecx],dl
.endif
;///////////////
over:
mov DWORD ptr [mygood] ,0h
mov BYTE ptr [myj],0h
mov BYTE ptr [myi],0h
ret
_formmouseup endp
;********************************************************************
;********************************************************************
end start
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -