Inizialmente creiamo una funzione alla quale attribuiamo il nome PALLINA e attraverso la quale posso disegnare una più palline che si muoveranno su una casella immagini e inizieranno al loro corsa attraveso un click sul bottone. Ogni pallina ha diverse qualità:
- velocità (o passo con cui si muove), indicata con passo;
- coordinate di partenza, indicate con x e y;
- direzione (o verso), indicata con verso versox e versoy;
- diametro, indicato con diam;
- colore, indicato con brush.
Nella parte di programma sottostante, indico le caratteristiche della pallina, e impongo nella parte inferiore il rimbalzo sulle pareti.
Public Class PALLINA
Public passo As Integer
Public diam As Integer
Public x As Integer
Public y As Integer
Public versox As Boolean
Public versoy As Boolean
Public brush As Brush
Sub New(ByVal passoP As Integer, ByVal diamP As Integer, ByVal xP As Integer, ByVal yP As Integer, ByVal versoxP As Boolean, ByVal versoyP As Boolean, ByVal brushP As Brush)
Me.passo = passoP
Me.diam = diamP
Me.x = xP
Me.y = yP
Me.versox = versoxP
Me.versoy = versoyP
Me.brush = brushP
End Sub
Public Sub ridisegna(ByVal B As Bitmap, ByVal G As Graphics)
If x >= B.Width - diam Then
versox = True
End If
If y >= B.Height - diam Then
versoy = True
End If
If x <= 0 Then
versox = False
End If
If y <= 0 Then
versoy = False
End If
If versox Then
x -= passo
Else
x += passo
End If
If versoy Then
y -= passo
Else
y += passo
End If
G.FillEllipse(brush, x, y, diam, diam)
End Sub End Class
Nella parte sottostante, invece, creo sei palline con le caratteristiche definite in precedenza. si ottiene pertanto:
Public Class Form1
Public B As New Bitmap(800, 600)
Public G As Graphics = Graphics.FromImage(B)
Public L As New List(Of PALLINA)
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Dim p1 As New PALLINA(5, 30, 0, 0, False, False, Brushes.Fuchsia)
Dim p2 As New PALLINA(10, 30, 130, 30, False, False, Brushes.Indigo)
Dim p3 As New PALLINA(15, 30, 200, 200, True, False, Brushes.Blue)
Dim p4 As New PALLINA(20, 30, 80, 30, True, True, Brushes.Orange)
Dim p5 As New PALLINA(25, 30, 90, 70, True, True, Brushes.HotPink)
Dim p6 As New PALLINA(30, 30, 400, 500, False, False, Brushes.LightBlue)
L.Add(p1)
L.Add(p2)
L.Add(p3)
L.Add(p4)
L.Add(p5)
L.Add(p6)
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
G.Clear(Color.Black)
For Each P As PALLINA In Me.L
P.ridisegna(B, G)
Next
PictureBox1.Image = B
End Sub
End Class

Nessun commento:
Posta un commento