编写飞机飞行的仿真程序,每隔一定的时间出现飞机的运行轨迹。
求思路;
比如一架飞机起飞后,用TIMER控件控制每隔一秒,读取数据库中的经维度坐标。在飞行过程中,又产生一架新飞机,要读取他的轨迹坐标,问如何使他们同时在屏幕中显示?在线等啊
每架飞机用一个TIMER控件好象不现实,用多线程好象也不行,
如果把每架飞机轨迹坐标放在一张表里,我又不知道可不可行,又怎么读取?
请大家帮帮我!!
求思路;
比如一架飞机起飞后,用TIMER控件控制每隔一秒,读取数据库中的经维度坐标。在飞行过程中,又产生一架新飞机,要读取他的轨迹坐标,问如何使他们同时在屏幕中显示?在线等啊
每架飞机用一个TIMER控件好象不现实,用多线程好象也不行,
如果把每架飞机轨迹坐标放在一张表里,我又不知道可不可行,又怎么读取?
请大家帮帮我!!
先建一个类模块来封装单架飞机的操作
在主窗体中放一个数组,用于存放当前的所有飞机
在Timer事件中枚举该数组,依次处理每架飞机并显示
现在明白视屏游戏有多么难写了吧
有N多对象在地图上运动
而且还速率不同
在一个TIMER事件中处理吗?
我的每架飞机轨迹都不一样啊,怎么用类来封装啊
CPlane.cls
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Private m_CurX As Single, m_CurY As SinglePublic Property Get CurX() As Single
CurX = m_CurX
End PropertyPublic Property Get CurY() As Single
CurY = m_CurY
End Property'计算当前坐标
Public Sub Move()
'在这里写轨迹计算代码,并将当前位置赋给m_CurX、m_CurY
'……
End Sub
frmMain.frm
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
'存储当前的所有飞机
Private m_Planes() As CPlane'绘制飞机
Private Sub DrawPlane(oPlane As CPlane)
'根据oPlane的CurX、CurY属性在Picture1上画
'……
End SubPrivate Sub Form_Load()End SubPrivate Sub Timer1_Timer()
Dim oPlane As CPlane
'清屏(注意Picture1.AutoRedraw应设为True)
Picture1.Cls
'绘制所有飞机
For Each oPlane In m_Planes
'计算当前坐标
Call oPlane.Move
'绘制飞机
Call DrawPlane(oPlane)
Next oPlane
'更新图像
Picture1.Refresh
End Sub
我只是调用不同的表,可是具体细节我还是不清楚啊
简单的可以用timer。但用timer只能依次处理,不能实现同时。例如用timer计算的结果是几台飞机都相安无事,但实际上可能是有两台飞机在交错中撞毁了
用多线程可以实现同时计算飞机轨迹,但用vb来做又很麻烦。
Windows的多线程是怎么实现的?
还不是软件模拟的
只不过它利用了一些特权指令而已