关键词不能为空

当前您在: 主页 > 英语 >

天体运行程序代码

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 08:20
tags:

-

2021年2月28日发(作者:home是什么意思)


'


以下是窗体代码,在



VB6.0


调试通过:



'


一、必须在引用中勾选:


OLE Automatuon


,否则



Img As StdPicture


语句会出错



'


二、需在窗体放置以下



4


个控件,所有控件不用设置任何属性,均采用默认设置:



'


Picture1



Picture2



Timer1

< p>


Command1


(注意:在属性窗口将



Command1




Index



性设置为



0




'


三、为窗体添加一个名为



mFast


的菜单,再为



mFast


添加一个名为



mmFast


的下级子菜


单,并将



mmFast


的索引设置为



0




'


即:


mmFast


是以序号



0


开头的菜单数组控件的第一个。



Dim ctD() As tyD, ctDs As Long, ctB() As Long, ctCenter As Long, ct3D As Boolean


Dim ctBi As Single, ctV As Single, ctBW As Long, ctSeeJ As Long, ctTrack As Boolean


Dim ctSeeBi As Single, ctSet As MenuSet, ctShowXX As Boolean, ctColorXX As Boolean


Dim ctP180 As Single, ctP90 As Single, ctP270 As Single, ctP360 As Single


Dim ctSmall() As tySmall, ctSmalls As Long, ctX() As tyX, ctXs As Long, ctSize As Long



'


定义表示星星的数据类型



Private Type tyX



x As Single



y As Single



r As Long



t As Long



Se As Long


End Type



'


定义表示天体的数据类型



Private Type tyD



Ji As Long


'


天体级别




Cap As String


'


天体名称




r As Long


'


天体半径(像素,下同)




a As Single


'


轨道:横半径




b As Single


'


轨道:纵半径




C As Single


'


轨道:焦点




e As Single


'


轨道:偏心率




Dip As Single


'


轨道:倾角




IsHui As Boolean


'


是否彗星




IsSmall As Boolean


'


是否小行星




Father As Long


'


父天体序号:轨道焦点上的天体




Se As Long


'


颜色




V As Single


'


运行角速度




Jiao As Single


'


某时刻的与父天体连线角度




x As Single


'


天体当前坐标




y As Single



xUp As Single


'


上一时刻坐标




yUp As Single



Visible As Boolean


'


是否显示:球体




ShowCap As Boolean


'


是否显示:标题




GuiDao As Boolean


'


是否显示:轨道




GuiJi As Boolean


'


是否显示:轨迹




Img As StdPicture


'


天体



3D


图像




LineFu As Boolean


'


与父天体的中心连线



End Type



'


定义小行星类型



Private Type tySmall



a As Single


'


轨道:横半径




b As Single


'


轨道:纵半径




Jiao As Single


End Type



Enum MenuSet



'


以下为



选项菜单



标示




ms_Size = -11


'


设置字体大小




ms_RunStop = -10


'


开始


/


暂停




ms_3D = -9


'3D


立体图像




ms_ColorXX = -8


'


是否显彩色星星




ms_ShowXX = -7


'


是否显示闪烁的星星




ms_DefSet = -6


'


默认设置




ms_Track = -5


'


轨迹:显示


/


隐藏




'


以下为



菜单全选、全不选




ms_Wei = -4



ms_Xing = -3



ms_All = -2



ms_NoAll = -1



'


以下为



按钮



标示




ms_Step = 0


'


步进,下一位置




ms_UnRun


'


后退




ms_Opt


'


显示选项菜单




ms_Center


'


参照系




ms_Visible


'


天 体:显示


/


隐藏




ms_ShowCap


'


天体名称




ms_GuiDao


'


轨道




ms_GuiJi


'


轨迹




ms_LineFu


'


与父天体的中心连线




ms_Bi


'


缩放比




ms_V


'


速度




ms_SeeJ


'


视角



End Enum


Private


Declare


Function


GdiTransparentBlt


Lib



(ByVal


hdc1


As


Long,


ByVal


X1


As


Long, ByVal y1 As Long, ByVal W1 As Long, ByVal H1 As Long, ByVal Hdc2 As Long, ByVal


X2 As Long, ByVal Y2 As Long, ByVal W2 As Long, ByVal H2 As Long, ByVal Color As Long)


As Long



Private Sub Form_Load()



ode = 3: n =


太阳系行星运行演示




e = False: ctP180 = 3.1415926



ctP90 = ctP180 * 0.5: ctP360 = ctP180 * 2: ctP270 = ctP90 * 3




al = 25: d = True



Call Init




'


窗体大小为屏幕的



3/4


,居中




* 0.1, * 0.1, * 0.8, * 0.8


End Sub



Private Sub Form_Resize()



Dim I As Long, L As Single, t As Single, H As Single, H1 As Single, W As Single




'


设置控件位置




H1 = ight(




L = 3



For I = 0 To - 1



W = dth(Command1(I).Caption &



Command1(I).Move L, t, W, H1 * 2



L = L + W + 3



Next




t = t * 2 + Command1(0).Height: H = eight - t



If H > 0 Then 0, t, idth, H




'




Picture1


的中心设置为坐标原点




ode = 3



eft = -idth * 0.5



op = -eight * 0.5





Call Run1


End Sub



Private Sub Init()



'


初始化天体参数




Dim I As Long, K As Long, S As Long




ctBW = 0


' 40 '


四周边界空白区,仅用于调试。调试完毕应设为



0


。调试代码


****




draw = True: lor = &H180000



ode = 3




Style = 0: ode = 3



draw = True: e = False



lor = lor




ctSize = 9



ctCenter = 0: ctBi = 1: ctV = 1


'


参照系(位于中心的天体)


,缩放比列,速度




ctSeeJ = 30: ctSeeBi = ctSeeJ / 90


'


视点角度,视角比




ctTrack = False


'


默认:不显示运动轨迹(不是轨道)




ct3D = True


'


默认:


3D


立体图像




ctShowXX = True


'


默认:显示闪烁的星星




Call RndXX


'


初始闪烁的星星





'


添加按钮




KjCls Command1: Command1(0).BackColor = lor



KjAdd Command1,


选项


(&O)


设置选项




KjAdd Command1,

< br>进


(&W)


步进,运行到下一位置




KjAdd Command1,


退


(&T)


步进,后退到上一位置




KjAdd Command1,


参照系


(&C)


设置参照系(位于中心的天体)




KjAdd Command1,


天体


(&X)


天体:显示


/


隐藏




KjAdd Command1, < /p>


名称


(&M)


天体名称:显示

< p>
/


隐藏




KjAdd Command1,


轨道


(&D)


天体运行轨道:显示


/


隐藏




KjAdd Command1,


轨迹


(&J)


运 动轨迹,选中



选项


-


显示运动轨迹



时有效




KjAdd Command1,


连线


(&L)


与父天体的中心连线,同时显示对应天体时


有效




KjAdd Command1,


速度


(&V)


,


设置速度




KjAdd Command1,


视角


(&S)


设置视点角度




KjAdd Command1,


缩放


(&F)


设置缩放比列





'


添加天体(演示比列状态下)


,半径以



100


像素为标准



< br>'


参数依次是:名称,父天体名称,天体半径,轨道长半轴,轨道偏心率,运动角 速度,轨


道倾角,天体颜色,初始角度,彗星否




ctDs = -1: ReDim ctD(0 To 0)



AddCircle


太阳




AddCircle


水星




AddCircle


金星




AddCircle


地球




AddCircle


月亮


< p>
地球




' < /p>


ctD(CapToNum(


月亮



调试代码


****




AddCircle


嫦娥


1




月亮




AddCircle


火星




AddCircle


火卫


1


火星




AddCircle


火卫


2


火星




AddCircle


小行星



'


小行星轨道倾角多少?




ctD(CapToNum(


小行星





AddCircle


木星




AddCircle


木卫


1


木星




AddCircle


木卫


2


木星




AddCircle


木卫


3


木星




AddCircle


木卫


4


木星




AddCircle


土星




AddCircle


土卫


6


土星




AddCircle


天王星




AddCircle


天卫


3


天王星




AddCircle


天卫


4


天王星




AddCircle


海王星




AddCircle


海卫


1


海王星




AddCircle


哈雷彗星



ctD(CapToNum(


哈雷彗星




'


初始化小行星




For K = 0 To ctDs



If ctD(K).IsSmall Then



ctD(K).GuiDao = False: ctSmalls = 90


'


小行星



总个数




S = ctD(K).b * 0.07


' 12


'


小行星带宽度




ReDim ctSmall(0 To ctSmalls)



ctSmall(0).a = ctD(K).a: ctSmall(0).b = ctD(K).b



For I = 1 To ctSmalls



Randomize I



ctSmall(I).a = Rnd * S - S * 0.5 + ctD(K).a



ctSmall(I).b = Rnd * S - S * 0.5 + ctD(K).b



ctSmall(I).Jiao = Rnd * ctP360



Next



Exit For



End If



Next




Call SortB


'


将天体按轨道短半径从小到大排序 ,用数组



ctB()


记忆排序结果(天体序


号)




Call DrawAllBall


'


绘制所有天体的



3D


立体图像,存入天体变量



ctD(I).Img




Call Form_Resize


End Sub



Private Sub RndXX()



Dim I As Long, J As Long



ctXs = 90


'


闪烁的星星个数




ReDim ctX(0 To ctXs)



For I = 0 To ctXs



Randomize I



ctX(I).x


=


Rnd


*



/


erPixelX


-



/


erPixelX * 0.5



ctX(I).y


=


Rnd


*



/


erPixelY


-



/


erPixelY * 0.5



Randomize



ctX(I).r = 2 * Rnd: ctX(I).t = 6 * Rnd



If ctColorXX Then



ctX(I).Se = &HFFFFFF * Rnd



Else



J = 255 * Rnd: ctX(I).Se = RGB(J, J, J)



End If



Next


End Sub



Private Sub DrawAllBall(Optional I As Long = -1, Optional ShowInf As Boolean)



'


绘制所有天体的



3D


球形图像




Dim r As Long, nStr As String, x As Single, y As Single



If I > -1 Then GoSub SubDraw1: Exit Sub



ointer = 11



= 32



For I = 0 To ctDs



If ShowInf Then



If I = 0 Then nStr =



nStr =


正在更新图像





x = -dth(nStr) * 0.5: y = -ight(nStr) * 0.5



(x, y)-Step(-x * 2, -y * 2), &H776633, BF



tX = x: tY = y



nStr



h



End If



GoSub SubDraw1



Next





0, 0, 2, 2



ointer = 0



' doe




Exit Sub



SubDraw1:



r = ctBi * ctD(I).r



If r < 2 Then r = 2



DrawBall r, r, r, &HFFFFFF, ctD(I).Se



Set ctD(I).Img =



Return


End Sub



Private Sub DrawBall(r As Long, ByVal x0 As Long, ByVal y0 As Long, Se1 As Long, Se2 As


Long)



'


画一个立体球图案




Dim GDs As Long, r0 As Single, rG As Single



Dim StepR As Single, StepG As Single, StepB As Single



Dim x As Long, y As Long, X1 As Long, y1 As Long, Bi As Single



Dim R1 As Long, G1 As Long, B1 As Long, R2 As Long, G2 As Long, B2 As Long




GetRGB Se1, R1, G1, B1: GetRGB Se2, R2, G2, B2






= r * 2 + 1: = r * 2 + 1




GDs = 6


'


与背景的过渡带





X1 = r * 0.6: y1 = r * 0.6


'


高光中心点




rG = Sqr((X1 - x0) ^ 2 + (y1 - y0) ^ 2)


'


高光





中心



的距离





StepR = R2 - R1: StepG = G2 - G1: StepB = B2 - B1




For y = 0 To eight



For x = 0 To idth



r0 = Sqr((x - x0) ^ 2 + (y - y0) ^ 2)



If r0 > r Then GoTo Next1


'


在球外





r0 = Sqr((x - X1) ^ 2 + (y - y1) ^ 2)



Bi = r0 / (r + rG)



If Bi > 1 Then GoTo Next1



(x, y), RGB(R1 + StepR * Bi, G1 + StepG * Bi, B1 + StepB * Bi)


Next1:



Next



Next


'


e = True



End Sub



Private Sub Command1_Click(Index As Integer)



Dim I As Long, J As Long, nStr As String, Zu As Variant



Dim nSel As Long, nAll As Long, nNo As Long




ctSet = Val(Command1(Index).Tag)


'


得到按钮标示




KjCls mmFast


'


清除菜单





'


装载快捷菜单,并勾选选定项目




Select Case ctSet



Case ms_Step


'


步进,前进到下一位置




If Not d Then Run1 True



d = False



Case ms_UnRun


'


步进,后退到下一位置




If Not d Then Run1 True, True



d = False



Case ms_Bi


'


缩放比列




Zu = Array(0.1, 0.2, 0.3, 0.4,



KjAddZu mmFast, Zu, ctBi,




'

添加数组菜单,并勾选



ctBi




Case ms_SeeJ


'


视点角度




Zu = Array(


度(天球北极)























< br>度







度(天球赤道)




KjAddZu mmFast, Zu, ctSeeJ: GoTo Show1


'


添加数组菜单,并勾选



ctSeeJ




Case ms_V


'


速度




Zu = Array(0.1, 0.2, 0.3, 0.4,



KjAddZu mmFast, Zu, ctV


,





Case ms_Opt


'


选项




I = KjAdd(mmFast,


状态




mmFast(I).Checked = d



If d Then mmFast(I).Caption =

状态:


运行中



=


状态:已暂停




mmFast(I).Caption = mmFast(I).Caption &


(双击图像区可改变状态)





I


=


KjAdd(mmFast,





3D


立体图像显示天体



ms_3D):


mmFast(I).Checked


=


ct3D



I = KjAdd(mmFast,


闪烁的星星




I = KjAdd(mmFast,


彩色小星星

< p>
(同时选中



闪烁的星星



时有效)



mmFast(I).Ch ecked = ctColorXX



I = KjAdd(mmFast,


显示运动轨迹




KjAdd mmFast,


字体大小:





KjAdd mmFast,



KjAdd mmFast,


恢复默认设置




GoTo Show1



Case Else


'


装载天体名称




For I = 0 To ctDs



J = Ji(I)


'


天体



I


的级别




KjAdd mmFast,



Next



End Select




'


勾选选定天体




Select Case ctSet



Case ms_Center: mmFast(ctCenter).Checked = True: GoTo Show1


'


参照系(中心天体)




Case ms_ShowCap


'


显示天体名称




For I = 0 To ctDs: mmFast(I).Checked = ctD(I).ShowCap: Next



Case ms_Visible


'


天体



是否可见




For I = 0 To ctDs: mmFast(I).Checked = ctD(I).Visible: Next



Case ms_GuiDao


'


轨道




For I = 0 To ctDs: mmFast(I).Checked = ctD(I).GuiDao: Next



Case ms_LineFu


'


连线




For I = 0 To ctDs: mmFast(I).Checked = ctD(I).LineFu: Next



Case ms_GuiJi


'


轨迹




For I = 0 To ctDs: mmFast(I).Checked = ctD(I).GuiJi: Next



Case ms_Opt


'


选项




Case Else: Exit Sub



End Select




KjAdd mmFast,



nAll = KjAdd(mmFast,


全选




KjAdd mmFast,


行星




KjAdd mmFast,


卫星




nNo = KjAdd(mmFast,


全不选




For I = 0 To ctDs



If mmFast(I).Checked Then nSel = nSel + 1



Next



If nSel = 0 Then mmFast(nNo).Checked = True: mmFast(nNo).Enabled = False



If nSel = ctDs + 1 Then mmFast(nAll).Checked = True: mmFast(nAll).Enabled = False




Show1:



Command1(Index).BackColor = &HFFCCCC


'


将选中按钮设置为淡蓝色




enu


mFast,


,


Command1(Index).Left,


Command1(Index).Top


Command1(Index).Height - 3



Command1(Index).BackColor = lor


End Sub



Private Sub mmFast_Click(Index As Integer)



'


通过快捷菜单设置天体有关参数




Dim nTag As MenuSet, I As Long, nStr As String



+



nTag = Val(mmFast(Index).Tag)


'


菜单标示:


ms_All


全选,


ms_NoAll


全不选





Select Case ctSet


'ctSet


:按钮标示,在



Command1_Click


中设置




Case ms_Opt


'


选项



菜单




Select Case nTag



Case ms_RunStop: d = Not d


'


运动


/


暂停




Case ms_ShowXX:


ctShowXX = Not ctShowXX


'


显示闪烁的星星




Case ms_ColorXX: ctColorXX = Not ctColorXX: Call RndXX


'


重新初始闪烁的星星




Case ms_3D:


ct3D = Not ct3D


'3D


立体图像




Case ms_Track:


ctTrack = Not ctTrack


'


运动轨迹




Case ms_DefSet:


Call Init


'


默认设置




Case ms_Size


'


设置字体




nStr = InputBox(


设置天体名称字体大小,范围


< p>
3-300




字体大小< /p>




If nStr =



I = Val(nStr)



If I < 3 Or I > 300 Then Exit Sub



ctSize = I



End Select



Case ms_V


'


速度




ctV = Val(mmFast(Index).Caption)



Case ms_SeeJ


'


视点角度




ctSeeJ = Val(mmFast(Index).Caption)


'


视点角度




ctSeeBi = ctSeeJ / 90


'


视角比




For I = 0 To ctDs: ctD(I).xUp = 0: ctD(I).yUp = 0: Next



Case ms_Bi


'


缩放比列




ctBi = Val(mmFast(Index).Caption)



For I = 0 To ctDs: ctD(I).xUp = 0: ctD(I).yUp = 0: Next



Call DrawAllBall(, True)


'


绘制所有天体的球形图像




Case ms_Center


'


参照系(中心天体)




ctCenter = Index



For I = 0 To ctDs: ctD(I).xUp = 0: ctD(I).yUp = 0: Next



Case ms_ShowCap


'


显示名称




If Index <= ctDs Then



ctD(Index).ShowCap = Not ctD(Index).ShowCap



Else



For I = 0 To ctDs: ctD(I).ShowCap = OptSet(I, nTag): Next



End If



Case ms_Visible


'


天体



是否可见




If Index <= ctDs Then



ctD(Index).Visible = Not ctD(Index).Visible



Else



For I = 0 To ctDs: ctD(I).Visible = OptSet(I, nTag): Next



End If



Case ms_GuiDao


'


轨道


-


-


-


-


-


-


-


-



本文更新与2021-02-28 08:20,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/679844.html

天体运行程序代码的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文