Страница: 1 |
|
Вопрос: Продолжение 2-х летнего проекта(Графика-Игра)
|
Добавлено: 17.02.08 20:42
|
|
Автор вопроса: Nikolai | ICQ: 455504541
|
Я думаю многим хочеться научиться чему-то где применяеться графика. 2 года назад я начинал на VBNet 2003 но потом продолжить не смог но смысл самого програмирования у меня есть (ZX-Spectrum давно это было)
Теперь хочу научиться на VBNet 2005. Короче начинался проект как игра чтоб там была графика (Спасибо Нижнему Новгороду за помощь)
Вот код:
Imports System.Windows.Forms
Public Enum ScreenOrientation
Angle0
Angle90
Angle180
Angle270
End Enum
Public Class frmShar
Inherits System.Windows.Forms.Form
Private MyKey As Keys
Private Delta As Integer = 3 ' Величина сдвига картинки (скорость движения)
Public MyGif As Bitmap = New Bitmap("SharStop.gif") ' Анимированный Gif
Public MyGif2 As Bitmap = New Bitmap("SharL.gif")
Public MyGif3 As Bitmap = New Bitmap("SharR.gif")
Private Animating As Boolean = False ' Стартовый флаг
Private Orientation As ScreenOrientation = ScreenOrientation.Angle0 ' Направление движения картинки
Private GifRectangle As New Rectangle ' Прямоугольник для вывода анимации
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
Me.SetStyle(ControlStyles.DoubleBuffer, True)
Me.UpdateStyles()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(frmShar))
Me.PictureBox1 = New System.Windows.Forms.PictureBox
Me.TextBox1 = New System.Windows.Forms.TextBox
Me.SuspendLayout()
'
'PictureBox1
'
Me.PictureBox1.Image = CType(resources.GetObject("PictureBox1.Image"), System.Drawing.Image)
Me.PictureBox1.Location = New System.Drawing.Point(240, 168)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(200, 24)
Me.PictureBox1.TabIndex = 0
Me.PictureBox1.TabStop = False
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(540, 272)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(60, 20)
Me.TextBox1.TabIndex = 1
Me.TextBox1.Text = "TextBox1"
'
'frmShar
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.BackgroundImage = CType(resources.GetObject("$this.BackgroundImage"), System.Drawing.Image)
Me.ClientSize = New System.Drawing.Size(856, 582)
Me.Controls.Add(Me.TextBox1)
Me.Controls.Add(Me.PictureBox1)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.Location = New System.Drawing.Point(20, 20)
Me.Name = "frmShar"
Me.Text = "Sharik"
Me.ResumeLayout(False)
End Sub
#End Region
Dim n As Integer
Dim q As Integer
Private Sub frmGDI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Enabled = False
'Задаем начальные координаты и размеры прямоугольника для вывода анимации
With GifRectangle
.X = 400
.Y = 30
.Width = MyGif.Width
.Height = MyGif.Height
End With
n = 0
End Sub
Public Sub StartAnimate()
If Not Animating Then
'Запускаем анимацию только 1 раз
ImageAnimator.Animate(MyGif, New EventHandler(AddressOf Me.NewAnimatedFrame))
'Устанавливаем флаг
Animating = True
End If
End Sub
Private Sub NewAnimatedFrame(ByVal o As Object, ByVal e As EventArgs)
'Инициируем перерисовку экрана в заданной области
Me.Invalidate(GifRectangle)
End Sub
Private Function CheckFormSize(ByVal Pos As Point) As Point
Dim W, H As Integer
Select Case Orientation
Case ScreenOrientation.Angle0, ScreenOrientation.Angle180
W = GifRectangle.Width
H = GifRectangle.Height
Case Else
W = GifRectangle.Height
H = GifRectangle.Width
End Select
If Pos.X + W > Me.ClientSize.Width Then
Pos.X = Me.ClientSize.Width - W
ElseIf Pos.X < 0 Then
Pos.X = 0
ElseIf Pos.Y + H > Me.ClientSize.Height Then
Pos.Y = Me.ClientSize.Height - H
ElseIf Pos.Y < 0 Then
Pos.Y = 0
End If
Return Pos
End Function
Private Sub frmShar_DoubleClick1(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DoubleClick
Me.Close()
End Sub
Private Sub frmShar_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
'If q <> 2 Then
' q = q + 1
' GoTo Conec
' Else
'Запоминаем позицию картинки
Dim Pos As Point = GifRectangle.Location
'Запоминаем регион,который занимает картинка
Dim Result As New Region(GifRectangle)
'Определяем, какая из клавиш была нажата и
'сдвигаем картинку в нужную сторону на величину Delta
Select Case e.KeyCode
Case Keys.Left
Pos.X -= Delta
'ImageAnimator.StopAnimate(MyGif, New EventHandler(AddressOf Me.NewAnimatedFrame))
' MyGif = New Bitmap("SharL.gif")
'Animating = False
If MyKey <> Keys.Left Then
ImageAnimator.StopAnimate(MyGif, New EventHandler(AddressOf Me.NewAnimatedFrame))
MyGif = New Bitmap("SharL.gif")
Animating = False
MyKey = Keys.Left
End If
Case Keys.Right
Pos.X += Delta
'ImageAnimator.StopAnimate(MyGif, New EventHandler(AddressOf Me.NewAnimatedFrame))
'MyGif = New Bitmap("SharR.gif")
'Animating = False
If MyKey <> Keys.Right Then
ImageAnimator.StopAnimate(MyGif, New EventHandler(AddressOf Me.NewAnimatedFrame))
MyGif = New Bitmap("SharR.gif")
Animating = False
MyKey = Keys.Right
End If
End Select
'Проверяем позицию картинки относительно границ формы
GifRectangle.Location = CheckFormSize(Pos)
'Перерисовываем область экрана с картинкой (с учетом движения)
Me.Invalidate(GifRectangle)
'Вычисляем регион,который составляет разницу между тем где была картинка ДО сдвига
'и нынешним её положением.Затем перерисовыем эту область. Если этого не сделать, то
'при движении картинки будет тянуться след равный величине Delta
Result.Exclude(GifRectangle)
Me.Invalidate(Result)
'q = 0
'GoTo con
'Conec:
' End If
'con:
End Sub
Private Sub frmShar_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
TextBox1.Text = n
'Запускаем Анимацию
StartAnimate()
'Меняем кадр анимации
ImageAnimator.UpdateFrames()
'Создаем новую картинку из текущего кадра
Dim Frame As New Bitmap(Me.MyGif)
'Рисуем новый кадр на экране в заданном месте
e.Graphics.DrawImage(Frame, GifRectangle)
'Убиваем ненужный объект
Frame.Dispose()
End Sub
Private Sub frmShar_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
ImageAnimator.StopAnimate(MyGif, New EventHandler(AddressOf Me.NewAnimatedFrame))
MyGif = New Bitmap("SharStop.gif")
Animating = False
End Sub
Private Sub l()
Select Case n
Case 1
Dim MyGif As Bitmap = New Bitmap("SharL.gif")
Case 2
Dim MyGif As Bitmap = New Bitmap("SharR.gif")
Case 0
Dim MyGif As Bitmap = New Bitmap("SharStop.gif")
End Select
End Sub
End Class
Здесь при загрузке появляеться шар под ним PictureBox1 в ввиде прямоугольника при нажатии влево шарик катиться в лево, так же вправо или просто стоит
Задача: надо чтоб шарик как докатиться до конца PictureBox1 должен упасть вниз. Потом ещё много чего с этим шариком будет если проект (причём это учебный проект и ребят не надо говорить что мы должны его сделать за тебя если я умел я бы не просил да и другим думаю интересно ) продолжит своё существование.
Ответить
|
Страница: 1 |
Поиск по форуму