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

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

?? blt.frm

?? 推箱子的游戲VB源代碼.適合于有一定VB經驗的人閱讀參考
?? FRM
?? 第 1 頁 / 共 2 頁
字號:
VERSION 5.00
Begin VB.Form frmBlt 
   AutoRedraw      =   -1  'True
   Caption         =   "Menace"
   ClientHeight    =   2055
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   3030
   KeyPreview      =   -1  'True
   LinkTopic       =   "Form1"
   MousePointer    =   99  'Custom
   ScaleHeight     =   2055
   ScaleWidth      =   3030
   StartUpPosition =   2  'CenterScreen
   Visible         =   0   'False
   Begin VB.Timer Timer1 
      Enabled         =   0   'False
      Interval        =   100
      Left            =   1275
      Top             =   1425
   End
End
Attribute VB_Name = "frmBlt"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
' Transparent Blit
Option Compare Text
Option Explicit

Dim u As Long

Dim blnend As Boolean

' Win32
Const IMAGE_BITMAP = 0
Const LR_LOADFROMFILE = &H10
Const LR_CREATEDIBSECTION = &H2000
Const SRCCOPY = &HCC0020
Private Type BITMAP
        bmType          As Long
        bmWidth         As Long
        bmHeight        As Long
        bmWidthBytes    As Long
        bmPlanes        As Integer
        bmBitsPixel     As Integer
        bmBits          As Long
End Type

' GDI32
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
' USER32
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long
Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Private Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
Const ResolutionX = 640     ' Width for the display mode
Const ResolutionY = 480     ' Height for the display mode

Dim dd As DirectDraw2               ' DirectDraw object
Dim ddsdFront As DDSURFACEDESC      ' Front surface description
Dim ddsFront As DirectDrawSurface2  ' Front buffer
Dim ddsBack As DirectDrawSurface2   ' Back buffer

Dim aDDS As DirectDrawSurface2      ' Images to blit
Dim tDDS As DirectDrawSurface2      ' tiles to blit

Dim ddCaps As DDSCAPS               ' Capabilities for search

Dim fx As DDBLTFX

'hold the sprites
Dim spnx%(40), spny%(40), spnw%(40), spnh%(40), spnox%(40), spnoy%(40)

Dim mode%      'mode% is the current behaviour
Dim anim%      'amount through the given behaviour animation
Dim animshift% 'flag to indicate if blocks should be pushed during anim

'dim sprite behaviour guff
Dim bname$(30)  'name of behaviour (arbitrary 30 behaviour limit)
Dim bcells%(30) 'number of cells in the behaviour
Dim bchar%(30, 30) '30 behaviours, with max 30 cells in the anim
Dim bxo%(30, 30)   'x offset
Dim byo%(30, 30)   'y offset

'now the block array x and y in pixels
Dim blockx%(30)    'up to 30 blocks on a map
Dim blocky%(30)
Dim blockcell%(30)
Dim blockmode%(30) '0=none, 1=left, 2=right, 3=fall
Dim blockcount%    'number of blocks on this level
            
Dim level%

'hold the map
Dim map(40, 6) As Integer '40 wide, 6 high
Dim mapl%, mapv% 'left margin



' Loads a bitmap in a DirectDraw surface
Private Function CreateDDSFromBitmap(dd As DirectDraw2, ByVal strFile As String) As DirectDrawSurface2
    Dim hbm As Long                 ' Handle on bitmap
    Dim bm As BITMAP                ' Bitmap header
    Dim ddsd As DDSURFACEDESC       ' Surface description
    Dim dds As DirectDrawSurface2   ' Created surface
    Dim hdcImage As Long            ' Handle on image
    Dim mhdc As Long                ' Handle on surface context
    Dim clr As Long                 'hold the colour top left to be made transparent
    ' Load bitmap
    hbm = LoadImage(ByVal 0&, strFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE Or LR_CREATEDIBSECTION)
    ' Get bitmap info
    GetObject hbm, Len(bm), bm
    ' Fill surface description
    With ddsd
        .dwSize = Len(ddsd)
        .dwFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
        .DDSCAPS.dwCaps = DDSCAPS_OFFSCREENPLAIN
        .dwWidth = bm.bmWidth
        .dwHeight = bm.bmHeight
    End With
    ' Create surface
    dd.CreateSurface ddsd, dds, Nothing
    ' Create memory device
    hdcImage = CreateCompatibleDC(ByVal 0&)
    ' Select the bitmap in this memory device
    SelectObject hdcImage, hbm
    ' Restore the surface
    dds.Restore
    ' Get the surface's DC
    dds.GetDC mhdc
    ' Copy from the memory device to the DirectDrawSurface
    StretchBlt mhdc, 0, 0, ddsd.dwWidth, ddsd.dwHeight, hdcImage, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY
    'get the top left colour
    clr = GetPixel(mhdc, 0, 0)
    ' Release the surface's DC
    dds.ReleaseDC mhdc
    ' Release the memory device and the bitmap
    DeleteDC hdcImage
    DeleteObject hbm
    
    'make surface transparent
    Dim mhddck As DDCOLORKEY
    mhddck.dwColorSpaceLowValue = clr 'really works only for 24 bit colour
    mhddck.dwColorSpaceHighValue = clr 'but as sprites have black is all 0 at any rate
    dds.SetColorKey DDCKEY_SRCBLT, mhddck
    
    ' Returns the new surface
    Set CreateDDSFromBitmap = dds
End Function


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If mode% = 1 Or mode% = 2 Then 'walking left or right
    'shift = 1 then push, = 2 then jump
    Select Case KeyCode
        Case vbKeyR
            'restart  the level
            loadlevel level%
        Case vbKeyControl
            Select Case Shift
            Case 2
                If mode% = 1 Then mode% = 5 Else mode% = 7 'jump
                anim% = 0 'amount through the jump
                animshift% = 0 'don't shift blocks
            Case 3 'jump & shift
                If mode% = 1 Then mode% = 5 Else mode% = 7 'jump
                anim% = 0 'amount through the jump
                animshift% = 1 'shift blocks
            End Select
        Case vbKeyEscape
            blnend = True
        Case vbKeyLeft
            Select Case Shift
            Case 0 'walk normally
                mode% = 1 'walkleft
                anim% = anim% + 1 'walk
                If anim% > 7 Then anim% = 1
                If map((mapl% + 294) \ 60, mapv% \ 60) = 0 Then
                    mapl% = mapl% - 6
                End If
                If mapl% < -300 Then mapl% = -300
                If mapl% Mod 60 = 0 Then
                    If map((mapl% + 300) \ 60, (mapv% + 10) \ 60) = 0 Then
                        mode% = 3 'fallleft
                    End If
                End If
            Case 1 'shift box
                mode% = 9 'shift left
                anim% = 0 'amount through the jump
                animshift% = 1 'shift blocks
            End Select
        Case vbKeyRight
            Select Case Shift
            Case 0 'walk normally
                mode% = 2 'walkright
                anim% = anim% + 1 'walk
                If anim% > 7 Then anim% = 1
                If map((mapl% + 365) \ 60, mapv% \ 60) = 0 Then
                    mapl% = mapl% + 6
                End If
                If mapl% > 2400 Then mapl% = 2400
                If mapl% Mod 60 = 0 Then
                    If map((mapl% + 300) \ 60, (mapv% + 10) \ 60) = 0 Then
                        mode% = 4 'fall
                    End If
                End If
            Case 1 'shift box
                mode% = 10 'shift right
                anim% = 0 'amount through the jump
                animshift% = 1 'shift blocks
            End Select
    End Select
End If
End Sub

Private Sub Form_Load()
    Dim a%, g$, bi%
    mapv% = 0
    mode% = 3 'fallleft
    anim% = 1 'start of animation
    
    ShowCursor 0
    ' Create the DirectDraw object
    DirectDrawCreate ByVal 0&, dd, Nothing
    ' This app is full screen and will change the display mode
    dd.SetCooperativeLevel Me.hwnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN
    ' Set the display mode
    dd.SetDisplayMode ResolutionX, ResolutionY, 8, 0, 0
    ' Load images (in a real app don't load the surrounding empty space !)
    Set aDDS = CreateDDSFromBitmap(dd, App.Path & "\menace.BMP")
    Set tDDS = CreateDDSFromBitmap(dd, App.Path & "\tiles.BMP")
    
    ' Fill front buffer description structure...
    With ddsdFront
        ' Structure size
        .dwSize = Len(ddsdFront)
        ' Use DDSD_CAPS and BackBufferCount
        .dwFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT
        ' Primary, flipable surface
        .DDSCAPS.dwCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX Or DDSCAPS_SYSTEMMEMORY
        ' One back buffer (you can try 2)
        .dwBackBufferCount = 1
    End With
    ' Create front buffer
    dd.CreateSurface ddsdFront, ddsFront, Nothing
    
    ' Retrieve the back buffer object
    ddCaps.dwCaps = DDSCAPS_BACKBUFFER
    ddsFront.GetAttachedSurface ddCaps, ddsBack
    
  
    'load up the sprites
    Open App.Path & "\menace.spr" For Random As #1 Len = 2
    For a% = 0 To 39
        Get #1, a% * 6 + 1, spnox%(a% + 1)
        Get #1, a% * 6 + 2, spnoy%(a% + 1)
        Get #1, a% * 6 + 3, spnx%(a% + 1)
        Get #1, a% * 6 + 4, spny%(a% + 1)
        Get #1, a% * 6 + 5, spnw%(a% + 1)
        Get #1, a% * 6 + 6, spnh%(a% + 1)
    Next
    Close #1
    
    
    'load up sprite behaviours
    Open App.Path & "\spritebe.txt" For Input As #1
    Do
        Line Input #1, g$
        If left$(g$, 1) = "*" Then
            'record follows
            Input #1, bi%
            Input #1, bname$(bi%), bcells%(bi%)
            For a% = 1 To bcells%(bi%)
                Input #1, bchar%(bi%, a%), bxo%(bi%, a%), byo%(bi%, a%)
            Next
        End If
    Loop Until EOF(1)
    Close #1
    
    'load the map level
    level% = 1
    loadlevel level%
   
    
    Timer1.Enabled = -1
End Sub

' Draw next frame
Private Sub DrawNextFrame()
    Dim a%, b%, xx%, ofx%, sp%, cbx%, cby%
    Dim t As RECT
    'On Error Resume Next
    ' Clear the back buffer
    With fx
        .dwSize = Len(fx)
        .dwFillColor = RGB(0, 0, 0)
    End With
    t.top = 0
    t.left = 0
    t.bottom = ResolutionY
    t.Right = ResolutionX
    ddsBack.Blt t, Nothing, t, DDBLT_COLORFILL, fx
      
    'draw the map
    ofx% = mapl% \ 60
    For a% = 0 To 11
        If a% + ofx% >= 0 And a% + ofx% <= 39 Then
            For b% = 6 To 1 Step -1
                drawblock map(a% + ofx%, b% - 1), a% * 60 - (mapl% Mod 60), b% * 60
            Next
        End If
    Next
    
    'move moveable blocks
    For a% = 1 To 30
        If blockmode%(a%) > 0 Then 'something to do
            'yeah I know, cheap and nasty,
            'moving blocks go on top of the map... oh well
            drawblock blockcell%(a%), (blockx%(a%) - mapl%) - 300, blocky%(a%)
            Select Case blockmode%(a%)
                Case 1, 2 'left,right
                    If blockmode%(a%) = 1 Then blockx%(a%) = blockx%(a%) - 6 Else blockx%(a%) = blockx%(a%) + 6
                    If blockx%(a%) Mod 60 = 0 Then
                        'now check above old spot!
                        If blockmode%(a%) = 1 Then cbx% = (blockx%(a%) - 235) \ 60 Else cbx% = (blockx%(a%) - 355) \ 60
                        cby% = (blocky%(a%) - 10) \ 60
                        blockmode%(a%) = 3 'fall
                        checkabove cbx%, cby%
                    End If
                Case 3 'fall till hit something
                    If map((blockx%(a%) - 300) \ 60, (blocky%(a%) + 10) \ 60) = 0 Then
                        'keep falling
                        blocky%(a%) = blocky%(a%) + 10

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色综合久久| 一区二区三区精品| 另类的小说在线视频另类成人小视频在线 | 天天av天天翘天天综合网色鬼国产| 国产精品羞羞答答xxdd| 欧美精品一二三区| 国产欧美日韩精品a在线观看| 国产一区二区三区最好精华液 | 在线看国产日韩| 午夜在线成人av| 久久久久免费观看| 成人一级片在线观看| 亚洲在线观看免费视频| 7777精品伊人久久久大香线蕉完整版 | 国产亚洲精品超碰| 精品久久久久av影院| 国产福利一区二区三区视频在线| 久久久不卡网国产精品二区| 色又黄又爽网站www久久| 丝袜脚交一区二区| 久久综合给合久久狠狠狠97色69| 97久久精品人人澡人人爽| 精品一区二区三区日韩| 久久久另类综合| 日本在线不卡视频一二三区| 国产色爱av资源综合区| 欧美一区二区三区人| 成人午夜精品在线| 经典三级在线一区| 日本在线不卡视频| 蜜乳av一区二区| 日本最新不卡在线| 久久精品国产亚洲一区二区三区| 亚洲乱码国产乱码精品精的特点 | 国产精品美女www爽爽爽| 日本一区二区三区电影| 在线欧美小视频| 日韩中文字幕区一区有砖一区| 国产精品初高中害羞小美女文| 亚洲狠狠爱一区二区三区| 久久久精品国产免费观看同学| 精品国产不卡一区二区三区| 欧美日韩国产成人在线免费| 欧美日韩久久久一区| 91超碰这里只有精品国产| 欧美久久久久久久久| 日产国产欧美视频一区精品| 天天综合网 天天综合色| 麻豆精品视频在线观看视频| 首页综合国产亚洲丝袜| 奇米精品一区二区三区四区| 日韩电影免费一区| 成人激情免费网站| 91精品黄色片免费大全| 精品捆绑美女sm三区| 亚洲另类色综合网站| 免费xxxx性欧美18vr| 成人av资源站| 91精品婷婷国产综合久久| 国产精品国产三级国产aⅴ入口| 亚洲国产欧美日韩另类综合| 国产精品白丝av| 欧美日韩免费一区二区三区视频| 精品国产污污免费网站入口| 亚洲色图制服诱惑| 欧美精品1区2区| ㊣最新国产の精品bt伙计久久| 日韩精品亚洲一区二区三区免费| 99re热视频精品| 中文字幕精品在线不卡| 日本aⅴ亚洲精品中文乱码| 成人精品国产福利| 日韩欧美一区二区在线视频| 夜夜爽夜夜爽精品视频| 中文字幕日韩欧美一区二区三区| 精品综合免费视频观看| 99久久久久免费精品国产| 国产乱码精品一品二品| 91精品国产麻豆| 五月激情六月综合| 欧美精品在线观看一区二区| 亚洲男同1069视频| 色噜噜狠狠色综合欧洲selulu| 18涩涩午夜精品.www| 成人精品国产免费网站| 337p粉嫩大胆噜噜噜噜噜91av| 日韩专区一卡二卡| 久久久久久久久久电影| 99r国产精品| 性做久久久久久久免费看| 日韩欧美一级二级| 国产91富婆露脸刺激对白| 中文字幕在线播放不卡一区| 欧美美女直播网站| 国产永久精品大片wwwapp| 国产蜜臀av在线一区二区三区| 丁香婷婷综合五月| 婷婷开心久久网| 国产精品激情偷乱一区二区∴| 日本韩国一区二区三区| 久久成人免费网| 一区二区三区成人在线视频| 欧美一区二区三区在线观看| 国产成人在线观看免费网站| 亚洲国产精品自拍| 国产精品传媒在线| 久久日韩精品一区二区五区| www.欧美亚洲| 国产一区二区三区四区五区美女| 夜夜嗨av一区二区三区四季av| 久久精品人人做人人综合| 欧美一区二区在线观看| av电影在线观看完整版一区二区| 免费三级欧美电影| 国产精品亚洲第一| 日本不卡免费在线视频| 亚洲综合在线视频| 一区二区三区鲁丝不卡| 国产精品热久久久久夜色精品三区 | 一区二区三区蜜桃| 亚洲激情网站免费观看| 亚洲欧美中日韩| 欧美激情在线看| 中文字幕精品综合| 亚洲丝袜美腿综合| 亚洲一区在线视频观看| 亚洲精品视频在线观看免费| 91麻豆精东视频| 欧美亚洲综合另类| 欧美一区二区在线看| 欧美va亚洲va国产综合| 2020国产成人综合网| 国产精品白丝在线| 青青草国产精品亚洲专区无| 亚洲精品免费视频| 蜜臀va亚洲va欧美va天堂| 日韩和欧美一区二区| 国产精品456| 欧美日韩精品综合在线| 精品福利一区二区三区| 亚洲欧美日韩成人高清在线一区| 亚洲妇女屁股眼交7| 久久久久久久久伊人| 一区二区三区在线影院| 美腿丝袜在线亚洲一区| 国内精品视频666| 在线免费精品视频| 国产精品乱子久久久久| 免费美女久久99| 欧美日韩国产电影| 亚洲自拍偷拍麻豆| 99国产精品久| 国产欧美日韩三级| 国产成人三级在线观看| 欧美影片第一页| 亚洲欧美日韩人成在线播放| 精品亚洲aⅴ乱码一区二区三区| 欧美午夜精品一区二区三区| 亚洲精选视频在线| www.在线欧美| 国产精品电影一区二区三区| 成人免费va视频| 欧美国产视频在线| 成人污视频在线观看| 综合色中文字幕| 色哟哟一区二区| 欧美乱熟臀69xxxxxx| 久久久久免费观看| 国产剧情一区二区三区| 91精品福利在线一区二区三区| 尤物在线观看一区| 色婷婷一区二区| 日韩二区三区在线观看| 欧美变态tickling挠脚心| 国产aⅴ综合色| 亚洲精品高清在线观看| 欧美日韩不卡在线| 国产乱人伦偷精品视频免下载| 国产女主播一区| 欧美日韩午夜影院| 激情综合亚洲精品| 一区二区三区四区国产精品| 日韩一区二区在线看| 99re在线精品| 精品午夜一区二区三区在线观看| 中文字幕一区二区在线观看| 欧美一区二区三区视频在线观看| 精品亚洲porn| 亚洲国产cao| 一区二区在线观看视频在线观看| 欧美日本精品一区二区三区| 不卡高清视频专区| 久久99国产精品麻豆| 夜夜精品浪潮av一区二区三区| 国产原创一区二区| 日本麻豆一区二区三区视频| 国产欧美一区二区精品久导航| 欧美日本国产一区| 欧美日精品一区视频| 国产精品久久久久久久久图文区|