Top.Mail.Ru
Ответы
Аватар пользователя
5мес
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Возможно на Visual Basic написать программу бегающего человечка?

По дате
По рейтингу
Аватар пользователя
Новичок
5мес
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
 Imports System.Drawing 
Imports System.Windows.Forms 
 
Public Class Form1 
 
    Private manX As Integer = 50 ' Начальная X-координата 
    Private manY As Integer = 100 ' Y-координата (не меняется) 
    Private frame As Integer = 0 ' Текущий кадр анимации 
    Private direction As Integer = 1 ' Направление движения (1 - вправо, -1 - влево) 
    Private frameWidth As Integer = 40 ' Ширина кадра 
    Private frameHeight As Integer = 60 ' Высота кадра 
    Private frames As List(Of Point()) 
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
        ' Создаем кадры анимации 
        frames = New List(Of Point()) 
 
        ' Кадр 1 
        frames.Add({New Point(0, 0), New Point(20, 10), New Point(20, 20), New Point(10, 30), New Point(25, 40), New Point(10, 40)}) 
        ' Кадр 2 
        frames.Add({New Point(10, 0), New Point(30, 10), New Point(30, 20), New Point(20, 30), New Point(35, 40), New Point(20, 40)}) 
        ' Кадр 3 
        frames.Add({New Point(10, 0), New Point(20, -5), New Point(20, 20), New Point(10, 30), New Point(25, 40), New Point(10, 40)}) 
       ' Кадр 4 
        frames.Add({New Point(0, 0), New Point(10, -5), New Point(20, 20), New Point(20, 30), New Point(35, 40), New Point(20, 40)}) 
 
        ' Настройка таймера 
        Timer1.Interval = 100  ' Скорость анимации (чем меньше, тем быстрее) 
        Timer1.Start() 
 
        DoubleBuffered = True ' Устранение мерцания 
    End Sub 
 
    Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint 
        ' Рисуем человечка текущим кадром 
        Dim g As Graphics = e.Graphics 
        Dim points() As Point = frames(frame) 
        Dim scaleX = 10 
        Dim scaleY = 10 
 
        ' Рисуем туловище 
        g.FillRectangle(Brushes.Blue, manX + (points(0).X *scaleX), manY + (points(0).Y*scaleY), 10, 30) 
        ' Рисуем голову 
        g.FillEllipse(Brushes.Red, manX + (points(0).X *scaleX)-3, manY + (points(0).Y * scaleY)-7, 15, 15) 
        ' Рисуем левую ногу 
        g.DrawLine(Pens.Black, manX+ (points(3).X * scaleX) , manY + (points(3).Y*scaleY), manX + (points(4).X *scaleX), manY + (points(4).Y*scaleY)) 
         ' Рисуем правую ногу 
        g.DrawLine(Pens.Black, manX+ (points(3).X * scaleX), manY + (points(3).Y*scaleY), manX + (points(5).X*scaleX), manY + (points(5).Y *scaleY)) 
 
        'Рисуем левую руку 
        g.DrawLine(Pens.Black, manX + (points(1).X*scaleX), manY + (points(1).Y*scaleY), manX + (points(0).X*scaleX), manY + (points(0).Y*scaleY) + 15) 
 
         'Рисуем правую руку 
        g.DrawLine(Pens.Black, manX+ (points(2).X*scaleX), manY + (points(2).Y*scaleY), manX + (points(0).X * scaleX), manY + (points(0).Y * scaleY) + 15) 
 
    End Sub 
 
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 
        ' Обновляем кадр анимации 
        frame = (frame + 1) Mod frames.Count 
        ' Передвигаем человечка 
        manX += 5 * direction 
 
        ' Проверяем, не достиг ли край формы 
        If manX + frameWidth > Me.ClientSize.Width Or manX < 0 Then 
            direction *= -1 ' Меняем направление 
        End If 
 
        Me.Invalidate() ' Перерисовываем форму 
    End Sub 
End Class 
Аватар пользователя
Просветленный
5мес

да хоть на ткацком станке