私人子label1_click()“的总罢工标签,如”上海“
Label2.Visible的= TRUE'的标签,以表明上海地形,特色,位置,等等。
>结束小组
有点复杂,如果涉及到数据库
子command1_click()'点击在文本框中,输入地名
Data1.RecordSource =“SELECT *从Sheet1地方的名称,如“&”“&”*“Text16&”*“&”'“
Data1.Refresh
(查找功能,这是一个有点复杂的。要三思而后你,告诉你)
下面的代码是按键盘上下左右键可以实现地图滚动,运行代码之前,在当前目录放一张2048*2048的图片,文件名为map.jpg,是地图;在窗体设计器里面放一个picturebox,命名为map,再放一个timer,名字不用改,然后运行代码即可,你可以根据实际情况修改。Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Const MERGEPAINT = &HBB0226
Private Const SRCAND = &H8800C6
Private Const SRCCOPY = &HCC0020
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC 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 dwRop As Long) As Long
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const VK_ESCAPE = &H1B '
Private Const VK_UP = &H26 '上
Private Const VK_DOWN = &H28 '下
Private Const VK_LEFT = &H25 '左
Private Const VK_RIGHT = &H27 '右
Dim FRAME As Single
Dim MAPX As Long, MAPY As Long '地图坐标
Dim AN As Single, BN As Single '角色坐标
Dim I As Single, PLAY As Long
Dim FPSX As Long, FPSY As Long, SPEED As Long '游戏画面每秒的帧数
Private Sub Form_Load()
Form1.Height = 480 * 15: Form1.Width = 640 * 15
Me.Show
PICMAP.Picture = LoadPicture("MAP.jpg")
MAPX = 1024: MAPY = 1024
FRAME = 1
AN = 0: BN = 200
I = 0.2
PLAY = 1
FPSY = GetTickCount()
FPSX = FPSY
End Sub
Private Sub Timer1_Timer()
DoEvents
SPEED = (FPSY - FPSX)
Label1.Caption = "FPS = " &Int(1000 / (SPEED + 1))
BitBlt Me.hDC, MAPX, MAPY, 2048, 2048, PICMAP.hDC, 0, 0, vbSrcCopy
BitBlt Me.hDC, MAPX - 2048, MAPY, 2048, 2048, PICMAP.hDC, 0, 0, vbSrcCopy
BitBlt Me.hDC, MAPX, MAPY - 2048, 2048, 2048, PICMAP.hDC, 0, 0, vbSrcCopy
BitBlt Me.hDC, MAPX - 2048, MAPY - 2048, 2048, 2048, PICMAP.hDC, 0, 0, vbSrcCopy
AN = AN + SPEED * I
If AN <-50 Then I = -I: PLAY = 1
If AN >550 Then I = -I: PLAY = 2
Me.Refresh
If GetAsyncKeyState(VK_ESCAPE) And &H8000 Then End
If MAPX >0 And GetAsyncKeyState(VK_RIGHT) And &H8000 Then MAPX = MAPX - SPEED * FRAME
If MAPX <2048 And GetAsyncKeyState(VK_LEFT) And &H8000 Then MAPX = MAPX + SPEED * FRAME
If MAPY >0 And GetAsyncKeyState(VK_DOWN) And &H8000 Then MAPY = MAPY - SPEED * FRAME
If MAPY <2048 And GetAsyncKeyState(VK_UP) And &H8000 Then MAPY = MAPY + SPEED * FRAME
FPSX = FPSY
FPSY = GetTickCount()
End Sub
用www.bitmanagement.de的Bs Contact 3D最简单,安装以后里面会有ocx控件,把这个ocx控件与工程放到一起并导到工具条上,并拖拽到Form上。用3dsmax做个简单场景或者别人的场景,导出成.wrl的文件格式。
然后在VB里使用那个控件导入这个文件即可
BSContact1.scene = "c:\test.wrl",一个三维场景就在你眼前了,什么代码都不用写便能用方向键和鼠标控制在里面行走、飞行……
如果学深入了,做交互游戏没问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)