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

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

?? ddraw.bas

?? vb6的一個RPG源碼
?? BAS
?? 第 1 頁 / 共 2 頁
字號:
Attribute VB_Name = "DDraw"
Option Explicit
'DirectX variables
Dim mdd As DirectDraw7
Dim msurfFront As DirectDrawSurface7
Dim msurfBack As DirectDrawSurface7
Dim ElSprite As DirectDrawSurface7
Dim msurfTiles As DirectDrawSurface7
Dim TalkBox As DirectDrawSurface7
Dim Itemz As DirectDrawSurface7
Const SPEECH_WIDTH = 640
Const SPEECH_HEIGHT = 120
Const SPEECH_START_HEIGHT = 32
Const SPEECH_START_WIDTH = 15
Const SPEECH_LINE_SPACING = 20
Dim mlngFrameTime As Long                   'How long since last frame?
Dim mlngTimer As Long                       'How long since last FPS count update?
Dim mintFPSCounter As Integer               'Our FPS counter
Dim mintFPS As Integer                      'Our FPS storage variable
Dim mrectScreen As RECT
Public SaleLoop As Byte
Public PointerX As Integer
Public PointerY As Integer

Public Sub DrawTiles()
Dim i As Integer
Dim j As Integer
Dim rectTile As RECT
Dim bytTileNum As Tilez
Dim bytTileNum2 As Tilez
Dim intx As Integer
Dim inty As Integer
Dim intItem As Byte
    'Draw the tiles according to the map array
    For i = 0 To CInt(SCREEN_WIDTH / TILE_WIDTH)
        For j = 0 To CInt(SCREEN_HEIGHT / TILE_HEIGHT)
            'Calc X,Y coords for this tile's placement
            intx = i * TILE_WIDTH - mintX Mod TILE_WIDTH
            inty = j * TILE_HEIGHT - mintY Mod TILE_HEIGHT
            bytTileNum = GetTileG(intx, inty)
            bytTileNum2 = GetTileF(intx, inty)
            intItem = GetItem(intx, inty)
            GetRect bytTileNum, intx, inty, rectTile
            msurfBack.BltFast intx, inty, msurfTiles, rectTile, DDBLTFAST_WAIT
            If bytTileNum2.X <> 0 Or bytTileNum2.Y <> 0 Then
            intx = i * TILE_WIDTH - mintX Mod TILE_WIDTH
            inty = j * TILE_HEIGHT - mintY Mod TILE_HEIGHT
            GetRect bytTileNum2, intx, inty, rectTile
            msurfBack.BltFast intx, inty, msurfTiles, rectTile, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT
            End If
            If intItem > 0 Then
            intx = i * TILE_WIDTH - mintX Mod TILE_WIDTH
            inty = j * TILE_HEIGHT - mintY Mod TILE_HEIGHT
            intItem = DaItems(intItem - 1).GrhIndex
            'Get the rectangle
            GetItemRect intItem, intx, inty, rectTile
            'Blit the tile
            msurfBack.BltFast intx, inty, Itemz, rectTile, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT
            End If
            Next j
    Next i

End Sub

Private Function GetTileG(intTileX As Integer, intTileY As Integer) As Tilez

    'Return the value returned by the map array for the given tile
    GetTileG = mbytMap((intTileX + TILE_WIDTH \ 2 + mintX - SCREEN_WIDTH \ 2) \ TILE_WIDTH, (intTileY + TILE_HEIGHT \ 2 + mintY - SCREEN_HEIGHT \ 2) \ TILE_HEIGHT).TileNumber.Ground

End Function

Private Function GetTileF(intTileX As Integer, intTileY As Integer) As Tilez

    'Return the value returned by the map array for the given tile
    GetTileF = mbytMap((intTileX + TILE_WIDTH \ 2 + mintX - SCREEN_WIDTH \ 2) \ TILE_WIDTH, (intTileY + TILE_HEIGHT \ 2 + mintY - SCREEN_HEIGHT \ 2) \ TILE_HEIGHT).TileNumber.Floor

End Function
Private Function GetTileS(X As Integer, Y As Integer) As Tilez

    'Return the value returned by the map array for the given tile
    GetTileS = mbytMap(X, Y).TileNumber.Sky

End Function
Private Sub GetRect(bytTileNumber As Tilez, ByRef intTileX As Integer, ByRef intTileY As Integer, ByRef rectTile As RECT)

    'Calc rect
    With rectTile
        .Left = bytTileNumber.X * TILE_WIDTH
        .Right = .Left + TILE_WIDTH
        .Top = bytTileNumber.Y * TILE_HEIGHT
        .Bottom = .Top + TILE_HEIGHT
    
    'Clip rect
        
        'If this tile is off the left side of the screen...
        If intTileX < 0 Then
            .Left = .Left - intTileX
            intTileX = 0
        End If
        'If this tile is off the top of the screen...
        If intTileY < 0 Then
            .Top = .Top - intTileY
            intTileY = 0
        End If
        'If this tile is off the right side of the screen...
        If intTileX + TILE_WIDTH > SCREEN_WIDTH Then .Right = .Right + (SCREEN_WIDTH - (intTileX + TILE_WIDTH))
        'If this tile is off the bottom of the screen...
        If intTileY + TILE_HEIGHT > SCREEN_HEIGHT Then .Bottom = .Bottom + (SCREEN_HEIGHT - (intTileY + TILE_HEIGHT))
    End With

End Sub

Public Sub MoveScreen()
msurfBack.BltColorFill mrectScreen, 0
    'Move screen
    If Walking = South Then
        If DudeCoord.Y < 8 Then GoTo MoveIt:
    mintY = mintY + SCROLL_SPEED
    GoTo MoveIt:
    End If
    If Walking = North Then
        If DudeCoord.Y > 41 Then GoTo MoveIt:
    mintY = mintY - SCROLL_SPEED
    GoTo MoveIt:
    End If
    If Walking = West Then
        If DudeCoord.X > 39 Then GoTo MoveIt:
    mintX = mintX - SCROLL_SPEED
    GoTo MoveIt:
    End If
    If Walking = East Then
        If DudeCoord.X < 10 Then GoTo MoveIt:
    mintX = mintX + SCROLL_SPEED
    GoTo MoveIt:
    End If
'Ensure we don't go off the edge, and move NPC Accordingly if so.
MoveIt:
    If mintX < SCREEN_WIDTH \ 2 Then
    mintX = SCREEN_WIDTH \ 2
    End If
    If mintX > UBound(mbytMap, 1) * TILE_WIDTH - SCREEN_WIDTH \ 2 Then
    mintX = UBound(mbytMap, 1) * TILE_WIDTH - SCREEN_WIDTH \ 2
    End If
    If mintY < SCREEN_HEIGHT \ 2 Then
    mintY = SCREEN_HEIGHT \ 2
    End If
    If mintY > UBound(mbytMap, 2) * TILE_HEIGHT - SCREEN_HEIGHT \ 2 Then
    mintY = UBound(mbytMap, 2) * TILE_HEIGHT - SCREEN_HEIGHT \ 2
    End If
End Sub

Public Sub FPS()
    'Count FPS
    If mlngTimer + 1000 <= Gdx.TickCount Then
        mlngTimer = Gdx.TickCount
        mintFPS = mintFPSCounter + 1
        mintFPSCounter = 0
    Else
        mintFPSCounter = mintFPSCounter + 1
    End If
    'Display FPS, text, and possibly NPC Speech

    msurfBack.DrawText 0, 0, "Megalodon's RPG Engine", False
    msurfBack.DrawText 0, 20, "FPS: " & mintFPS, False
    msurfBack.DrawText 0, 40, "X= " & DudeCoord.X & "Y= " & DudeCoord.Y, False
    If TradeNPC = 1 Then DisplayNPCQuery
    If SayNPC Then DisplaySpeech
    If TradeNPC = 2 Then DrawTradeMenu
    If TradeNPC = 3 Then DrawTradeMenu
    If DispInventMenu = True Then DrawInventMenu
    DrawHealth
    msurfFront.Flip Nothing, DDFLIP_WAIT
    End Sub
Public Sub LoadSurfaces()
Dim CKey As DDCOLORKEY
Dim ddsdGeneric As DDSURFACEDESC2
Dim tLocked As Long
Dim TempRct As RECT
    'Set up generic surface description
    ddsdGeneric.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
    ddsdGeneric.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
    'Load our tileset
    ddsdGeneric.lHeight = 352
    ddsdGeneric.lWidth = 768
    Set msurfTiles = mdd.CreateSurfaceFromFile(App.Path & "\tileset.bmp", ddsdGeneric)
    ddsdGeneric.lHeight = 768
    ddsdGeneric.lWidth = 256
    Set ElSprite = mdd.CreateSurfaceFromFile(App.Path & "\Pat.bmp", ddsdGeneric)
    With TempRct
        .Bottom = 384
        .Top = 0
        .Left = 0
        .Right = 192
    End With
    ElSprite.Lock TempRct, ddsdGeneric, DDLOCK_NOSYSLOCK, frmMain.hWnd
    tLocked = ElSprite.GetLockedPixel(0, 0)
    ElSprite.Unlock TempRct
    ddsdGeneric.lHeight = 885
    ddsdGeneric.lWidth = 640
    Set TalkBox = mdd.CreateSurfaceFromFile(App.Path & "\ChatBox.bmp", ddsdGeneric)
    ddsdGeneric.lHeight = 32
    ddsdGeneric.lWidth = 800
    Set Itemz = mdd.CreateSurfaceFromFile(App.Path & "\Itemz.bmp", ddsdGeneric)
CKey.low = tLocked
CKey.high = tLocked
msurfTiles.SetColorKey DDCKEY_SRCBLT, CKey
ElSprite.SetColorKey DDCKEY_SRCBLT, CKey
TalkBox.SetColorKey DDCKEY_SRCBLT, CKey
Itemz.SetColorKey DDCKEY_SRCBLT, CKey
End Sub

Public Function ExclusiveMode() As Boolean

Dim lngTestExMode As Long
    
    'This function tests if we're still in exclusive mode
    lngTestExMode = mdd.TestCooperativeLevel
    
    If (lngTestExMode = DD_OK) Then
        ExclusiveMode = True
    Else
        ExclusiveMode = False
    End If
    
End Function

Public Function LostSurfaces() As Boolean

    'This function will tell if we should reload our bitmaps or not
    LostSurfaces = False
    Do Until ExclusiveMode
        DoEvents
        LostSurfaces = True
    Loop
    
    'If we did lose our bitmaps, restore the surfaces and return 'true'
    DoEvents
    If LostSurfaces Then
        mdd.RestoreAllSurfaces
    End If
    
End Function

Public Sub Terminate()
    'Terminate the render loop
    mblnRunning = False

    'Restore resolution
    mdd.RestoreDisplayMode
    mdd.SetCooperativeLevel 0, DDSCL_NORMAL

    'Kill the surfaces
    Set Itemz = Nothing
    Set TalkBox = Nothing
    Set msurfTiles = Nothing
    Set ElSprite = Nothing
    Set msurfBack = Nothing
    Set msurfFront = Nothing
    'Kill directdraw
    Set mdd = Nothing
    'Kill DirectX
    Set Gdx = Nothing
End Sub



Public Sub Init()
Dim ddsdMain As DDSURFACEDESC2
Dim ddsdFlip As DDSURFACEDESC2    'Show the main form
    frmMain.Show

    'Initialize DirectDraw
    Set mdd = Gdx.DirectDrawCreate("")
    
    'Set the cooperative level (Fullscreen exclusive)
    mdd.SetCooperativeLevel frmMain.hWnd, DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE
    
    'Set the resolution
    mdd.SetDisplayMode SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BITDEPTH, 0, DDSDM_DEFAULT

    'Describe the flipping chain architecture we'd like to use
    ddsdMain.lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT
    ddsdMain.lBackBufferCount = 1
    ddsdMain.ddsCaps.lCaps = DDSCAPS_COMPLEX Or DDSCAPS_FLIP Or DDSCAPS_PRIMARYSURFACE
    
    'Create the primary surface
    Set msurfFront = mdd.CreateSurface(ddsdMain)
    
    'Create the backbuffer
    ddsdFlip.ddsCaps.lCaps = DDSCAPS_BACKBUFFER
    Set msurfBack = msurfFront.GetAttachedSurface(ddsdFlip.ddsCaps)
    
    'Set the text colour for the backbuffer
    msurfBack.SetForeColor vbWhite
    msurfBack.SetFontTransparency True

    'Create our screen-sized rectangle
    mrectScreen.Bottom = SCREEN_HEIGHT
    mrectScreen.Right = SCREEN_WIDTH
YCharOffSet = 7
XCharOffSet = 10
PointerX = 275
PointerY = 113
SaleLoop = 0
    LoadSurfaces
End Sub
Private Sub DisplaySpeech()
Dim SrcRect As RECT
Dim strTemp As String
Dim strOne As String
Dim strTwo As String
Dim strThree As String
Dim strFour As String
    With SrcRect
    .Left = 0
    .Right = 640
    .Top = 0
    .Bottom = 100
    End With
    msurfBack.BltFast 0, 380, TalkBox, SrcRect, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT
    'Extract NPC Name and Text
    strTemp = NPCTalk
    If NPCFirst Then
        If strTemp <> "" Then TempName = Left(strTemp, InStr(1, strTemp, ":") - 1)
        strTemp = Right(strTemp, Len(strTemp) - InStr(1, strTemp, ":"))
        End If
    If strTemp <> "" Then strOne = Left(strTemp, InStr(1, strTemp, "|") - 1)
    If strTemp <> "" Then strTemp = Right(strTemp, Len(strTemp) - InStr(1, strTemp, "|"))
    If strTemp <> "" Then strTwo = Left(strTemp, InStr(1, strTemp, "|") - 1)
    If strTemp <> "" Then strTemp = Right(strTemp, Len(strTemp) - InStr(1, strTemp, "|"))
    If strTemp <> "" Then strThree = Left(strTemp, InStr(1, strTemp, "|") - 1)
    If strTemp <> "" Then strTemp = Right(strTemp, Len(strTemp) - InStr(1, strTemp, "|"))
    If strTemp <> "" Then strFour = Left(strTemp, InStr(1, strTemp, "|") - 1)
    If strTemp <> "" Then
    strTemp = Right(strTemp, Len(strTemp) - InStr(1, strTemp, "|"))
    Else
    strTemp = ""
    End If
    strOne = TempName & ": " & strOne
    'Ensure that these don't overlap the next "page" of text, and display them
    If InStr(1, strOne, "~") = 0 And strOne <> "" Then
        msurfBack.DrawText SPEECH_START_WIDTH, 480 - SPEECH_HEIGHT + SPEECH_START_HEIGHT, strOne, False
        If InStr(1, strTwo, "~") = 0 And strTwo <> "" Then
            msurfBack.DrawText SPEECH_START_WIDTH + 55, 480 - SPEECH_HEIGHT + SPEECH_START_HEIGHT + SPEECH_LINE_SPACING, strTwo, False
            If InStr(1, strThree, "~") = 0 And strThree <> "" Then
                msurfBack.DrawText SPEECH_START_WIDTH + 55, 480 - SPEECH_HEIGHT + SPEECH_START_HEIGHT + 2 * SPEECH_LINE_SPACING, strThree, False
                If InStr(1, strFour, "~") = 0 And strFour <> "" Then msurfBack.DrawText SPEECH_START_WIDTH + 55, 480 - SPEECH_HEIGHT + SPEECH_START_HEIGHT + 3 * SPEECH_LINE_SPACING, strFour, False
            End If
        End If
    End If
    NPCNext = strTemp
End Sub
Public Sub DrawNPC()
Dim i As Integer
Dim j As Integer
Dim rectTile As RECT
Dim intx As Integer
Dim inty As Integer
Dim blnNPC As Boolean
Dim TempNPCX As Integer
Dim TempNPCY As Integer

    'Draw the tiles according to the map array
    For i = 0 To CInt(SCREEN_WIDTH / TILE_WIDTH)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆蜜桃一区二区三区| 91在线观看成人| 国产a视频精品免费观看| 国产成人av福利| 精品亚洲porn| 成人性生交大片免费看在线播放| jlzzjlzz国产精品久久| 欧美理论电影在线| 国产亚洲一二三区| 亚洲高清不卡在线| 成人免费高清在线| 91精品欧美一区二区三区综合在| 久久久久久久久久久久久女国产乱| 国产精品成人午夜| 亚洲福利国产精品| 日产精品久久久久久久性色| 福利电影一区二区| 日韩欧美专区在线| 亚洲福利视频导航| 不卡av免费在线观看| 欧美一区二区播放| 亚洲综合精品自拍| k8久久久一区二区三区| 精品久久久久久无| 亚洲最大成人综合| 成人av午夜电影| 欧美精品一区二区三区久久久| 一二三四社区欧美黄| 国产成人精品免费视频网站| 91麻豆精品国产自产在线观看一区| 欧美国产精品中文字幕| 亚洲第一成年网| 91麻豆文化传媒在线观看| 欧美一区二区不卡视频| 亚洲成人av一区二区| 99久久国产免费看| 久久久久99精品一区| 日本在线不卡视频| 欧美人体做爰大胆视频| 一区二区视频免费在线观看| 岛国av在线一区| 久久精品夜夜夜夜久久| 久久国产精品99久久久久久老狼| 欧美日韩国产高清一区二区 | 国产一区二区福利视频| 色老综合老女人久久久| 国产精品丝袜在线| 美女网站视频久久| 91精品麻豆日日躁夜夜躁| 性做久久久久久免费观看| 欧美色男人天堂| 亚洲一区二区三区四区在线免费观看| gogogo免费视频观看亚洲一| 国产精品久久久久久亚洲毛片| 福利电影一区二区| 中文字幕日韩一区| 91在线精品秘密一区二区| 中文字幕亚洲视频| 色婷婷亚洲综合| 亚洲成人777| 日韩欧美一区二区三区在线| 激情综合网激情| 精品国产乱码久久久久久免费 | 国产精品白丝av| 欧美videos大乳护士334| 精品在线观看视频| 中文av一区二区| 色中色一区二区| 丝瓜av网站精品一区二区 | 亚洲一区二区综合| 精品视频1区2区| 九九在线精品视频| 国产欧美一区视频| 日本道精品一区二区三区| 国产亚洲欧美色| 国产乱淫av一区二区三区 | 蜜臀av亚洲一区中文字幕| 26uuu久久天堂性欧美| 成人精品一区二区三区四区| 亚洲色大成网站www久久九九| 91成人在线免费观看| 美女诱惑一区二区| 国产精品免费网站在线观看| 欧美视频在线观看一区| 青青草91视频| 国产精品高潮久久久久无| 3d动漫精品啪啪一区二区竹菊| 久久超级碰视频| 国产欧美日韩亚州综合| 色香蕉久久蜜桃| 韩国在线一区二区| 亚洲亚洲人成综合网络| 精品区一区二区| 91福利资源站| 粉嫩av亚洲一区二区图片| 日韩在线卡一卡二| 久久久久亚洲蜜桃| 欧美日韩美少妇| 成人黄色一级视频| 一区二区三区四区高清精品免费观看| 91精品啪在线观看国产60岁| 99re视频精品| 国产一区999| 奇米一区二区三区| 丁香婷婷综合色啪| 日产欧产美韩系列久久99| 一区二区中文视频| 国产亚洲欧美激情| 91精品欧美福利在线观看| 不卡视频在线观看| 免费成人性网站| 亚洲一区二区三区自拍| 国产三级精品视频| 精品奇米国产一区二区三区| 欧美日韩国产中文| 色猫猫国产区一区二在线视频| 国产精品一区2区| 久久精品噜噜噜成人av农村| 亚洲乱码国产乱码精品精小说 | 日韩一区二区在线看| 在线观看国产精品网站| 不卡的av网站| 国产传媒欧美日韩成人| 免费在线看成人av| 亚洲国产一二三| 国产精品夫妻自拍| 国产欧美一区二区精品仙草咪| 欧美电视剧免费全集观看| 91精品国产综合久久精品| 欧美精品在线一区二区三区| 欧美性猛交xxxxxxxx| 欧美亚洲禁片免费| 欧美亚洲综合在线| 91一区二区三区在线观看| 99国产精品久久久久久久久久久| 成人av网站在线观看| 不卡一区中文字幕| 色综合激情五月| 欧美性受极品xxxx喷水| 欧美日韩亚州综合| 91精品婷婷国产综合久久性色 | 亚洲国产成人tv| 性欧美疯狂xxxxbbbb| 日本中文在线一区| 免费成人你懂的| 久草热8精品视频在线观看| 国产成人免费视频网站| 成人在线综合网| 成人app软件下载大全免费| 成人午夜视频福利| 色先锋aa成人| 欧美日韩国产美女| 精品久久五月天| 国产精品视频看| 尤物视频一区二区| 奇米色777欧美一区二区| 国产一区二区伦理片| 粉嫩蜜臀av国产精品网站| 日本久久一区二区三区| 日韩欧美激情在线| 欧美极品少妇xxxxⅹ高跟鞋 | 中文字幕不卡的av| 最新不卡av在线| 午夜视频一区二区三区| 久久精品免费观看| 国产资源精品在线观看| 7777精品伊人久久久大香线蕉的 | 一本大道久久a久久精品综合| 欧美在线免费视屏| 精品久久久久久无| 亚洲品质自拍视频| 免费精品视频最新在线| 国产91精品精华液一区二区三区| 99国产精品国产精品毛片| www国产精品av| 亚洲美女淫视频| 成人97人人超碰人人99| 久久久久久97三级| 卡一卡二国产精品| 日韩一区二区三免费高清| 亚洲综合免费观看高清完整版 | 欧美一区二区三区视频在线观看| 中文字幕亚洲电影| 国产成人h网站| 久久综合九色综合欧美就去吻| 午夜久久久影院| 欧美日韩免费一区二区三区| 怡红院av一区二区三区| 91亚洲精品一区二区乱码| 国产精品久久综合| 成a人片亚洲日本久久| 国产午夜久久久久| 国产九色sp调教91| 久久久久久久久久久99999| 国精产品一区一区三区mba桃花| 日韩亚洲欧美成人一区| 久久国内精品自在自线400部| 日韩视频在线永久播放| 精品一区二区三区免费| 日韩一区二区免费在线电影|