Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: sur.hotbox.ru/
 Профиль | | #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-сайт: 123
 Профиль | | #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, отлично сказано!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам