社区
VB基础类
帖子详情
让我死了很多脑细胞的问题
clchenle317
2006-02-04 10:05:45
编写飞机飞行的仿真程序,每隔一定的时间出现飞机的运行轨迹。
求思路;
比如一架飞机起飞后,用TIMER控件控制每隔一秒,读取数据库中的经维度坐标。在飞行过程中,又产生一架新飞机,要读取他的轨迹坐标,问如何使他们同时在屏幕中显示?在线等啊
每架飞机用一个TIMER控件好象不现实,用多线程好象也不行,
如果把每架飞机轨迹坐标放在一张表里,我又不知道可不可行,又怎么读取?
请大家帮帮我!!
...全文
200
12
打赏
收藏
让我死了很多脑细胞的问题
编写飞机飞行的仿真程序,每隔一定的时间出现飞机的运行轨迹。 求思路; 比如一架飞机起飞后,用TIMER控件控制每隔一秒,读取数据库中的经维度坐标。在飞行过程中,又产生一架新飞机,要读取他的轨迹坐标,问如何使他们同时在屏幕中显示?在线等啊 每架飞机用一个TIMER控件好象不现实,用多线程好象也不行, 如果把每架飞机轨迹坐标放在一张表里,我又不知道可不可行,又怎么读取? 请大家帮帮我!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zyl910
2006-02-05
打赏
举报
回复
//如果那样的话,我还是要CPlane.cls的Move中用到TIMER,飞机产生的时间是随机的.有的两架飞机会间隔很久的
昏
为Move加个CurTime参数就行了,在Timer事件中将当前时间传过去
等飞机产生的时候向m_Planes添加一个新对象
等飞机消失后再把它从m_Planes中删除
clchenle317
2006-02-05
打赏
举报
回复
如果那样的话,我还是要CPlane.cls的Move中用到TIMER,飞机产生的时间是随机的.有的两架飞机会间隔很久的
zyl910
2006-02-05
打赏
举报
回复
在CPlane.cls的Move中从表中得到当前位置
clchenle317
2006-02-05
打赏
举报
回复
我的飞机的轨迹坐标是事先就存储在不同的表中的,移动时,我是用TIMER事件每隔两秒中触发一次的,牵涉到很多表的问题,问问大家有没有好的方法????
zyl910
2006-02-04
打赏
举报
回复
大概是这样写:
CPlane.cls
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Private m_CurX As Single, m_CurY As Single
Public Property Get CurX() As Single
CurX = m_CurX
End Property
Public 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 Sub
Private Sub Form_Load()
End Sub
Private 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
zyl910
2006-02-04
打赏
举报
回复
//用TIMER来枚举,这样的话是不是每次只有一架飞机在动啊
枚举数组啊
这样得到每架飞机的当前坐标
再一起画出来
clchenle317
2006-02-04
打赏
举报
回复
用TIMER来枚举,这样的话是不是每次只有一架飞机在动啊
zyl910
2006-02-04
打赏
举报
回复
这个还算简单:
先建一个类模块来封装单架飞机的操作
在主窗体中放一个数组,用于存放当前的所有飞机
在Timer事件中枚举该数组,依次处理每架飞机并显示
现在明白视屏游戏有多么难写了吧
有N多对象在地图上运动
而且还速率不同
zyl910
2006-02-04
打赏
举报
回复
//一方面因为延时造成飞行画面出现抖动
将PictureBox的AutoRedraw设为True,使用双缓冲就不会抖动了
//另一方面VB6为了排斥多线程,采取了消息冻结机制(Blocking)。
编译成exe后Timer就不会冻结了
lyserver
2006-02-04
打赏
举报
回复
我觉得尽量不用Timer控件,一方面因为延时造成飞行画面出现抖动,另一方面VB6为了排斥多线程,采取了消息冻结机制(Blocking)。但你可以用多线程,结合WaitForSingleObject或WaitForMultiObject之类的函数,在自定义的时间事件中处理飞行画面。如果有两架以上的飞机,飞行轨迹参数最好分别存在不同的数据表中,以避免再处理多线程中数据表的锁定和解锁问题。
zyl910
2006-02-04
打赏
举报
回复
人眼的时间分辨率是1/25秒
只要你在1/25秒内画好图形
人眼就看不出来了
province_
2006-02-04
打赏
举报
回复
用TIMER来枚举,这样的话是不是每次只有一架飞机在动啊
是,因为单CPU情况下确实是这样的;但你的眼睛会告诉你不是,因为间隔的时间很短。
很有趣的一个数学题,让我
死
了很多
脑细胞
有三个人去住旅馆,住三间房,每一间房$10元,于是他们一共付给老板$30, 第二天,老板觉得三间房只需要$25元就够了于是叫小弟退回$5给三位客人, 谁知小弟贪心,只退回每人$1,自己偷偷拿了$2,这样一来便等于那三位客人每人各花了九元, 于是三个人一共花了$27,再加上小弟独吞了不$2,总共是$29。可是当初他们三个人一共付出$30那么还有$1呢?
人体的神经元有多少个,人体的神经元有多少支
人刚出生时有2000亿个
脑细胞
,一周岁就
死
掉90%,剩下200亿个(见科学出版社出版的“右脑灵感大修炼”日“儿玉光雄”著,第15页),至15岁时剩余140亿个,15岁至25岁
脑细胞
死
速度的最慢,一秒一个,每天十万,每月300万,每3.5年
死
一个亿(上述那本书的22页),但25岁之后,
脑细胞
死
亡加速,年龄越大,
脑细胞
死
亡速度越快,到80岁时,只剩下15岁时
脑细胞
的37%(即52亿个,见上述那本书的22页)100岁时只剩下19%(即27亿左右)。在髓质中,大脑内的室腔是侧脑室,内含透明的脑脊液。
科学家发现新的人类
脑细胞
,或可解答一个难题
来源:中国生物技术网关于人类大脑最令人感兴趣的
问题
之一,也是神经科学家们最难回答的
问题
之一,就是到底是什么让我们的大脑与其他动物的大脑区别开来。Allen脑科学研究所的研...
单细胞测序之在脑科学方面的应用
参考文献: Armand EJ, Li J, Xie F, Luo C, Mukamel EA. Single-Cell Sequencing of Brain Cell Transcriptomes and Epigenomes. Neuron. 2021 Jan 6;109(1):11-26. doi: 10.1016/j.neuron.2020.12.010. PMID: 33412093; PMCID: PMC7808568. 一、单细胞转录组在脑科学研究的应用 1、细胞类型发现和表征 单细胞技.
Android 各种杀
脑细胞
的
问题
集合
1. EditText KeyBoard, 遮挡
问题
(集中表现为: 发送消息软件如何实现? 保证Title等不被软键盘吃掉)http://unicorn25.iteye.com/blog/916504如果ListView出现, 又需要这样解决了:http://www.oschina.net/question/163910_271332. Android 程序如何完美退出(n个Activity出现的
VB基础类
7,763
社区成员
197,605
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章