Gambas France BETA


Pas de compte ? Incription

déplacement d'un contrôle.

Ce sujet est résolu.

1
AuteurMessages
jeanyvon#1 Posté le 29/8/2013 à 16:54:42
Gambas? Ma! Et gustoBonjour,
Je ne suis pas content de ce 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
PUBLIC SUB enrond()

DIM rayon AS FLOAT = (FMain.w / 2) - 100
DIM angle AS INTEGER
DIM petitcote AS FLOAT, grandcote AS FLOAT
DIM zen AS INTEGER

REPEAT
FOR angle = 0 TO 360 'Step 5
IF angle = 0 THEN
ToolButton1.x = milieudepageh
ToolButton1.y = milieudepageh
WAIT 1
ELSE IF angle < 180 THEN
petitcote = rayon * Cos(Rad(angle))
grandcote = rayon - (petitcote * Cos(Rad(angle)))

ToolButton1.x = milieudepageh + (petitcote)
ToolButton1.y = milieudepagew + (grandcote)
WAIT 1 / 100
ELSE
petitcote = rayon * (- Cos(Rad(angle)))
grandcote = rayon - (petitcote * (- Cos(Rad(angle))))

ToolButton1.x = milieudepageh - petitcote
ToolButton1.y = milieudepagew - grandcote
WAIT 1 / 100
ENDIF
NEXT
INC zen
UNTIL zen = 3
END


Avez vous dans vos tiroirs des choses comme ça?
Merci d'avance
JY
Vieillir? On peut retarder mais pas y échapper!
Jack#2 Posté le 2/9/2013 à 22:25:02
Salut Yvon,

je vois grosso-modo que tu cherches a faire tourner une form mais je ne saisis pas bien l'utilité d'une telle chose.

Maintenant, concernant l'esthétique ou la pureté du code voici ma pensée.
La seule issue d'un code informatique est sa faculté a reproduire ad libitum l'événement qu'il est censé produire.
Peu importe la façon, l'essentiel est le résultat. Chacun sait qu'il existe de multiples façons de produire les mêmes effets avec des moyens différents.
Un langage est fait pour exprimer une pensée et chacun possède sa façon de s'exprimer. L'essentiel est de se faire comprendre.
Tout le reste, même s'il m'arrive de dire le contraire :suspect: , n'est que du nombrilisme syntaxique.

Pour résumer, si ton code fonctionne et que tu l'as trouvé tout seul alors sois-en fier.
Et si tu as copié ton code sur un programme tiers alors n'en tire aucune honte car ce tiers l'a certainement lui-même pompé ailleurs :alien:
Pour un code démocratique nationalisons Gambas.
jeanyvon#3 Posté le 3/9/2013 à 07:27:37
Gambas? Ma! Et gustohello!

C'est un bouton que je fais tourner!
un form, un toolbouton, une variable qui défini le milieu du form et c'est parti...

mon but c'est de reproduire le déplacement des cartes à la fin du jeux de solitaire!
Le début (pour moi) c'est de faire faire un cercle à un contrôle.
Le cercle est plus ovale que rond et je ne comprend pas pourquoi.

Merci de la réponse
Vieillir? On peut retarder mais pas y échapper!
Reivillo#4 Posté le 3/9/2013 à 18:16:39
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonsoir jeanyvon.

En regardant le CODE ligne 12:
ToolButton1.y = milieudepageh
Ne devrait-elle pas être plutôt:
ToolButton1.y = milieudepagew

w à la place du h en fin de ligne.

Mais, t'as peut-être déjà corrigé cela...
si OUI, mieux vaut aussi le modifier dans ton Post#1.

Reivillo.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Prokopy#5 Posté le 4/9/2013 à 23:38:40
Kinder PinguiSalut JY,

Le problème ici est plus mathématique que Gambasien, car c'est ta formule qui est fausse. Pour connaître les coordonnées X et Y d'un point sur un cercle, on passe par les formules des coordonnées polaires, qui, en gros, nous disent que :

1
2
X = rayon * Cos(Rad(angle))
Y = rayon * Sin(Rad(angle))


Ces formules sont vraies dans le cas particulier où le centre du cercle est le point (0,0) (en haut à gauche du Form). Pour pouvoir les appliquer à notre cas, il suffit d'y ajouter les coordonnées du centre de ton cercle. À la fin, ton code devrait ressembler un peu plus à ça :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PUBLIC SUB enrond()

DIM rayon AS FLOAT = (FMain.w / 2) - 100
DIM angle AS INTEGER
DIM zen AS INTEGER

REPEAT
FOR angle = 0 TO 360 'Step 5
IF angle = 0 THEN
ToolButton1.x = milieudepagew
ToolButton1.y = milieudepageh
WAIT 1
ELSE
ToolButton1.x = milieudepagew + rayon * Cos(Rad(angle))
ToolButton1.y = milieudepageh + rayon * Sin(Rad(angle))
WAIT 1 / 100
ENDIF
NEXT
INC zen
UNTIL zen = 3

END


Et voilà. Si tu veux creuser un peu plus le sujet, tu peux jeter un coup d'œil sur cette page Wikipédia. :)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
jeanyvon#6 Posté le 11/9/2013 à 16:15:43
Gambas? Ma! Et gustomerci beaucoup!
La trigo n'est pas ma tasse de thé.... Mais avec vous tous passe
Vieillir? On peut retarder mais pas y échapper!
1