Aller au contenu

essai challenge par un débutant


Messages recommandés

Posté(e)

oui oui, je me suis trompé c'est bien RND et par RDN

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Bon voici un code avec tirage au sort de la carte gagnant et inscription des donner dans la polyligne en xdata

 

 

Declaration des variables

'definition des variables pour les 3 cartes (le 0 compte aussi)
Dim carte(2) As AcadLWPolyline
'definition des points nécesssaires à la polyligne 4 sommets avec x et y pour chacun soit 8 valeurs en double précision
Dim pt(0 To 15) As Double
'definition de la variable pour la largeur
Dim largeur As Double
' definition de la variable pour la hauteur
Dim hauteur As Double
' definition d' une varariable entier pour une boucle
Dim fois As Integer
' definition d' une varariable entier pour l 'écart séparant 2 cartes
Dim dep As Double
' definition d'une variable pour le chanfrein de la carte
Dim ray As Double
' definition de la carte gagnante
Dim tirage As Integer
' definition des reference xdata
Dim datatype(0 To 1) As Integer
Dim data(0 To 1) As Variant

 

 

Fonction de tirage au sort

Public Function tirage_au_sort(upperbound, lowerbound)
Randomize
tirage_au_sort = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

End Function

 

 

Fonction de convertion d'angle degre en radian

Public Function DenR(angle)

DenR = (angle * 3.14159265358979) / 180

End Function

 

 

Et enfin le code du programme

Public Sub bonneteau_1()

'valoriser les 3 paramètres de dimension et placement
largeur = InputBox("Quelle est la largeur de la carte")
hauteur = largeur * 2
dep = largeur * 2
ray = largeur * 0.1

tirage = tirage_au_sort(3, 1)
'création des cartes avec une boucle
'3 tours
For fois = 0 To 2
'point d' origine au tour suivant le placement du point d 'origine est augmenté de la variable de placement
pt(0) = 0 + (dep * fois) + ray: pt(1) = 0
pt(2) = pt(0) + largeur - 2 * ray: pt(3) = pt(1)
pt(4) = pt(2) + ray: pt(5) = pt(3) + ray
pt(6) = pt(4): pt(7) = pt(3) + hauteur - ray
pt(8) = pt(2): pt(9) = pt(3) + hauteur
pt(10) = pt(0): pt(11) = pt(9)
pt(12) = pt(0) - ray: pt(13) = pt(7)
pt(14) = pt(12): pt(15) = pt(1) + ray
'creation de la carte proprement dit avec une polyligne 2d
Set carte(fois) = ThisDrawing.ModelSpace.AddLightWeightPolyline(pt)
'propriété qui permet de fermer la polyligne sur son premier point
carte(fois).Closed = True
'propriété qui permet d'avoir des coins arrondis
For fois2 = 1 To 7 Step 2
carte(fois).SetBulge fois2, Tan(DenR(22.5))
Next fois2
Select Case tirage
   Case fois
       datatype(0) = 1001: data(0) = "jeu de carte"
       datatype(1) = 1002: data(1) = "gagner"
       
   Case Else
       datatype(0) = 1001: data(0) = "Jeu de carte"
       datatype(1) = 1002: data(1) = "Perdu"
End Select

carte(fois).SetXData datatype, data

Next fois
ThisDrawing.Application.ZoomExtents



End Sub 

 

Bon je vous laisse chercher un peu pour trouver une methode pour selectionner la carte.

 

@+

MDSV31

 

PS: Je n'est toujours pas mis de symbole pour les cartes

 

[Edité le 29/10/2007 par mdsv31]

Dessinateur Indépendant

Posté(e)

Bonsoir,

 

Bon,c 'est bien tout ça.

J ai fait l 'as de coeur, mais je ne sais pas si je dois reposter tout le code ???

Pour l 'instant il s' agit de le tracer avec les arcs et hachure "solid" rouge, je pense qu 'il faudra envisager la création d 'un bloc qui sera plus facile à réutiliser.

On verra demain.

 

A plus

 

 

Posté(e)

Non, on n'est pas obligé de retaper tout le code, on peut faire des sous-programmes ou des fonction que l'on appelle selon le resultat.

 

@+

MDSV31

 

Dessinateur Indépendant

Posté(e)

Bonjour,

 

Voici le sous-programme pour un as de coeur, qui devra être sans doute amélioré, mais il montre l 'utilisation de divers commandes de tracés de base.

 

Il faudra le mettre en bloc.

Il devra servir pour créer l 'as de pique, en le retournant et en ajoutant un "pied".

Le "pied" est obtenu en inversant 2 arcs du coeur.

L' as de trèfle utilisera 3 as de coeur et le même pied que l 'as de pique avec éventuellement des échelles différentes.

 

Public Sub coeur()
'-----------------------
' definition du point de centre de la carte
Dim centre_carte(0 To 2) As Double
'definition de la position du symbole de la carte
Dim pos_symbole(0 To 2) As Double
'definition de 4 arcs pour l 'as de coeur
Dim arc(3) As AcadArc
'definition as de coeur comme région
Dim as_de_coeur As AcadRegion
'definition des éléments necessaires à as de coeur
'liste d'entités qui composent le symbole coeur
Dim liste_obj(3) As AcadEntity
'définition de la variable qui recevra la région
Dim region As Variant
'définition des variables nécessaires à la hachure du symbole
Dim hachure As AcadHatch
Dim nom_motif As String
Dim hachure_type As Long
Dim associatif As Boolean
Dim contour_hachure(0) As AcadEntity
'-----------------------

'centre de la carte
'permettra les positionnements
centre_carte(0) = pt(0) + (largeur / 2) - ray
centre_carte(1) = hauteur / 2
centre_carte(2) = 0

'positionne le symbole par rapport au centre
'conforme aux tracés géométriques préconisés, mais à modifier suivant besoins
'cela permettra de changer le point de base si on fait tout un jeu un jour
'position en X
pos_symbole(0) = centre_carte(0) - (ray / 2)
'position en Y
pos_symbole(1) = centre_carte(1) + (ray)
'on reste sur le plan à 0
pos_symbole(2) = 0

'traçage de arc1 supérieur gauche en reprenant le rayon défini pour l'arrondi et économiser les variables
'ceci est complètement arbitraire, à vous d 'innover sur ce point.
'on réutilise ici la fonction de MDSV31 pour la conversion degrés vers radians

Set arc(0) = ThisDrawing.ModelSpace.AddArc(pos_symbole, ray, DenR(60), DenR(180))

'miroir pour arc1 en symétrie avec 2 points
Set arc(1) = arc(0).Mirror(arc(0).StartPoint, centre_carte)

'traçage de arc3 inférieur gauche car je dispose maintenant du point final de
'arc1 qui devient le centre de arc3

Set arc(3) = ThisDrawing.ModelSpace.AddArc(arc(0).EndPoint, (3 * ray), DenR(300), DenR(360))

'miroir pour arc2 en symétrie avec 2 points
Set arc(2) = arc(3).Mirror(arc(0).StartPoint, centre_carte)

'mettre les arcs dans la liste
For fois2 = 0 To 3
Set liste_obj(fois2) = arc(fois2)
Next

'la region dans la variable variant
region = ThisDrawing.ModelSpace.AddRegion(liste_obj)

'recupération de la région qui est la première et
'la seule créée présente dans la variable region
'NB:il peut donc éventuellement y en avoir plusieurs
Set as_de_coeur = region(0)
as_de_coeur.color = acRed

'suppression des arcs inutiles maintenant
For fois2 = 0 To 3
arc(fois2).Delete
Next
   
' définition de la hachure
nom_motif = "SOLID"
hachure_type = acHatchPatternTypePreDefined
associatif = True
   
' création de la hachure
Set hachure = ThisDrawing.ModelSpace.AddHatch(hachure_type, nom_motif, associatif)
  
Set contour_hachure(0) = as_de_coeur
   
' ajouter le contour et afficher la hachure
hachure.AppendOuterLoop (contour_hachure)
hachure.Evaluate
hachure.color = acRed
ThisDrawing.Regen True

End Sub

 

 

Le code d 'appel à rajouter dans la procédure principale, signalé ici entre les traits.

 
   'propriété qui permet d'avoir des coins arrondis
   For fois2 = 1 To 7 Step 2
   carte(fois).SetBulge fois2, Tan(DenR(22.5))
   Next fois2

'-------------------------------------------------------------------------------------------------   
'Appel création de symbole pour l 'instant le coeur sur la première carte
If fois = 0 Then coeur
'------------------------------------------------------------------------------------------------- 
     
Select Case tirage
Case fois
datatype(0) = 1001: data(0) = "jeu de carte"
datatype(1) = 1002: data(1) = "GAGNE"

 

 

Juste pour signaler que la suite se trouve dans la rubrique "progammer en s' amusant"

 

 

[Edité le 7/2/2008 par nazemrap]

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité