Страница: 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 | 
 
		
			Поиск по форуму