VB中如何做到在一个窗体内,一个对象会在里面弹来弹去,且碰到边框做的随机角度反弹运动
求高手在线等了这么久,没一个答得上的,拜托各位高手帮下小妹我啦,在线继续等~~~~真的没人能写得出代码?各大VB论坛,问问(最垃圾,全部只是为刷分的家伙),各大搜索引擎,...
求高手
在线等了这么久,没一个答得上的,拜托各位高手帮下小妹我啦,在线继续等~~~~真的没人能写得出代码?各大VB论坛,问问(最垃圾,全部只是为刷分的家伙),各大搜索引擎,最后连百度也没一个人会做这个,唉,无奈~~~ 展开
在线等了这么久,没一个答得上的,拜托各位高手帮下小妹我啦,在线继续等~~~~真的没人能写得出代码?各大VB论坛,问问(最垃圾,全部只是为刷分的家伙),各大搜索引擎,最后连百度也没一个人会做这个,唉,无奈~~~ 展开
4个回答
展开全部
插入command1 , timer1
Option Explicit
Dim pi As Double '定义圆周率
Dim sta As Double '定义角度
Dim x As Double '定义移动的横行距离
Dim y As Double '定义移动的竖直距离
Private Sub Form_Load()
Call movec '调用函数,随机产生角度
End Sub
Private Sub Timer1_Timer()
If Command1.Left <= 0 Then
Call move1
End If
If Command1.Top <= 0 Then
Call move2
End If
If Form1.ScaleWidth - Command1.Left <= Command1.Width Then
Call move3
End If
If Form1.ScaleHeight - Command1.Top <= Command1.Height Then
Call move4
End If
Command1.move Command1.Left + x, Command1.Top + y
End Sub
Public Sub movec()
Randomize
pi = 3.14
sta = Rnd * pi
x = Sin(sta) * 100
y = Cos(sta) * 100
End Sub
Public Sub move1()
Randomize
pi = 3.14
sta = Rnd * pi
x = Sin(sta) * 100 '控制x为正,y随机,于是对象向右边的某个角度移动
y = Cos(sta) * 100
End Sub
Public Sub move2()
Randomize
pi = 3.14
sta = (Rnd - 0.5) * pi
x = Sin(sta) * 100 '控制x随机,y为正,于是对象向下方某个角度移动
y = Cos(sta) * 100
End Sub
Public Sub move3()
Randomize
pi = 3.14
sta = -Rnd * pi
x = Sin(sta) * 100 '控制x为负,y随机,于是对象向上方某个角度移动
y = Cos(sta) * 100
End Sub
Public Sub move4()
Randomize
pi = 3.14
sta = (Rnd + 0.5) * pi
x = Sin(sta) * 100 '控制x随机,y为负,于是对象向左方某个角度移动
y = Cos(sta) * 100
End Sub
Option Explicit
Dim pi As Double '定义圆周率
Dim sta As Double '定义角度
Dim x As Double '定义移动的横行距离
Dim y As Double '定义移动的竖直距离
Private Sub Form_Load()
Call movec '调用函数,随机产生角度
End Sub
Private Sub Timer1_Timer()
If Command1.Left <= 0 Then
Call move1
End If
If Command1.Top <= 0 Then
Call move2
End If
If Form1.ScaleWidth - Command1.Left <= Command1.Width Then
Call move3
End If
If Form1.ScaleHeight - Command1.Top <= Command1.Height Then
Call move4
End If
Command1.move Command1.Left + x, Command1.Top + y
End Sub
Public Sub movec()
Randomize
pi = 3.14
sta = Rnd * pi
x = Sin(sta) * 100
y = Cos(sta) * 100
End Sub
Public Sub move1()
Randomize
pi = 3.14
sta = Rnd * pi
x = Sin(sta) * 100 '控制x为正,y随机,于是对象向右边的某个角度移动
y = Cos(sta) * 100
End Sub
Public Sub move2()
Randomize
pi = 3.14
sta = (Rnd - 0.5) * pi
x = Sin(sta) * 100 '控制x随机,y为正,于是对象向下方某个角度移动
y = Cos(sta) * 100
End Sub
Public Sub move3()
Randomize
pi = 3.14
sta = -Rnd * pi
x = Sin(sta) * 100 '控制x为负,y随机,于是对象向上方某个角度移动
y = Cos(sta) * 100
End Sub
Public Sub move4()
Randomize
pi = 3.14
sta = (Rnd + 0.5) * pi
x = Sin(sta) * 100 '控制x随机,y为负,于是对象向左方某个角度移动
y = Cos(sta) * 100
End Sub
展开全部
添加一个时间控件(timer),一个标签(label1),
'随机移动的标签Dim l, t
Dim l, t
Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = True
Timer1.Interval = 1000
Randomize
l = Int(Rnd * 5000 + 0)
t = Int(Rnd * 2000 + 0)
Label1.Left = Me.Left + l
Label1.Top = Me.Top + t
End Sub
'随机移动的标签Dim l, t
Dim l, t
Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = True
Timer1.Interval = 1000
Randomize
l = Int(Rnd * 5000 + 0)
t = Int(Rnd * 2000 + 0)
Label1.Left = Me.Left + l
Label1.Top = Me.Top + t
End Sub
更多追问追答
追问
在线等~~
你的代码只能调整标签的速度大小,而且跟随机角度没多大关系,可以帮忙调整下吗?
追答
Private Sub Form_Load()
Label1.Caption = "字"
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
Sub timer1_timer()
x = Rnd() * Form1.Width
y = Rnd() * Form1.Height
Label1.Left = x
Label1.Top = y
Form1.Refresh
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
检查对象left、top、left+width、top+height值,然后用RAND获取随机数,作为反弹角度
更多追问追答
追问
这些我都懂,就是不懂如何用RND函数编写反弹角度以及如何如何达到随机反弹,在线等
追答
首先获得随机数作为角度Angle=RND()
由于RND()获得0-1的小数,而反弹角度为0-180度
因此要给Angle*3.14,才能获得任意范围的角度
然后判断碰到的是窗体的那个边,再重新计算、设置对象位置
do
对象.left=.left+sin(angle)
...
loop
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说的都详细啊,你可以先试试,不行的话我来帮你
追问
我全试过了,都不行呀,555555555555555555,能不能弄个详细的给我,我研究了几天了,天天熬夜呢!老不成功!你能帮忙做个吗?
追答
好吧。说一下你邮箱,我做好后发给你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询