Page 1 sur 2

réduire une équation

Publié : sam. 12/juil./2008 14:46
par chikun
:?

voilà dans ma routine je code:

ang=270-((angle-270)*2)

arf! :P on peut reduire ça ??

:roll: chui loin d'etre une "pure" en math, je sais meme pas si "equation" et le mot exact

Publié : sam. 12/juil./2008 14:55
par Oliv
ang = 270-(angle*2-270*2)
ang = 270-angle*2+540
ang = 810 - angle*2 et voilà :wink:

Publié : sam. 12/juil./2008 16:29
par chikun
:oops: :? :( :) :o :D , g verifié et c vrai en plus
:roll: mais comment il font ça?......

bon merci, tu passes prendre un verre quand tu veux...je continue à coder

Publié : sam. 12/juil./2008 20:25
par Ar-S
mais comment il font ça?......
Le compte est bon :P






Sinon en 9 lettres :

Image

Publié : dim. 13/juil./2008 12:55
par Oliv
chikun a écrit ::oops: :? :( :) :o :D , g verifié et c vrai en plus
:roll: mais comment il font ça?......

bon merci, tu passes prendre un verre quand tu veux...je continue à coder
Bah je ne peux pas développer plus le calcul là.... :wink:

Regarde cette page, elle m'a l'air pas mal faite sinon cherche "développement/factorisation" sous google :)

Publié : dim. 13/juil./2008 17:30
par SPH
Ou tout simplement ca :

Code : Tout sélectionner

angle = 15444

angle%360
Debug angle

Publié : dim. 13/juil./2008 17:46
par Oliv
:?: :?: :?:
Tu veux en venir où SPH ?

Publié : lun. 14/juil./2008 10:22
par SPH

Code : Tout sélectionner

angle=44
ang = 1210 + angle*24
Debug ang
real_ang=ang%360
Debug real_ang

Publié : lun. 14/juil./2008 11:34
par Oliv
Roh je suis fatigué en ce moment moi ou je ne comprends rien :lol:

Le modulo de l'angle n'a rien à voir avec le simplification du calcul demandé :wink:

Publié : lun. 14/juil./2008 13:11
par SPH
Oliv a écrit :Roh je suis fatigué en ce moment moi ou je ne comprends rien :lol:

Le modulo de l'angle n'a rien à voir avec le simplification du calcul demandé :wink:
Quand, apres plusieurs calculs, tu te retrouves avec un angle de par exemple 54801, tu n'as pas idée de ce que ca represente.
Par un simple modulo, tu sais ce que veux dire "angle = 54801". Ca fait :

Code : Tout sélectionner

angle=54801
real_angle = angle%360
debug real_angle
Par exemple, dans ta formule :
Oliv a écrit :ang = 270-(angle*2-270*2)
ang = 270-angle*2+540
ang = 810 - angle*2 et voilà :wink:
ton angle de 810 peux deja etre reduit à %360

Publié : mar. 15/juil./2008 17:44
par chikun
heu ...oliv! ça n'a pas marché regarde et trouve dans le milieu du code >
"oliv!!!!!" , si j'optimise par ta formule , ça ne marche pas (?)

Code : Tout sélectionner

InitSprite() 
InitKeyboard() 
InitMouse() 

OpenScreen(1024, 768, 32, "squelette ecran") 
; 992,736 

Structure boule 
    xb.w 
    yb.w  
;    sensx.b 
;    sensy.b 
EndStructure 

Dim boule.boule(2) 

CreateSprite ( 1,100,100) 
StartDrawing ( SpriteOutput (1)) 
  Circle (50, 50, 50, RGB (0,255,0)) 
StopDrawing () 

CreateSprite ( 2,32,32) 
StartDrawing ( SpriteOutput (2)) 
  Circle (16,16,16, RGB (0,0,255)) 
StopDrawing () 


boule(1)\xb=(1024-100)/2 : boule(1)\yb=100 

diam=600 
ang=180: st=1 

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
 
Repeat 
StartDrawing(ScreenOutput()) 
DrawText(0,0,"Chikun",RGB(125,90,30),RGB(0,0,0)) 
DrawText(370,0,"clic droit > sortir ___/___ clic gauche > shooter",RGB(0,200,100), RGB(0,0,0)) 
DrawText(369,16,"(A) ang à gauche ___/___ (Z) ang à droite",RGB(0,200,100), RGB(0,0,0)) 
StopDrawing() 
boule(2)\xb=mx-16: boule(2)\yb=700 
DisplayTransparentSprite(1,boule(1)\xb,boule(1)\yb) 
DisplayTransparentSprite(2,boule(2)\xb,boule(2)\yb) 
ExamineMouse() 
mx=MouseX() 

ExamineKeyboard() 
      If KeyboardPushed(#PB_Key_W) : ang=ang-st 
      EndIf 
      If KeyboardPushed(#PB_Key_Q) : ang=ang+st 
      EndIf 

      If ang>=360 : ang=358 : st=-st 
      EndIf 
      If ang<=180 : ang=182 : st=-st 
      EndIf 



dx=diam*Cos(ang*#PI/180) 
dy=diam*Sin(ang*#PI/180) 
StartDrawing(ScreenOutput()) 
Line(mx,716,dx,dy,RGB(255,0,0)) 
StopDrawing() 
      If MouseButton(1)
            col=0 
            For i=1 To 200 


            boule(2)\xb=boule(2)\xb+16*Cos(ang*#PI/180) 
            boule(2)\yb=boule(2)\yb+16*Sin(ang*#PI/180) 
            DisplayTransparentSprite(1,boule(1)\xb,boule(1)\yb) 
            DisplayTransparentSprite(2,boule(2)\xb,boule(2)\yb) 
            If col=0 And SpritePixelCollision(1,boule(1)\xb,boule(1)\yb,2,boule(2)\xb,boule(2)\yb)
                     If boule(2)\yb<boule(1)\yb+75
                        ang=270-((ang-270)*2): col=1; OLIV !!!!!!!!!!!!!!!!!!!!!!!!!!!
                        Else
                        ang=-ang : col=1
                     EndIf
            EndIf
                      
            StartDrawing(ScreenOutput()) 
            Line(mx,716,dx,dy,RGB(255,0,0)) 
            StopDrawing()   

            FlipBuffers() 
            ClearScreen(RGB(0, 0,0)) 
                If boule(2)\yb<0 Or boule(2)\yb>736 Or boule(2)\xb<0 Or boule(2)\xb>992: i=200
                EndIf 



            Next i 
            
      EndIf
FlipBuffers() 
ClearScreen(RGB(0, 0,0)) 


Until MouseButton(2) 
End 

Publié : mer. 16/juil./2008 1:02
par Oliv
Je n'ai pas le temps de regarder plus en détail car je viens de rentrer du boulot et je vais dormir. Ton code ne fonctionne pas sous MacOS, j'ai quand même lancé une machine virtuelle pour essayer : quel est le soucis ? Car pour moi le résultat est le même.

De plus, peux tu mettre deux trois commentaires dans ton bordel, euhh code ? :oops:

Publié : mer. 16/juil./2008 3:04
par chikun
mon bordel :lol:

oups c'est vrai ( y a Brodo qui va me remonter les bretelles) , je vais bosser aussi mais dés ce soir je te met les com pour la clarté du zafair

Publié : mer. 16/juil./2008 9:00
par Good07
Pour moi j'ai remplacé la ligne:

Code : Tout sélectionner

ang=270-((ang-270)*2): col=1
par

Code : Tout sélectionner

ang = 810 - angle*2 :col=1
Et comme dit Oliv le résultat est le même... :D

ça marche très bien...

Publié : mer. 16/juil./2008 15:20
par chikun
ok Oliv & Good07
ça a l'air de fonctionner... merci

mais je vais tout reprendre à zéro, car sous certains angles la balle ralentie drolement , j'immagine mettre toutes les possibilités dans un tableau en sachant que la boule peut etre percuté sur 360 point et que l'origine de la frappe au dessus ou en dessous de la cible...enfin un truc comme ça :roll:

c bon de rever ...