Aller au contenu

Nouveau challenge:tir a l \'arc


Messages recommandés

Posté(e)

Bonsoir,

 

j 'ai voulu faire un autre jeu; à savoir atteindre une cible avec une flèche.

Il y a une boite de réglage.

ça marche à peu près.

Toujours faire la tension de la corde (1) avant de varier l 'angle (2).

Justement, j 'aimerais pouvoir tendre ou détendre après avoir changer l 'angle.

Si il y a des amateurs....

 

le code à mettre dans Module1

 

 Public arc As AcadArc
Public fleche As AcadLine
Public long_fleche As Double
Public corde As AcadLWPolyline
Public pt0(0 To 2) As Double
Public pt1(0 To 2) As Double
Public rayon As Double
Public angdep As Double
Public angdar As Double
Public alpha As Double
Public lcorde As Double
Public ptpoly(0 To 5) As Double
Public pttmp As Variant
Public ptdepfleche(0 To 2) As Double
Public ptdarfleche(0 To 2) As Double
Public ptrepos(1) As Double
Public pivot(0 To 2) As Double
Public ligne_pivot As AcadLine
Public cercle As AcadCircle
Public ligne As AcadLine
Public ptdar_ligne_pivot(0 To 2) As Double
Public pos_alea(0 To 2) As Double
Public cercle1 As AcadCircle


Public Sub talarc()

pt0(0) = 0: pt0(1) = 0: pt0(2) = 0
'pt1(0) = 20: pt1(1) = 0: pt1(2) = 0

rayon = 130
angdep = 337 * (3.141589 / 180) 'en radians
angdar = 23 * (3.141589 / 180) 'en radians
alpha = (2 * 3.141589) - (angdep - angdar) 'angle de l 'arc en radians
long_fleche = 100

'trace l 'arc
Set arc = ThisDrawing.ModelSpace.AddArc(pt0, rayon, angdep, angdar)
'longueur de la corde
lcorde = (2 * rayon) * Sin(alpha / 2)

'trace la corde en LW polyligne
pttmp = arc.StartPoint
ptpoly(0) = pttmp(0): ptpoly(1) = pttmp(1)
ptpoly(2) = pttmp(0): ptpoly(3) = pttmp(1) + lcorde / 2
pttmp = arc.EndPoint
ptpoly(4) = pttmp(0): ptpoly(5) = pttmp(1)
Set corde = ThisDrawing.ModelSpace.AddLightWeightPolyline(ptpoly)

pivot(0) = ptpoly(2) + 10.3347: pivot(1) = ptpoly(3): pivot(2) = 0

'trace fleche
   'son point de départ correspondant au sommet 1 de la poyligne corde
ptdepfleche(0) = ptpoly(2): ptdepfleche(1) = ptpoly(3): ptdepfleche(2) = 0
   'son point final tenant mpte de la longueur
ptdarfleche(0) = ptpoly(2) + long_fleche: ptdarfleche(1) = ptpoly(3): ptdarfleche(2) = 0
Set fleche = ThisDrawing.ModelSpace.AddLine(ptdepfleche, ptdarfleche)

'trace ligne de pivot et le cercle qui vont servir à la balistique de la fleche
'Ces 2 éléments sont rendus invisibles
ptdar_ligne_pivot(0) = pivot(0): ptdar_ligne_pivot(1) = pivot(1) - 1000: ptdar_ligne_pivot(2) = 0
Set ligne_pivot = ThisDrawing.ModelSpace.AddLine(pivot, ptdar_ligne_pivot)
ligne_pivot.Visible = False
Set cercle = ThisDrawing.ModelSpace.AddCircle(pivot, fleche.Length)
cercle.Visible = False

'appel la création la cible aléatoire
cible
'zoom étendu
Application.ZoomExtents

REGLAGE.Show
End Sub


Public Sub cible()
'trace cible
'position aléatoire
Randomize
pos_alea(0) = Int(800 - 500 + 1) * Rnd + 500
pos_alea(1) = 0
pos_alea(2) = 0

Set cercle1 = ThisDrawing.ModelSpace.AddCircle(pos_alea, 20)

End Sub

 

le formulaire à télécharger compressé:

ici

 

Macro à exécuter : talarc

Posté(e)

Hello,

 

Ce sont les 2 fichiers necessaires au formulaire du projet.

Tu sembles les avoir décompresser.

Dans l 'interface vba sous autocad, tu cliques droit dans la fenêtre projet sur la gauche.

Puis "importer fichier".

 

http://www.premiumwanadoo.com/technaulogis/cadxp/reglage_01.jpg

 

Dans la boîte de sélection tu localises l 'endroit où tu as décompressé.

Tu sélectionnes reglage.frm

 

C 'est pour cela que tu as cette erreur.

enfin pour l 'instant si c'est la seule.[Edité le 27/1/2008 par nazemrap]

 

[Edité le 27/1/2008 par nazemrap]

Posté(e)

Bonjour,

 

C 'est un peu pauvre comme terrain de jeu.:mad2:

Merci lovecraft, au moins cela à l 'air de fonctionner.

Donc si quelqu' un a des suggestions et des améliorations...

Posté(e)

Bonsoir à toutes et tous,

 

Eh, pas si facile dis donc,...

 

<!--url{0}-->

 

En tous cas, tes p'tits jeux amusent mes enfants et mine de rien, les familiarise à AutoCAD, trop fort ce coup double,...

 

Donc si quelqu' un a des suggestions

 

Heu, joué à deux s'io'plait m'sieur nazemrap, c'est possible (avec score jusquà 5, allez, soyons fou,...).

 

En tous cas, bravo, j'trouve ça vraiment super !!!

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Bonsoir,

 

Ravi que ça plaise aux enfants.

C 'est promis je m 'y colle; 2 joueurs en 5 points.

C 'est vrai que j 'ai un peu de mal à y arriver aussi !!!

 

[Edité le 28/1/2008 par nazemrap]

Posté(e)

Bonsoir,

 

ça y est 2 joueurs !

 

Réglage du nombre de manches est possible.

On peut maintenant régler la tension et l 'angle comme on veut.

Pour jouer seul utiliser le premier bouton.

Je me suis fait un peu de pub....

Si ça marche pas, protester ici !!!!!

J 'aurais de toutes façons des questions à poser.

 

J 'espère que je n 'ai rien oublié.

Normalement le code du Module1 reste le même

 

Le nouveau formulaire à télécharger compressé pour remplacer le précédent :

ici

Posté(e)

Bonjour,

 

Super !!!

Lili2006 là tu exagères je vais passer pour un ostentateur (si si ça existe).

Merci bien.

J' ai envie d' une prochaine étape, pour corser l 'affaire: avoir un vent paramétrable.

Si il y a des amateurs ?

 

Posté(e)

Bonsoir à toutes et tous,

 

Lili2006 là tu exagères je vais passer pour un ostentateur (si si ça existe).

 

Pour la bonne cause, d'ailleurs que font les 40 000 menbres de ce forum ?? Ils se prennent trop au sérieux, non ?,...

 

J' ai envie d' une prochaine étape, pour corser l 'affaire: avoir un vent paramétrable.

Si il y a des amateurs ?

 

En voilà une bonne idée !

 

J'suis pressé de voir ça,...

 

@+,

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

  • 2 semaines après...
Posté(e)

Bonjour à tous,

 

Je me suis pris pour Eole.

Voici les lignes de code à rajouter

 

1 dans la partie déclaration des variables en haut du Module1

'-------------
Public sens_du_vent As Double
Public symb_vent As AcadLine
Public symb_fleche_vent As AcadLine
Public texte_vent As AcadText
Public ctrl_vent As Boolean
Public beaufort As Integer 

 

2 après l 'appel au formulaire

'appel le formulaire
REGLAGE.Show
[surligneur]
'demande la force du vent
beaufort = InputBox("Quelle est la force du vent ( 0 à 20)")[/surligneur]

 

3 la proc pour le vent à mettre en fin de Module1

 


Public Sub vent()
Dim pt1(0 To 2) As Double
Dim vent_vu As Double
Dim texte_chaine As String
Dim texte_hauteur As Double

texte_chaine = "sens du vent"
texte_hauteur = 10
Set texte_vent = ThisDrawing.ModelSpace.AddText(texte_chaine, pt0, texte_hauteur)

'sens du vent aleatoire
sens_du_vent = (Int(360 * Rnd + 1)) * (3.141589 / 180) 'en radians
vent_vu = sens_du_vent + (180 * (3.141589 / 180))

pt1(0) = pt0(0) + 100: pt1(1) = pt0(1): pt1(2) = pt0(2)
Set symb_vent = ThisDrawing.ModelSpace.AddLine(pt0, pt1)

pt1(0) = pt0(0) + 30: pt1(1) = pt0(1) + 10: pt1(2) = pt0(2)
Set symb_fleche_vent = ThisDrawing.ModelSpace.AddLine(pt0, pt1)

symb_vent.Rotate pt0, vent_vu
symb_fleche_vent.Rotate pt0, vent_vu
symb_vent.color = acRed
symb_fleche_vent.color = acRed
texte_vent.Rotate pt0, vent_vu
texte_vent.color = acRed

End Sub

 

Il ya une inputbox qui demande la force du vent.

C'est pas terrible m' enfin, ça complique un peu.

La force du vent peut être augmentée au dela des valeurs.

 

Le nouveau formulaire ici

 

 

 

[Edité le 14/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é