Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Армат Арев Ученик (85), закрыт 1 неделю назад
Лучший ответ
Анонимус Просветленный (29127) 1 неделю назад
 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
Армат АревУченик (85) 1 неделю назад
"Timer1" не объявлена. Возможно, она недоступна из-за своего уровня защиты.
Для предложения Handles требуется переменная с модификатором WithEvents, определенная во вмещающем типе или в одном из его базовых типов.
Остальные ответы
Похожие вопросы