采用VB编程:一个小球从100m高处自由落下,每次落地后反d回原高度的一半再落下,求它在第10次落

采用VB编程:一个小球从100m高处自由落下,每次落地后反d回原高度的一半再落下,求它在第10次落,第1张

Dim 高度 As Double = 100, 次数 = 0, 总量 = 100, 最后反d高 = 0

A:

高度 = 高度 / 2

总量 += 高度

次数 += 1

ConsoleWriteLine("{0} {1} {2}", 次数, 总量, 高度)

If 次数 < 10 Then GoTo A

我有窗口的d跳完整代码,可自行根据需要修改,有用请采纳,谢谢

'以下代码自动添加timer和调整form大小,仅供参考

'添加一个模块,写入

'=======================

Option Explicit

Type POINTAPI

X As Long

Y As Long

End Type

Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'=======================

'以下代码写入form中

'===========================

Option Explicit

Dim Vt, V0, t As Single

Dim CurXY As POINTAPI ' 声明变量

Dim X0, Y0, X1, Y1, MX, MY, N As Single

Dim meclick As Boolean

Private WithEvents Timer1 As Timer

Private WithEvents Timer2 As Timer

Private Sub Form_Load()

MeBorderStyle = 1

MeWidth = 2000

MeHeight = 2000

Set Timer1 = ControlsAdd("vbtimer", "timer1")

Timer1Interval = 10

Set Timer2 = ControlsAdd("vbtimer", "timer2")

Timer2Enabled = False

Timer2Interval = 10

End Sub

Sub ks()

V0 = 0

Vt = 0

t = 0

Timer1Enabled = True

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

ks

Timer1Enabled = False

Timer2Enabled = True

meclick = True

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

meclick = False

Dim NewForm As Form

Set NewForm = Form1

Form1Show

End Sub

Private Sub Timer1_Timer()

Dim a As Integer

a = 10

If MeTop + MeHeight > ScreenHeight Then

V0 = Int(Vt 09)

MeTop = ScreenHeight - MeHeight

If Abs(V0) < 09 Then

Timer1Enabled = False

End If

t = 0

End If

t = t + 1

Vt = a t - V0

MeTop = MeTop + Vt

If MeLeft < 0 Then MeLeft = 0

If MeLeft > ScreenWidth - MeWidth Then MeLeft = ScreenWidth - MeWidth

End Sub

Private Sub Timer2_Timer()

N = 009

X0 = MeLeft + MeWidth / 2

Y0 = MeTop + MeHeight / 2

If meclick = True Then

GetCursorPos CurXY

X1 = CurXYX 15

Y1 = CurXYY 15

End If

MX = (X1 - X0) N

MY = (Y1 - Y0) N

If Abs(MX) < 5 And Abs(MY) < 5 And meclick = False Then

Timer2Enabled = False

ks

End If

MeLeft = MeLeft + MX

MeTop = MeTop + MY

End Sub

Dim h As Integer, h0 As Integer, d As Integer, n As Integer

Private Sub Command1_Click()

Timer1Enabled = True

Command1Enabled = False

End Sub

Private Sub Form_Load()

Shape1Shape = 3

Shape1FillStyle = 0

Shape1FillColor = vbYellow

d = 1

Timer1Interval = 50

Timer1Enabled = False

h = Shape1Top

h0 = h

End Sub

Private Sub Timer1_Timer()

If d = 1 Then

If Shape1Top < Form1Height - 1500 Then

Shape1Top = Shape1Top + 50

Else

d = 0

h = Form1Height - 1500 - (Form1Height - 1500 - h) / 2

End If

Else

If Shape1Top > h Then

Shape1Top = Shape1Top - 50

Else

d = 1

n = n + 1

If n > 10 Then Timer1Enabled = False

End If

End If

End Sub

所需要控件:shape1,timer1,command1,command2

Dim degree As Single

Const pi = 31415926

Dim v As Integer

Dim r As Single

Private Sub Command1_Click()

Timer1Enabled = False

Form_Load

End Sub

Private Sub Command2_Click()

Timer1Enabled = True

End Sub

Private Sub Form_Load()

MeShow

Shape1Shape = 3

Timer1Enabled = False

Timer1Interval = 100

Shape1Left = MeWidth Rnd

Shape1Top = MeHeight Rnd

degree = 2 pi Rnd

v = 150

r = 1

Command1Caption = "结束"

Command2Caption = "开始"

End Sub

Private Sub Timer1_Timer()

If Shape1Top > 0 And Shape1Left > 0 And (Shape1Left + Shape1Width) < MeWidth And (Shape1Top + Shape1Height) < MeHeight Then

Shape1Top = Shape1Top + Sin(degree) v r

Shape1Left = Shape1Left + Cos(degree) v r

v = v r

Else

Timer1Enabled = False

Call chagestate

End If

End Sub

Public Sub chagestate()

If Shape1Top <= 0 Or (Shape1Top + Shape1Height) >= MeHeight Then

degree = 2 pi - degree

If Shape1Top <= 0 Then Shape1Top = 1

If (Shape1Top + Shape1Height) >= MeHeight Then Shape1Top = MeHeight - Shape1Height - 1

End If

If Shape1Left <= 0 Or (Shape1Left + Shape1Width) >= MeWidth Then

If (Shape1Left + Shape1Width) >= MeWidth Then Shape1Left = MeWidth - Shape1Width - 1

If Shape1Left <= 0 Then Shape1Left = 1

If degree < pi / 2 Then degree = pi / 2 + degree

If degree > pi / 2 And degree < pi Then degree = 3 pi / 2 - degree

If degree > pi Or degree < 2 pi Then degree = 3 pi - degree

End If

v = 150

Timer1Enabled = True

End Sub

以上就是关于采用VB编程:一个小球从100m高处自由落下,每次落地后反d回原高度的一半再落下,求它在第10次落全部的内容,包括:采用VB编程:一个小球从100m高处自由落下,每次落地后反d回原高度的一半再落下,求它在第10次落、用VB设计一个动画,小球的d跳运动,小球的滚动、通过VB编写程序,单击开始,实现一个小球从高处落下,碰到地面后d起到原来高度的一半,再次落下......等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9824727.html

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

发表评论

登录后才能评论

评论列表(0条)

保存