prg impossible a tracer [Resolu a 50%]!!

Archive.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

prg impossible a tracer [Resolu a 50%]!!

Message par Backup »

dans le listing qui suit j'ai mis un calldebugger

mais au moment ou le debugger arrive a l'instruction "calldebugger"
il est imposible de tracer pas a pas !!! :?

le prg est en fait arreté !! pourquoi ?


autre question !
il me semble que la fonction "AdresseMemoire =DrawingBuffer() '
ne me renvoie pas autre chose que zero !! :?


;- déclarations des procedures
;*******************************************************************************************************
Declare msg_erreur(chaine$)
;*******************************************************************************************************




;- test du materiel
;*******************************************************************************************************
If InitSprite ()=0
msg_erreur( "impossible d'initialiser les sprites" + Chr (10)+ " le prg va quitter " )
End
EndIf
If InitMouse ()=0
msg_erreur( "impossible d'initialiser la souris" + Chr (10)+ " le prg va quitter " )
End
EndIf

If InitKeyboard ()=0
msg_erreur( "impossible d'initialiser le clavier" + Chr (10)+ " le prg va quitter " )
End
EndIf
If InitJoystick()=0
msg_erreur( "impossible d'initialiser le joystick" + Chr (10)+ " on va continuer sans " )
joystick=0
Else
joystick=1 ; le joystick est present !!
EndIf
;*******************************************************************************************************


;-initialisations constante structure tableaux variables
;*******************************************************************************************************
Enumeration
#sprite
EndEnumeration

Structure balle
X.w
Y.w
sensx.l
sensy.l
EndStructure

nbr_balle=25

Dim balle.balle(nbr_balle) ; on cree 10 instance de balle

; affecte des coordonees aleatoire et place les balles

xd=32
yd=50
For i=0 To nbr_balle
tirage:
yd=yd+100 : If yd>768-64:yd=50 : xd=xd+100: If xd>1024-64: xd=32: EndIf : EndIf

balle(i)\X=yd ; placement de la balle
balle(i)\Y=xd
balle(i)\sensx=3 ; determine le sens de deplacement de la balle et la vitesse
balle(i)\sensy=3

Next i


;*******************************************************************************************************



;-ouvre ecran
;*******************************************************************************************************
OpenScreen (1024, 768, 32, "squelette ecran" )
KeyboardMode (1)
;*******************************************************************************************************


;-creation des sprites
;*******************************************************************************************************
For sprite=0 To nbr_balle
coul=coul+10
CreateSprite ( sprite,32,32) ; on cree un sprite (une balle)
StartDrawing ( SpriteOutput (sprite) ) ; on va dessiner dans le sprite
Circle (16, 16, 16, RGB ($F1,coul,$F)) ; on dessine un rond jaune dedans(dans le sprite)
Locate (10, 8 )
DrawText ( Str (sprite))
StopDrawing ()
Next sprite

;*******************************************************************************************************





;-boucle principale
Repeat
;- examine le materiel
;*******************************************************************************************************
ExamineKeyboard ()
ExamineMouse ()
If joystick=1
ExamineJoystick () ; optionel on examine seulement si present !!
EndIf
;*******************************************************************************************************

; serie de gosub ou appel de procedure a mettre ici
;*******************************************************************************************************
CallDebugger
Gosub dessin_sur_ecran ; trace une ligne sur l'ecran et une serie de cercles

Gosub calcul_des_rebonds

;*******************************************************************************************************





;-affichage des sprites
;*******************************************************************************************************
For i=0 To nbr_balle
DisplayTransparentSprite (i, balle(i)\X, balle(i)\Y)
Next i
;*******************************************************************************************************


FlipBuffers () ; affiche le resultat a l'ecran !
ClearScreen (0, 0,0) ; nettoie l'ecran apres affichage
Until KeyboardPushed ( #PB_Key_Escape ) Or MouseButton (2)
End


; *********** zone des DataSection ***************************



; *****************************************************************




; ********* Zone des sous-programme ******************

dessin_sur_ecran:

StartDrawing ( ScreenOutput ())
AdresseMemoire = DrawingBuffer ()
Line (0, 200, 1024, 0 , RGB ($F2,$FF,$EA) )
For i=50 To 1 Step-10
Circle (1024/2, 768/2, i , RGB (10,i*2,i*2))
Next i
StopDrawing ()
Return

; ----------------------------------------------------------------------------------------------------------------------------
calcul_des_rebonds:

For i2=0 To nbr_balle
For a2=0 To i2
If a2<>i2
If SpritePixelCollision (i2, balle(i2)\X, balle(i2)\Y, a2, balle(a2)\X, balle(a2)\Y)<>0
balle(a2)\sensx=-balle(a2)\sensx
balle(a2)\sensy=-balle(a2)\sensy
EndIf
EndIf
Next a2

Next i2


For i=0 To nbr_balle

; bord gauche
If balle(i)\X<1
balle(i)\sensx=-balle(i)\sensx
EndIf
; bord droit
If balle(i)\X>1024-32
balle(i)\sensx=-balle(i)\sensx

EndIf
; bord haut
If balle(i)\Y<1
balle(i)\sensy=-balle(i)\sensy

EndIf
; bord bas
If balle(i)\Y>768-32
balle(i)\sensy=0
balle(i)\sensx=0
EndIf

Next i






; ***********************
; cree un rebond aleatoire

For i=0 To nbr_balle
balle(i)\X=balle(i)\X+balle(i)\sensx ; fait avancer les balles
balle(i)\Y=balle(i)\Y+balle(i)\sensy
Next i
Return






; *************************************************************


; **************** Zone des procedures ******************
Procedure msg_erreur(chaine$)
MessageRequester ( "erreur" , chaine$, #PB_MessageRequester_Ok )
EndProcedure
; *************************************************************



Dernière modification par Backup le dim. 15/janv./2006 18:50, modifié 1 fois.
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Dobro, je comprends pas bien où est le problème :

L'aide de Purebasic
Mots clefs du Debugger en PureBasic

Syntax

CallDebugger

Description

Appel du "debugger" et arrêt immédiat du programme au point courant du code.
Et adressememoire ne renvoi pas 0 ?

Autrement, marant comme code

Tu ferais mieux de faire un pause non, quand c'est comme ça moi je dis apéro! :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je regrette apres un calldebugger on peut tracer pas a pas avec le bouton
du debugger !!!

test ça

Code : Tout sélectionner

calldebugger
for  a= 1 to 255
b=a
next a
avec ce code le prg se break sur calldebugger mais ensuite tu peut a l'aide du bouton [pas] tracer ligne a ligne


pas dans le listing plus haut !! (du moin pas chez moi ) :?
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Oops, c'est moi qui a besoin d'un apéro,

Je sais plus, mais es-tu sûr que l'on puisse utiliser cette fonction avec openscreen

je crois que ça marche avec openwindowedscreen, non?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Gillou a écrit :Oops, c'est moi qui a besoin d'un apéro,

Je sais plus, mais es-tu sûr que l'on puisse utiliser cette fonction avec openscreen
ha bon ? on peut pas ? 8O

et pour
il me semble que la fonction "AdresseMemoire =DrawingBuffer() '
ne me renvoie pas autre chose que zero !!
quelqu'un a vérifié ? chez moi ça ne renvoie rien d'autre que zero !! :?
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Chez moi, DrawingBuffer marche très bien en plein écran.
Tu as un bout de code où ça marche pas ?
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Ben ça marche chez moi! Problème de driver, peut-être?
Par contre, pour les images c'est pas possible, du moins pour l'instant.
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

filperj a écrit :Par contre, pour les images c'est pas possible, du moins pour l'instant.
Merci tu viens de repondre a ma question :D

ya un moyen pour connaitre l'adresse d'une image ? 8O
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

Dobro a écrit :
filperj a écrit :Par contre, pour les images c'est pas possible, du moins pour l'instant.
Merci tu viens de repondre a ma question :D

ya un moyen pour connaitre l'adresse d'une image ? 8O
envoie lui un courrier

arf ! :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Patrick88 a écrit :
Dobro a écrit :
filperj a écrit :Par contre, pour les images c'est pas possible, du moins pour l'instant.
Merci tu viens de repondre a ma question :D

ya un moyen pour connaitre l'adresse d'une image ? 8O
envoie lui un courrier

arf ! :lol:
ça ne change pas le probleme !! mem pour lui ecrire il me faut son adresse
et c'est ce que je cherche depuis le debut !! :D
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

L'adresse de la mémoire écran où s'affiche l'image ?
Cela ne va pas varier d'une machine à l'autre ?

Ps : Qu'est-ce qu'on est sensé faire quand on a pas de joystick ?

Tu vas faire un billard américain?
Est beau ce qui plaît sans concept :)
Speedy Galerie
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Frenchy Pilou a écrit :L'adresse de la mémoire écran où s'affiche l'image ?
Cela ne va pas varier d'une machine à l'autre ?

Ps : Qu'est-ce qu'on est sensé faire quand on a pas de joystick ?

Tu vas faire un billard américain?
vous avez tous fumé ou quoi ? 8O

je parle de l'adresse apres un "CreateImage(#Image, Width, Height)"
l'image va se mettre quelque par avant qu'on decide de l'afficher
la question c'est ou ?? :?
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Dans les limbes, les starting blocks, au coin de la rue... :D
Seul le bon Dieu Fred peut répondre à cette question :lol:
Est beau ce qui plaît sans concept :)
Speedy Galerie
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

handleImage.l = UseImage(#Image)

C'est çà l'adresse mémoire de l'image, non :?:
Tu peux ainsi manipuler l'image, son bitmap, son HDC, etc...
Mais si tu parles de l'adresse video, sans doute que ce n'est pas la meme...
Image
Répondre