如何用VB制作一个地图编辑器?能举一个简单的实例吗?

如何用VB制作一个地图编辑器?能举一个简单的实例吗?,第1张

简单点就是:

私人子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",一个三维场景就在你眼前了,什么代码都不用写便能用方向键和鼠标控制在里面行走、飞行……

如果学深入了,做交互游戏没问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12071423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存