亚洲欧美第一页_禁久久精品乱码_粉嫩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资源站在线观看| 亚洲国产成人自拍| 欧美精品一区二区久久久| 国产人妖乱国产精品人妖| 亚洲视频一区在线| 热久久久久久久| 成人免费不卡视频| 欧美日本一区二区| 国产欧美日韩综合| 亚洲一级二级三级| 国产在线播放一区二区三区| 在线视频一区二区三区| 日韩免费看网站| 亚洲激情综合网| 久久99国产精品久久| 91啦中文在线观看| 日韩免费高清视频| 亚洲午夜三级在线| 国产精品影视天天线| 欧美性色综合网| 国产欧美日韩麻豆91| 日韩av一级片| 色婷婷久久久亚洲一区二区三区 | 亚洲成人免费影院| 国产精品自拍在线| 欧美日韩情趣电影| 欧美国产日韩亚洲一区| 日本va欧美va瓶| 91毛片在线观看| 2021中文字幕一区亚洲| 三级在线观看一区二区| 9久草视频在线视频精品| 精品少妇一区二区三区| 午夜亚洲国产au精品一区二区| 国产凹凸在线观看一区二区| 91精品免费在线| 亚洲欧洲av另类| 国产成人在线免费观看| 日韩视频一区二区三区| 亚洲国产视频直播| 91在线看国产| 国产日韩欧美在线一区| 日本亚洲电影天堂| 欧美三级欧美一级| 一区二区三区色| 99久久婷婷国产综合精品电影| 2019国产精品| 美腿丝袜在线亚洲一区| 91精品午夜视频| 午夜伦欧美伦电影理论片| 91久久线看在观草草青青| 中文字幕一区二区三区视频| 国产精品夜夜嗨| 久久久久国产精品麻豆ai换脸| 麻豆91精品91久久久的内涵| 欧美日韩久久久久久| 一区二区三区欧美在线观看| 本田岬高潮一区二区三区| 日本一区二区三区国色天香| 国产一区二区中文字幕| 国产精品久久久久三级| 国产成人精品影视| 久久久久久久久蜜桃| 国产美女精品一区二区三区| 日韩欧美在线观看一区二区三区| 性做久久久久久久久| 欧美日韩精品一区二区三区蜜桃| 亚洲青青青在线视频| 91日韩一区二区三区| 亚洲天堂成人网| 91美女片黄在线观看| 一区二区三区在线视频观看| 99久久精品国产一区| 国产精品国产自产拍高清av王其| 不卡一区二区三区四区| 国产精品人成在线观看免费 | 国产精品免费av| av电影一区二区| 亚洲日本在线视频观看| 色吊一区二区三区| 亚洲福中文字幕伊人影院| 欧美三级电影一区| 午夜欧美视频在线观看| 制服丝袜中文字幕一区| 麻豆国产一区二区| 久久精品无码一区二区三区| 国产毛片一区二区| 国产精品久久久久久福利一牛影视| 99久久久久免费精品国产| 一区二区三区不卡视频| 欧美日韩成人一区二区| 日韩电影免费在线看| 精品福利一区二区三区免费视频| 国产精品123| 日韩一区欧美一区| 欧美性一级生活| 免费不卡在线视频| 久久久综合精品| 色婷婷综合久久久中文字幕| 天天色天天操综合| 2014亚洲片线观看视频免费| av成人免费在线观看| 午夜av电影一区| 久久久久久久久岛国免费| 色综合天天视频在线观看| 日韩精品久久久久久| 欧美精品一区二| 色综合婷婷久久| 奇米影视7777精品一区二区| 国产三级精品视频| 在线日韩国产精品| 免费观看在线综合色| 国产精品蜜臀av| 欧美日韩精品系列| 国产老肥熟一区二区三区| 一区二区三区在线观看动漫| 欧美成人三级电影在线| www.日韩在线| 日韩avvvv在线播放| 中文字幕在线一区二区三区| 欧美电影影音先锋| 不卡av免费在线观看| 日本 国产 欧美色综合| 日韩美女精品在线| 日韩午夜中文字幕| 99久久国产综合精品色伊| 亚洲成av人片在线观看无码| 欧美国产成人在线| 91精品久久久久久蜜臀| eeuss鲁片一区二区三区在线看 | 久久免费精品国产久精品久久久久| 99麻豆久久久国产精品免费| 免费一区二区视频| 成人免费在线播放视频| 欧美一区二区精品在线| 99免费精品视频| 国内精品视频666| 亚洲成精国产精品女| 国产精品人成在线观看免费 | 国产成人综合视频| 天天综合网 天天综合色| 亚洲午夜久久久久久久久电影网| 国产欧美一区二区精品忘忧草 | 日本午夜精品视频在线观看 | 91久久香蕉国产日韩欧美9色| 国产乱码精品一区二区三| 五月婷婷久久丁香| 国产精品久久看| 精品国产1区二区| 这里只有精品电影| 色婷婷av一区二区三区大白胸| 国产美女在线精品| 免费成人在线影院| 亚洲成人777| 亚洲精品视频一区| 中文字幕不卡一区| 久久色在线观看| 欧美成人a∨高清免费观看| 欧美色图第一页| 91在线观看地址| 波多野结衣在线一区| 国产一区免费电影| 久久国产人妖系列| 日日夜夜精品视频免费| 亚洲永久免费视频| 最新高清无码专区| 欧美激情中文字幕| 久久嫩草精品久久久久| 精品久久99ma| 日韩美女视频一区二区在线观看| 欧美久久久久久久久中文字幕| 91福利小视频| 91精彩视频在线观看| 91美女在线观看| 91亚洲精品久久久蜜桃网站 | 亚洲自拍偷拍麻豆| 亚洲精品老司机| 有码一区二区三区| 一区二区在线看| 亚洲人成小说网站色在线 | 日本高清视频一区二区| 91亚洲精品一区二区乱码| 成人sese在线| 99视频国产精品| 91麻豆国产自产在线观看| 91农村精品一区二区在线| 色综合久久综合网欧美综合网 | 午夜亚洲福利老司机| 亚洲成人午夜电影| 五月婷婷久久综合| 日本色综合中文字幕| 久久国产欧美日韩精品| 国产一区二区不卡在线| 国产成人av影院| 99精品视频在线播放观看| 一本色道久久综合亚洲精品按摩| 色猫猫国产区一区二在线视频| 欧美视频你懂的| 欧美一区二区在线视频| 精品噜噜噜噜久久久久久久久试看|