编写飞机飞行的仿真程序,每隔一定的时间出现飞机的运行轨迹。
求思路;
比如一架飞机起飞后,用TIMER控件控制每隔一秒,读取数据库中的经维度坐标。在飞行过程中,又产生一架新飞机,要读取他的轨迹坐标,问如何使他们同时在屏幕中显示?在线等啊 
每架飞机用一个TIMER控件好象不现实,用多线程好象也不行,
如果把每架飞机轨迹坐标放在一张表里,我又不知道可不可行,又怎么读取?
请大家帮帮我!!

解决方案 »

  1.   

    这个还算简单:
    先建一个类模块来封装单架飞机的操作
    在主窗体中放一个数组,用于存放当前的所有飞机
    在Timer事件中枚举该数组,依次处理每架飞机并显示
    现在明白视屏游戏有多么难写了吧
    有N多对象在地图上运动
    而且还速率不同
      

  2.   

    可不可以说的具体点阿
    在一个TIMER事件中处理吗?
    我的每架飞机轨迹都不一样啊,怎么用类来封装啊
      

  3.   

    轨迹计算可以封装到类中啊在Timer事件中只需枚举飞机对象,从中取得当前坐标
      

  4.   

    大概是这样写:
    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
      

  5.   

    我是用的MAPX控件啊,我说的很简单,事先的轨迹坐标我已经存到数据库里了
    我只是调用不同的表,可是具体细节我还是不清楚啊
      

  6.   

    楼主实际要干什么项目呢????
    简单的可以用timer。但用timer只能依次处理,不能实现同时。例如用timer计算的结果是几台飞机都相安无事,但实际上可能是有两台飞机在交错中撞毁了
    用多线程可以实现同时计算飞机轨迹,但用vb来做又很麻烦。
      

  7.   

    //几台飞机都相安无事,但实际上可能是有两台飞机在交错中撞毁了使用状态机算法可以解决同步问题
    Windows的多线程是怎么实现的?
    还不是软件模拟的
    只不过它利用了一些特权指令而已