' переменные
Dim x As Integer = 10
Dim y As Integer = 30
Dim x1 As Integer = 150
Dim y1 As Integer = 10
Dim dx1 As Integer = 1
Dim dy1 As Integer = 1
Dim xx As Integer = 30
Dim yy As Integer = 30
Dim L As Integer = 10
Dim U As Integer = 10
Dim R As Integer = 310
Dim D As Integer = 260
Dim dx As Integer = 2
Dim dy As Integer = 2
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' задаем переменные
Dim a As Graphics = PictureBox1.CreateGraphics
Dim b As Graphics = PictureBox1.CreateGraphics
Dim e1, e2, s1, s2 As Point
e1 = New Point(x, y)
e2 = New Point(x1, y1)
s1 = New Point(xx, yy)
s2 = New Point(xx, yy)
'очищаем
PictureBox1.Refresh()
'услолвия отрожения шарика от стены
If x < L Then dx = -dx
If y < U Then dy = -dy
If y > D Then dy = -dy
If x > R Then dx = -dx
If x1 < L Then dx1 = -dx1
If y1 < U Then dy1 = -dy1
If y1 > D Then dy1 = -dy1
If x1 > R Then dx1 = -dx1
' рисование самих шариков и задание движения
a.DrawEllipse(New Pen(Color.White), x, y, xx, yy)
b.DrawEllipse(New Pen(Color.Red, 2), x1, y1, xx, yy)
x1 = x1 + dx1
y1 = y1 + dy1
x = x + dx
y = y + dy
' попытка сделать отражение друг от друга, с условие вроде все ОК, но шарики начинают судорожно 'деркаться при касании друг друга
If ((e1.X <= e2.X And e2.X <= e1.X + s1.X) Or (e1.X <= e2.X + s2.X And e2.X + s2.X <= e1.X + s1.X)) And ((e1.Y <= e2.Y And e2.Y <= e1.Y + s1.Y) Or (e1.Y <= e2.Y + s2.Y And e2.Y + s2.Y <= e1.Y + s1.Y)) Then
dx = -dx
dy = -dy
dx1 = -dx1
dy1 = -dy1
End If
End Sub