Ⅰ Eclipse 寫 java小程序。 6個小球碰撞反彈。我知道怎麼碰壁反彈。我想要在碰撞過程中小球互相碰撞也反彈。
給小球類定義一個方法:碰撞;然後當周圍環境的坐標到球心的距離等於小球的半徑時,小球的運動路徑演算法就應該是軸對稱的。先判斷之前的運動方向,然後根據運動方向確定新的運動方向。這個其實就是線性方程做小球的運動軌跡而已。
Ⅱ 怎樣控制小球碰壁後反彈vb編程
加一個picture1,timer1
Option Explicit
Private Const BallR = 200
Private Const BallD = 2 * BallR + 1
Private CurX As Single
Private CurY As Single
Private OldX As Single
Private OldY As Single
Private VelX As Single
Private VelY As Single
Private Xmax As Single
Private Ymax As Single
Private Sub DrawBall()
OldX = CurX
OldY = CurY
Me.picture1.FillColor = &HEE00CC
Me.picture1.FillStyle = 6
Me.picture1.Cls
picture1.Circle (CurX, CurY), BallR, vbRed
End Sub
Private Sub Form_Load()
Width = (Width - ScaleWidth) + picture1.Width
Height = (Height - ScaleHeight) + picture1.Height
Xmax = picture1.ScaleWidth - BallR
Ymax = picture1.ScaleHeight - BallR
Randomize
CurX = Int((Xmax - BallR + 1) * Rnd + BallR)
CurY = Int((Ymax - BallR + 1) * Rnd + BallR)
OldX = CurX
OldY = CurY
VelX = Int((40 - 20 + 1) * Rnd + 20)
VelY = Int((40 - 20 + 1) * Rnd + 20)
DrawBall
Timer1.Interval = 10
Timer1.Enabled = True
End Sub
Private Sub timer1_Timer()
CurX = CurX + VelX
If (CurX > Xmax) Then
CurX = Xmax
VelX = -VelX
' Beep
ElseIf (CurX < BallR) Then
CurX = BallR
VelX = -VelX
' Beep
End If
CurY = CurY + VelY
If (CurY > Ymax) Then
CurY = Ymax
VelY = -VelY
' Beep
ElseIf (CurY < BallR) Then
CurY = BallR
VelY = -VelY
' Beep
End If
DrawBall
End Sub