Page 1 sur 1

interruption

Publié : lun. 07/juil./2008 13:34
par chikun
en purebasic ça existe l'interruption? qqun a un exemple simple?

merci

Publié : lun. 07/juil./2008 13:42
par djes
Sous Windows, les interruptions sont gérées par Windows, comme sur tous les OS "modernes", à moins que tu ne fasses un pilote de périphériques.

Publié : lun. 07/juil./2008 14:44
par djes
Oui tu parles des exceptions! Bon ben non, y'a pas de TRAP avec windows! :lol:
Pour les collisions, il faut gérer tout ça dans une boucle, en 2D tu as SpritePixelCollision() et en 3D ExamineWorldCollisions(); sinon tu peux tout faire manuellement :)
Pourquoi veux-tu tester parallèlement?

Publié : lun. 07/juil./2008 16:57
par chikun
je ne veux pas tester!
c'est peut etre les exceptions...
je voulais dire de faire tourner une animation (un autre prog) en image de fond (entre autre)...

Publié : lun. 07/juil./2008 17:40
par Backup
chikun a écrit :je ne veux pas tester!
c'est peut etre les exceptions...
je voulais dire de faire tourner une animation (un autre prog) en image de fond (entre autre)...
ya plusieurs façons de faire ça

-les timers
-les threads

par exemple :)

Publié : lun. 07/juil./2008 17:50
par chikun
:lol: ok j'irai voir ça

pour completer ma formation sur les sprites, (et la 2d) (merci Dobro)
je ne comprend pas pourquoi les angles sont représentés de cette façon (?) :roll:

Code : Tout sélectionner



; push "escape pour sortir
RandomSeed(ElapsedMilliseconds())

InitSprite() 
OpenScreen(1024, 768, 32, "squelette ecran") 

; 992,736
InitKeyboard() 
InitMouse() 

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

Dim boule.boule(2)


CreateSprite ( 1,32,32) ; on cree un sprite (une balle) 
StartDrawing ( SpriteOutput (1) ) ; on va dessiner dans le sprite 
    Circle (16, 16, 16, RGB (255,0,0)) ; on dessine un rond dedans(dans le sprite) 
StopDrawing () 
 


CreateSprite ( 2,100,100) ; on cree un sprite (une balle) 

StartDrawing(SpriteOutput (2))
    Circle(16,16,16,RGB(0,255,0))
  
StopDrawing()
boule(2)\xb=600 : boule(2)\yb=200

angle=0
;- boucle 

For angle=0 To 359
boule(1)\xb=992/2 : boule(1)\yb=736/2

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

RandomSeed(ElapsedMilliseconds())

For t=1 To 30
xx=boule(1)\xb+10*Cos(angle)
yy=boule(1)\yb+10*Sin(angle)

ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
   End
EndIf


 StartDrawing ( ScreenOutput () ) 
         DrawText (0,0, "angle: "+ Str(angle) + "  <ech> pour sortir", RGB (255,255,0), RGB (0,0,0)) 
     StopDrawing () 

boule(1)\xb=xx : boule(1)\yb=yy
For i=1 To 2
DisplayTransparentSprite(i,boule(i)\xb,boule(i)\yb) 
Next i
  FlipBuffers() 
  ;Delay(1500)
  ClearScreen(RGB(0, 0,0)) 
Next t


Next angle
End


Publié : lun. 07/juil./2008 17:54
par Anonyme
T'es en radian , pas en degré.
xx=boule(1)\xb+10*Cos(angle*#PI/180)
yy=boule(1)\yb+10*Sin(angle*#PI/180)

Publié : lun. 07/juil./2008 18:03
par chikun
:D c dingue cette chaleur envahissante quand les reponses surgissent aussi vite sur un forum

merci bcp , je peux avançer.. 8)

Publié : lun. 07/juil./2008 18:44
par djes
Merci de ne pas modifier les messages et de ne pas les effacer, sinon on ne peut plus suivre le fil.

J'ai conscience que nous pouvons te sembler pénibles, mais ça l'est pour nous tout autant ; il y a un certain nombres de règles qu'il faut respecter et auxquelles nous aussi, nous nous sommes soumis, et donc que c'est à toi de faire un effort d'adaptation. Tu verras, plus tard ça te fera le même effet quand un nouveau débarquera!
Ici on est patient et on explique; sur la plupart des forums, le moindre manquement à la netiquette et tu te fais jeter.

Publié : mar. 08/juil./2008 9:01
par chikun
ok, j'ai regretté d'avoir supprimé...dsl...

mais des fois la question est bete et le doute m'a poussé à effaçer..(mais tu repondais au meme moment sans que je le sache);
je tournerai ma langue plusieur fois avant de poser des quetions

Dobro :D les "interruptions" c'est exactement ça :wink: