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

[复制链接]
查看11 | 回复10 | 2011-5-20 04:49:26 | 显示全部楼层 |阅读模式
求高手
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
插入command1,timer1
OptionExplicit
DimpiAsDouble\'定义圆周率
DimstaAsDouble\'定义角度
DimxAsDouble\'定义移动的横行距离
DimyAsDouble\'定义移动的竖直距离



PrivateSubForm_Load()
Callmovec\'调用函数,随机产生角度
EndSub

PrivateSubTimer1_Timer()
IfCommand1.Left=0Then
Callmove1
EndIf
IfCommand1.Top=0Then
Callmove2
EndIf
IfForm1.ScaleWidth-Command1.Left=Command1.WidthThen
Callmove3
EndIf
IfForm1.ScaleHeight-Command1.Top=Command1.HeightThen
Callmove4
EndIf

Command1.moveCommand1.Leftx,Command1.Topy


EndSub

PublicSubmovec()
Randomize
pi=3.14
sta=Rnd*pi
x=Sin(sta)*100
y=Cos(sta)*100
EndSub

PublicSubmove1()
Randomize
pi=3.14
sta=Rnd*pi
x=Sin(sta)*100\'控制x为正,y随机,于是对象向右边的某个角度移动
y=Cos(sta)*100
EndSub


PublicSubmove2()
Randomize
pi=3.14
sta=(Rnd-0.5)*pi
x=Sin(sta)*100\'控制x随机,y为正,于是对象向下方某个角度移动
y=Cos(sta)*100
EndSub
PublicSubmove3()
Randomize
pi=3.14
sta=-Rnd*pi
x=Sin(sta)*100\'控制x为负,y随机,于是对象向上方某个角度移动
y=Cos(sta)*100
EndSub
PublicSubmove4()
Randomize
pi=3.14
sta=(Rnd0.5)*pi
x=Sin(sta)*100\'控制x随机,y为负,于是对象向左方某个角度移动
y=Cos(sta)*100
EndSub
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
你能写个代码出来我瞧瞧吗?在线等!
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
这些我都懂,就是不懂如何用RND函数编写反弹角度以及如何如何达到随机反弹,在线等
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
首先获得随机数作为角度Angle=RND()
由于RND()获得0-1的小数,而反弹角度为0-180度
因此要给Angle*3.14,才能获得任意范围的角度
然后判断碰到的是窗体的那个边,再重新计算、设置对象位置
do
对象.left=.leftsin(angle)
...
loop
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
我比较笨,……,你能写清楚吗?我试了不行!整个写出来行不?小妹我先谢过了~我试过几回全都是无法响应,拜托这位大哥哥,帮帮忙,我在线等
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
在线等~~
你的代码只能调整标签的速度大小,而且跟随机角度没多大关系,可以帮忙调整下吗?
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
PrivateSubForm_Load()
Label1.Caption=\"字\"
Timer1.Enabled=True
Timer1.Interval=1000
EndSub

Subtimer1_timer()
x=Rnd()*Form1.Width
y=Rnd()*Form1.Height
Label1.Left=x
Label1.Top=y
Form1.Refresh
EndSub
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
请不要直接从百度上搜,OK?这个我已经试过的了,不行,我不要它到处出现,我要的是有固定的轨迹的,且碰到边框会随机一人角度进行反弹
回复

使用道具 举报

千问 | 2011-5-20 04:49:26 | 显示全部楼层
我全试过了,都不行呀,555555555555555555,能不能弄个详细的给我,我研究了几天了,天天熬夜呢!老不成功!你能帮忙做个吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行