VB中如何做到在一个窗体内,一个对象会在里面弹来弹去,且碰到边框做的随机角度反弹运动

求高手在线等了这么久,没一个答得上的,拜托各位高手帮下小妹我啦,在线继续等~~~~真的没人能写得出代码?各大VB论坛,问问(最垃圾,全部只是为刷分的家伙),各大搜索引擎,... 求高手
在线等了这么久,没一个答得上的,拜托各位高手帮下小妹我啦,在线继续等~~~~真的没人能写得出代码?各大VB论坛,问问(最垃圾,全部只是为刷分的家伙),各大搜索引擎,最后连百度也没一个人会做这个,唉,无奈~~~
展开
 我来答
拾光1991
2011-05-19 · TA获得超过157个赞
知道答主
回答量:103
采纳率:0%
帮助的人:35.8万
展开全部
插入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
jghuhg
2011-05-18 · TA获得超过157个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:216万
展开全部
添加一个时间控件(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
更多追问追答
追问
在线等~~
你的代码只能调整标签的速度大小,而且跟随机角度没多大关系,可以帮忙调整下吗?
追答
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miaosung
2011-05-18 · TA获得超过186个赞
知道答主
回答量:100
采纳率:0%
帮助的人:67万
展开全部
检查对象left、top、left+width、top+height值,然后用RAND获取随机数,作为反弹角度
更多追问追答
追问
这些我都懂,就是不懂如何用RND函数编写反弹角度以及如何如何达到随机反弹,在线等
追答
首先获得随机数作为角度Angle=RND()
由于RND()获得0-1的小数,而反弹角度为0-180度
因此要给Angle*3.14,才能获得任意范围的角度
然后判断碰到的是窗体的那个边,再重新计算、设置对象位置
do
对象.left=.left+sin(angle)
...
loop
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皮肉丸9s
2011-05-18 · TA获得超过125个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:238万
展开全部
说的都详细啊,你可以先试试,不行的话我来帮你
追问
我全试过了,都不行呀,555555555555555555,能不能弄个详细的给我,我研究了几天了,天天熬夜呢!老不成功!你能帮忙做个吗?
追答
好吧。说一下你邮箱,我做好后发给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式