Страница: 1 |
Страница: 1 |
Вопрос: Движение. Как сделать.
Добавлено: 12.08.05 11:54
Автор вопроса: Pank | ICQ: 317309293
Подскажите как сделать?Сама идея - что-то типа гонок.Так вот смысл.Из максимальной точки объект движеться в минимальную по оси Х, и уходит вообще за область, через некоторое время появляется тоже самое но в другой координате У.Все с помощью таймера. И как сделать чтоб объект не проходил сквозь другой объект, а получалось препятствие.
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Sergey
Вопросов: 1
Ответов: 1
Профиль | | #1
Добавлено: 12.08.05 12:45
Советую обратиться на реальный форум www.delphimaster.ru,
обязательно подскажут, а перевести код с Delphi на Бэйсик (если на нем кодишь) особого труда не составит. Я сам здесь в первые, и вижу что форум скоро мхом покроется
Номер ответа: 2
Автор ответа:
K&M
Вопросов: 5
Ответов: 28
Профиль | | #2
Добавлено: 12.08.05 14:21
Ну сделай Rectangle для своего объекта и массив Rectangle для всех препятствий и при каждом движении сравнивай циклом чтоб Rectangle твоей машинки не пересекся ни с одним из Rectangle'ов препятствий - иначе принимай меры. Если я тебя не правильно понял объясни более подробно.
Сам ты им покроешься... не нравится не сиди! )
Номер ответа: 3
Автор ответа:
Pank
ICQ: 317309293
Вопросов: 17
Ответов: 17
Профиль | | #3
Добавлено: 12.08.05 15:07
ну с препятствиями более менее понятно, если бы еще кусочек кода , а то я не сильно понимающий. А вот ка быть с движением по таймеру?
Номер ответа: 4
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #4
Добавлено: 12.08.05 17:48
Вот это посмотрите... прикольно
на форме таймер и Shape1 тип=3
Dim Ang As Integer
Dim pi As Double
Dim Px1 As Integer
Dim Py1 As Integer
Dim Px2 As Integer
Dim Py2 As Integer
Dim Grad As Double
Dim BallSpeed As Double
Private Sub Form_Load()
Ang = 70 'Angle of ball
pi = 3.141592654
BallSpeed = 30 'Speed of ball
For i = 0 To 6 'Spread lines out along form
Line1(i).X1 = (6000 * i / 6) - 1000
Line1(i).X2 = (6000 * (i + 1) / 6) - 1000
Next
For i = 0 To 6 'Create initial sine curve
Line1(i).Y1 = Form1.Height - 1000 - Sin(Line1(i).X1) * 400
Line1(i).Y2 = Form1.Height - 1000 - Sin(Line1(i).X2) * 400
Next
End Sub
Private Sub Timer1_Timer()
Shape1.Left = Shape1.Left + Cos(Ang * (pi / 180)) * BallSpeed ' Move ball
Shape1.Top = Shape1.Top + Sin(Ang * (pi / 180)) * BallSpeed ' Move ball
If Shape1.Left < 0 Then Ang = 180 - Ang ' Bounce off left border
If Shape1.Left + Shape1.Width > Form1.Width Then Ang = 180 - Ang ' Bounce off right border
If Shape1.Top < 0 Then Ang = 360 - Ang ' Bounce off top border
For i = 0 To 7 'Detect collision and change angle of ball
Px1 = Line1(i).X1 ' Assign line values to variables
Py1 = Line1(i).Y1
Px2 = Line1(i).X2
Py2 = Line1(i).Y2
Grad = (Py1 - Py2) / (Px1 - Px2) 'Determine gradient of current line
' If ball is over lines first x value and less than lines second value
' and ball is lower than position on line (Shape1.Top + Shape1.Height > Grad * (Shape1.Left - Px1) + Py1) then
If Shape1.Left > Px1 And Shape1.Left < Px2 And Shape1.Top + Shape1.Height > Grad * (Shape1.Left - Px1) + Py1 Then
Ang = 360 - (Ang - Atn(Grad) / (pi / 180)) ' Change direction of ball
Shape1.Top = Grad * (Shape1.Left - Px1) + Py1 - Shape1.Height 'Put ball where it should be (on line)
End If
Next
For i = 0 To 6
Line1(i).X1 = Line1(i).X1 - 1 ' Move line to the left
Line1(i).X2 = Line1(i).X2 - 1
If Line1(i).X2 < 0 - 1000 Then ' If its to far left move it back to the right
difference = Line1(i).X1 - Line1(i).X2
Line1(i).X1 = 6000 + (6000 / 6) - 1000
Line1(i).X2 = Line1(i).X1 + difference
End If
Next
For i = 0 To 6 ' Calculate new sine graph
Line1(i).Y1 = Form1.Height - 1000 - Sin(Line1(i).X1 * (pi / 180)) * 400
Line1(i).Y2 = Form1.Height - 1000 - Sin(Line1(i).X2 * (pi / 180)) * 400
Next
End Sub
Номер ответа: 5
Автор ответа:
someone
Вопросов: 215
Ответов: 1596
Web-сайт:
Профиль | | #5
Добавлено: 12.08.05 19:29
Сам ты им покроешься... не нравится не сиди! )
Cогласен, vbnet вечен
Номер ответа: 6
Автор ответа:
Black Dragon
ICQ: 321186096
Вопросов: 30
Ответов: 347
Web-сайт:
Профиль | | #6
Добавлено: 12.08.05 20:47
О, 2 K&M, отлично сказано!