
在窗体中放入一个Shape1和一个Timer1,编程如下:
Private Sub Form_Load()Shape1.FillStyle = 0
Shape1.FillColor = vbRed
Shape1.Shape = 3
Shape1.Move 0, 0, 450, 450
Timer1.Interval = 30
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Static mx As Integer, my As Integer
Dim cx As Single, cy As Single
cx = Shape1.Left
cy = Shape1.Top
If (cx = 0 And cy <= 0) Or (mx = 0 And my = 0) Then
mx = 30
my = 0
cx = 0
cy = 0
ElseIf cx >= Me.ScaleWidth - Shape1.Width And cy = 0 Then
mx = 0
my = 30
cx = Me.ScaleWidth - Shape1.Width
cy = 0
ElseIf cx = Me.ScaleWidth - Shape1.Width And cy >= Me.ScaleHeight - Shape1.Height Then
滑雹森mx = -30
信亩 my = 0
cx = Me.ScaleWidth - Shape1.Width
cy = Me.ScaleHeight - Shape1.Height
ElseIf cx <= 0 And cy = Me.ScaleHeight - Shape1.Height Then
mx = 0
my = -30
cx = 0
肆首 cy = Me.ScaleHeight - Shape1.Height
End If
Shape1.Move cx + mx, cy + my
End Sub
很简单的嘛,就是一个图片框(P1)加一个图像框,一个文本框,一个按控件,一个时钟啦
是利用它们的左右距离参数正耐的。
可以拆清友不用他的题目,他的题目太简单了,就是一个图片的可见和旅槐不可见,
我们可以让时间改变小球位置来实现的
比如时钟的,P1.HEIGHT=P1.HEIGHT+X
其中X可以为图像框的高度允许的任意值
时钟那么简单就不用说了吧
分类: 电脑/网络 >>程序设计 >>其他编程语言解析:
希望你能把问题说得详细一些,怎样叫自由运动?是随机运动?还是受某些力(如重力)的影响,是否有惯性?
下面一段程序是从我以前的一个练习程序中提取的,有一些改动,以满足题目。
Private Cosnt LIMIT_TOP = ?
Private Cosnt LIMIT_BUTTOM = ?
Private Cosnt LIMIT_LEFT = ?
Private Cosnt LIMIT_RIGHT = ?
'设置运动范围
Private PI = 3.14159 '定义Pi(求三角函数用弧度作单位,所以需要Pi)
Private Const MOVE_SPEED = 10 '设置移动速度
Private Const TURN_SPEED = 4 '设置转弯速度
Private Const MOVE_STEPS = 9 '设置每走9步转一次小弯
Private Const TURN_STEPS = 50 '设置每走50步改变一次转弯方向
Private Sub Timer1_Timer()
Static Direct As Long, n As Long, Turn As Long
'Direct 运动方向;n 计数,每走n步饥如稿改变一次转弯方向,它的使用使得运动看起来比较平滑; Turn转弯方向
n = n + 1
If n = TURN_STEPS Then
n = 0
Randomize
Turn = TURN_SPEED * (Int(Rnd * 3) - 1)
End If
'每走50步随机产烂孝生转弯的方向
If n Mod MOVE_STEPS = 0 Then
Direct = Direct + Turn
If Direct <0 Then Direct = Direct + 2*PI
If Direct >2*PI Then Direct = Direct - 2*PI '换算,使角度始终在函数定义域内
End If
'每走9步软一次小弯
Call Sphere.Move (Sphere.Left + Cos(Dire ) * MOVE_SPEED, Sphere.Top - Sin(Dire) * MOVE_SPEED)
'移动小球
If Sphere.Top <LIMIT_TOP Then
Dire = 1.5*PI
ElseIf Sphere.Top >LIMIT_BOTTOM Then
Dire = 0.5*PI
ElseIf Sphere.Left <LIMIT_LEFT Then
Dire = 0
ElseIf Sphere.Left >LIMIT_RIGHT Then
Dire = PI
End If
'判断小球是否到达边界,如到达边界,则改变方向橡丛
End Sub
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)