difficulté Objet,Fonction et Random chez les Abeilles
Bonjour à tous !
J'ai développer un petit programme en VB.net :
Donc j'ai un objet bien structuré (j'éspère -_-") qui ce nomme "abeille"
et cet objet possède différentes fonction simple permettant à cette abeille de ce mouvoir etc ... Problème je n'arrive pas à faire croitre la population d'abeille :
En faite je ne trouve pas le moyen de crées une fonction naissance ...
Qui ferais du genre : dim abeille2 as abeille, dim abeille3 as abeille et qui pour chaque abeille créerai un panel qui la représente.
De plus quand je crée 2 abeilles manuellement la fonction random
passe par les mêmes valeurs et les abeilles ce déplace en même temps.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Public Class Form1
Dim Monabeille As abeille
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Monabeille = New abeille(Me.PAN_abeille.Location, Me.PAN_abeille.Size)
Timer1.Start()
End Sub
Public Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'On le fait avancer
Monabeille.Avance()
'On recupère la nouvelle position
Me.PAN_abeille.Location = Monabeille.Position
Me.PAN_abeille.BackColor = Monabeille.couleur
End Sub
End Class |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| Public Class abeille
Dim random As New Random
Private _CoordonneesActuelles As Point
Private _Taille As Size
Private _Direction As Integer
Private _Couleur As Color
Sub New(ByVal PositionOriginelle As Point, ByVal TailleAbeille As Size)
_CoordonneesActuelles = New Point(PositionOriginelle)
_Taille = New Size(TailleAbeille)
_Direction = random.Next(0, 359)
_Couleur = Color.FromArgb(255, 127, 128, 0)
End Sub
Public Sub Avance()
_Direction = VarDir()
_Couleur = VarColor()
_CoordonneesActuelles = CoordonneesSuivante()
End Sub
Public Property Position() As Point
Get
Return _CoordonneesActuelles
End Get
Set(ByVal value As Point)
_CoordonneesActuelles = value
End Set
End Property
Public Property couleur() As Color
Get
Return _Couleur
End Get
Set(ByVal value As Color)
_Couleur = value
End Set
End Property
Private Function sin(ByVal x As Double)
Return Math.Sin((Math.PI * (x - 90)) / 180)
End Function
Private Function cos(ByVal x As Double)
Return Math.Cos((Math.PI * (x - 90)) / 180)
End Function
Private Function CoordonneesSuivante()
_CoordonneesActuelles.X = _CoordonneesActuelles.X + 1 * cos(_Direction)
_CoordonneesActuelles.Y = _CoordonneesActuelles.Y + 1 * sin(_Direction)
Return _CoordonneesActuelles
End Function
Private Function VarColor()
Return Color.FromArgb(255, _Couleur.R + 1, _Couleur.G - 1, 0)
End Function
Private Function VarDir()
Dim A As Double
Dim C As Double
C = random.Next(0, 2)
A = Math.Pow(random.Next(0, 160000), 1.0 / 4.0)
If C = 0 Then
Return _Direction - 20 + A
Else : Return _Direction + 20 - A
End If
End Function
End Class |
Merci beaucoup et 1000fois d'avances !