Page 2 sur 3

Publié : jeu. 26/juil./2007 15:48
par Backup
........

Publié : jeu. 26/juil./2007 15:58
par Mytic
On dirait que j’ai un dont pour trouver les Bugs moi.

Merci Dobro pour tes réponses rapides
:wink:

Publié : jeu. 26/juil./2007 16:05
par Mytic
Nooooon c’était pas un bug , le problème venait des ( ) :
Il faut mettre les ( ) de la procédure aussi et désactiver le >déboguer< :

Code : Tout sélectionner

Procedure erreur()
MessageRequester("info","erreeeeeeeuuuuuuuuuuuur")
EndProcedure

OnErrorGosub(@erreur())

a = a / 0
là ça marche :D
MMais j'ai remarqué une chose , les Onerror ne détectent pas toutes les erreurs ??????
ex:
si vous mettez Closescreen() sans avoir ouvert une , y'a pas de message d'érreur !! Bizarre

Publié : jeu. 26/juil./2007 18:46
par Backup
Mytic a écrit :Nooooon c’était pas un bug , le problème venait des ( )
ha oui ! quel ane !! :oops:

Publié : jeu. 26/juil./2007 18:53
par Mytic
:lol: on est deux alors ^^

Publié : jeu. 26/juil./2007 20:55
par Ollivier
Là les gens vous êtes dans trip que je n'aurai jamais cru encore exister en 2007!

Quand je pense que j'avais 8 ans, je tournais sous ExcelBasic. C'était un ordi à part assez étrange. Il offrait de la couleur et du scrolling pour les avertis. C'était en 1989. Il était bien. Tu l'allumais et direct... Dans le Basic comme les consoles! Tu pouvais créer tes cartouches mémoire qui s'exécutait aussi vite que ça. Cet ordi s'appelait EXL100.

ça ne dit peut-être pas grand chose. Moi, je n'ai jamais fait de scrolling ni acheté de cartouche mais la commande GOTO... Qu'est-ce que je m'en souviens de cette méchante surtout quand je ne pouvais pas sauver mon programme...

Ensuite, il y a GW-Basic sur un PC 8088 à 4MHz:
Tu remplaces la ligne 20 qui sortait de ta boucle
"90 GOTO 10" et ton programme partait au ciel. Chaque touche qui fait bip et un écran bloqué. T'es obligé de faire Ctrl-Alt-Suppr en pleurant :D

C'est vrai qu'aujourd'hui, plus rien ne plante si facilement. Plus rien n'est exécuté sans être sauvegardé (sauf les New*) mais la GOTO me reste un peu comme un quelque chose à n'utiliser qu'un dernier recours. Et c'est vraiment rare.

Sinon je rejoins un peu Dobro pour l'ordre des choses. J'ai du mal quand toutes mes "Global", "Declaration", "Procedure" ne sont pas ensemble. Je mettais les procedures en tête il y a quelques jours, jusqu'à ce qu'une procédure en appelle une autre. Là il fallait vraiment déclarer. Et de fil en aiguilles, les procédures ont migrés en bas quand elles ne sont pas encore mises en PBI ou DLL.

Publié : jeu. 26/juil./2007 21:06
par Backup
Ollivier a écrit : Sinon je rejoins un peu Dobro pour l'ordre des choses. J'ai du mal quand toutes mes "Global", "Declaration", "Procedure" ne sont pas ensemble
pour la relecture, c'est quand même plus sympath d'avoir les procédures en bas de listing , car sinon sur de gros projet, durant le Scrolling on se colle une bonne centaines de lignes de Procédure avant , d'enfin arriver a la boucle principale !!

par définition, les Déclaration génère des lignes moins longues (pas de paramètres qui prenne de la largeur dans l'éditeur), et lorsqu'on arrive a la boucle principal, on s'en rend mieux compte !! :D

bref plein d'avantage ! :D
nous avions déjà fait un topic sur l'organisation d'un listing :)

moi j'ai encore mon ZX81 !! déja mis la photo ici :)

Publié : jeu. 26/juil./2007 21:23
par beauregard
oui, pareil pour moi, procedure en bas, c'est la logique qui le veut.

Publié : jeu. 26/juil./2007 21:29
par Ollivier
J'ai fait une ou deux modif. Pardonnez-moi si j'ai chamboulé l'architecture. Je ne trouvais pas les Sprites très utiles. Mais il y avait peut-être une raison pour leur présence...

Code : Tout sélectionner

Global Texte$ 
 
Declare Graph() 
Declare zone_texte(x.l,Y.l,Couleur.l) 
Declare.S Curs(ms.L, Char.S = "_")

InitSprite () 
InitKeyboard () 
OpenWindow (0,0,0,300,300, "" ) 
OpenWindowedScreen ( WindowID (0),0,0,300,300,0,0,0) 

Texte$ = "A>"
Repeat 
    Graph() 
    FlipBuffers () 
    Event = WindowEvent () 
Until Event = #PB_Event_CloseWindow 





Procedure zone_texte(x.l,Y.l,Couleur.l) 
  ExamineKeyboard()
  Texte$ = Left(Texte$, Len(Texte$) - KeyboardReleased( #PB_Key_Back ) ) + KeyboardInkey ()
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawText (x+2,Y+2,texte$ + Curs(500),#Black,0) 
  DrawText (x,Y,texte$ + Curs(500),Couleur,0)    
EndProcedure 

Procedure Graph() 
    StartDrawing ( ScreenOutput ()) 
    xc = 1 
    yc = 1 
     For Rayon = 400 To 10 Step -10 
         Circle (xc, yc, Rayon , RGB ( Random (255), Random (255), Random (255))) 
     Next Rayon 
    zone_texte(10,10,#White) 
     StopDrawing () 
EndProcedure 

Procedure.S Curs(ms.L, Char.S = "_")
  Static Used.L
  Static Start.L
  Static CursorStat.B
  If Used = 0: Start = ElapsedMilliseconds(): Used = 1: EndIf
  If ElapsedMilliseconds() > Start + ms
    CursorStat = 1 - CursorStat
    Used = 0
  EndIf
  If CursorStat
    ExitChar.S = Char
  Else
    ExitChar = ""
  EndIf
  ProcedureReturn ExitChar
EndProcedure

Publié : jeu. 26/juil./2007 23:56
par Backup
c'est sympath aussi comme ça :)

Publié : ven. 27/juil./2007 0:21
par Ollivier
Et comme ça ? :D

Code : Tout sélectionner

Global MaxText.L
MaxText = 15
Global Dim Texte$(MaxText)
Global Ptr.L
  
Declare Graph() 
Declare zone_texte(x.l,Y.l,Couleur.l) 
Declare.S Curs(ms.L, Char.S = "_") 

InitSprite () 
InitKeyboard () 
OpenWindow (0,0,0,300,300, "" ) 
OpenWindowedScreen ( WindowID (0),0,0,300,300,0,0,0) 

Texte$(0) = "Ecrit et appuie sur [Entrée]"
Ptr = 1
Repeat 
    Graph() 
    FlipBuffers () 
    Event = WindowEvent () 
Until Event = #PB_Event_CloseWindow 





Procedure zone_texte(x.l,Y.l,Couleur.l) 
  ExamineKeyboard() 
  Texte$(Ptr) = Left(Texte$(Ptr), Len(Texte$(Ptr) ) - KeyboardReleased( #PB_Key_Back ) ) + KeyboardInkey () 
  If KeyboardReleased(#PB_Key_Return)
    Ptr + 1
    If Ptr > MaxText
      Ptr = MaxText
      For i = 0 To MaxText - 1
        Texte$(i) = Texte$(i + 1)
      Next i
      Texte$(MaxText) = ""
    EndIf
  EndIf
  DrawingMode(#PB_2DDrawing_Transparent)
  For i = 0 To MaxText
    If i = Ptr
      DrawText (x+2,Y+2+i*16,texte$(i) + Curs(500),#Black,0) 
      DrawText (x,Y+i*16,texte$(i) + Curs(500),Couleur,0)
    Else
      DrawText (x+2,Y+2+i*16,texte$(i),#Black,0) 
      DrawText (x,Y+i*16,texte$(i),Couleur,0)
    EndIf
  Next i
EndProcedure 

Procedure Graph() 
    StartDrawing ( ScreenOutput ()) 
    xc = 1 
    yc = 1 
     For Rayon = 400 To 10 Step -10 
         Circle (xc, yc, Rayon , RGB ( Random (255), Random (255), Random (255))) 
     Next Rayon 
    zone_texte(10,10,#White) 
     StopDrawing () 
EndProcedure 

Procedure.S Curs(ms.L, Char.S = "_") 
  Static Used.L 
  Static Start.L 
  Static CursorStat.B 
  If Used = 0: Start = ElapsedMilliseconds(): Used = 1: EndIf 
  If ElapsedMilliseconds() > Start + ms 
    CursorStat = 1 - CursorStat 
    Used = 0 
  EndIf 
  If CursorStat 
    ExitChar.S = Char 
  Else 
    ExitChar = "" 
  EndIf 
  ProcedureReturn ExitChar 
EndProcedure 

Publié : ven. 27/juil./2007 0:48
par Mytic
Bravo >Ollivier< !!
J’aime bien la nouvelle méthode…
Mais pour les sprites que t’a jugé inutiles, ben… leur utilité survient dans un milieu hostile, genre un milieu ou y’a plusieurs couches de sprites , et là le StartDrawing() n’a plus d’effet , car le texte une fois dessiné , avec le FlipBuffer() il disparaît vite , et si ce n’est pas le cas , y’aura des clignotements , donc vaut mieux dessiner sur un sprite puis afficher le sprite à l’écran.
Je dis ça, car sa m’est déjà arriver.
:?

Publié : ven. 27/juil./2007 0:58
par Ollivier
Et si tu affiches ton texte en dernier, ça merdoie toujours??
Parce que là, je m'amusais bien

Code : Tout sélectionner

Global MaxText.L
MaxText = 15
Global Dim Keyb.L(255)
Global Dim KeybStart.L(255)
Global Dim Texte$(MaxText)
Global Ptr.L
  
Declare Graph() 
Declare zone_texte(x.l,Y.l,Couleur.l) 
Declare.S Curs(ms.L = 200, Char.S = "_") 
Declare.L Keyboard(Touche.L, AttenteIni.L = 500) 

InitSprite () 
InitKeyboard () 
LoadFont(0, "Verdana", 12, #PB_Font_Italic| #PB_Font_Bold)
OpenWindow (0,0,0,300,300, "" ) 
OpenWindowedScreen ( WindowID (0),0,0,300,300,0,0,0) 

Texte$(0) = "Ecrit et appuie sur [Entrée]"
Ptr = 1
Repeat 
    Graph() 
    FlipBuffers () 
    Event = WindowEvent () 
Until Event = #PB_Event_CloseWindow 





Procedure zone_texte(x.l,Y.l,Couleur.l) 
  ExamineKeyboard() 
  Texte$(Ptr) = Left(Texte$(Ptr), Len(Texte$(Ptr) ) - Keyboard( #PB_Key_Back ) ) + KeyboardInkey () 
  If Keyboard(#PB_Key_Return)
    Ptr + 1
    If Ptr > MaxText
      Ptr = MaxText
      For i = 0 To MaxText - 1
        Texte$(i) = Texte$(i + 1)
      Next i
      Texte$(MaxText) = ""
    EndIf
  EndIf
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID(0) )
  th = TextHeight("A")
  For i = 0 To MaxText
    If i = Ptr
      DrawText (x+2,Y+2+i*th,texte$(i) + Curs(),#Black,0) 
      DrawText (x,Y+i*th,texte$(i) + Curs(),Couleur,0)
    Else
      DrawText (x+2,Y+2+i*th,texte$(i),#Black,0) 
      DrawText (x,Y+i*th,texte$(i),Couleur,0)
    EndIf
  Next i
EndProcedure 

Procedure Graph() 
    StartDrawing ( ScreenOutput ()) 
    xc = 1 
    yc = 1 
     For Rayon = 400 To 10 Step -10 
         Circle (xc, yc, Rayon , RGB ( Random (255), Random (255), Random (255))) 
     Next Rayon 
    zone_texte(10,10,#White) 
     StopDrawing () 
EndProcedure 

Procedure.S Curs(ms.L = 200, Char.S = "_") 
  Static Used.L 
  Static Start.L 
  Static CursorStat.B 
  If Used = 0: Start = ElapsedMilliseconds(): Used = 1: EndIf 
  If ElapsedMilliseconds() > Start + ms 
    CursorStat = 1 - CursorStat 
    Used = 0 
  EndIf 
  If CursorStat 
    ExitChar.S = Char 
  Else 
    ExitChar = "" 
  EndIf 
  ProcedureReturn ExitChar 
EndProcedure 

Procedure.L Keyboard(Touche.L, AttenteIni.L = 500) 
  Static Used.L 
  Static Start.L 
  Static CursorStat.B 
  Signal = 0
  If KeyboardPushed(Touche)
    If Keyb(Touche) = 0
      Keyb(Touche) = 1
      KeybStart(Touche) = ElapsedMilliseconds()
      Signal = 1
    Else
      If ElapsedMilliseconds() > KeybStart(Touche) + AttenteIni
        Signal = 1
      EndIf
    EndIf
  Else
    Keyb(Touche) = 0    
  EndIf
  ProcedureReturn Signal
EndProcedure 


Publié : ven. 27/juil./2007 1:06
par Ollivier
Ptain, foutu sprite qui s'afficha pas
(Il est dans la procedure Graph() )

Code : Tout sélectionner

Global MaxText.L
MaxText = 15
Global Dim Keyb.L(255)
Global Dim KeybStart.L(255)
Global Dim Texte$(MaxText)
Global Ptr.L
  
Declare Graph() 
Declare zone_texte(x.l,Y.l,Couleur.l) 
Declare.S Curs(ms.L = 200, Char.S = "_") 
Declare.L Keyboard(Touche.L, AttenteIni.L = 500) 

InitSprite () 
InitKeyboard () 
LoadFont(0, "Verdana", 12, #PB_Font_Italic| #PB_Font_Bold)
OpenWindow (0,0,0,300,300, "" ) 
OpenWindowedScreen ( WindowID (0),0,0,300,300,0,0,0) 

Texte$(0) = "Ecrit et appuie sur [Entrée]"
Ptr = 1
Repeat 
    Graph() 
    FlipBuffers () 
    Event = WindowEvent () 
Until Event = #PB_Event_CloseWindow 





Procedure zone_texte(x.l,Y.l,Couleur.l) 
  ExamineKeyboard() 
  Texte$(Ptr) = Left(Texte$(Ptr), Len(Texte$(Ptr) ) - Keyboard( #PB_Key_Back ) ) + KeyboardInkey () 
  If Keyboard(#PB_Key_Return)
    Ptr + 1
    If Ptr > MaxText
      Ptr = MaxText
      For i = 0 To MaxText - 1
        Texte$(i) = Texte$(i + 1)
      Next i
      Texte$(MaxText) = ""
    EndIf
  EndIf
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID(0) )
  th = TextHeight("A")
  For i = 0 To MaxText
    If i = Ptr
      DrawText (x+2,Y+2+i*th,texte$(i) + Curs(),#Black,0) 
      DrawText (x,Y+i*th,texte$(i) + Curs(),Couleur,0)
    Else
      DrawText (x+2,Y+2+i*th,texte$(i),#Black,0) 
      DrawText (x,Y+i*th,texte$(i),Couleur,0)
    EndIf
  Next i
EndProcedure 

Procedure Graph()
  Static a.L
  If a = 0
    a = 1
    CreateSprite(0, 100, 100)
    StartDrawing (SpriteOutput(0)) 
    Box(1, 1, 90, 90, #Red)
    StopDrawing()
  EndIf
    StartDrawing ( ScreenOutput ()) 
    xc = 1 
    yc = 1 
     For Rayon = 400 To 10 Step -10 
         Circle (xc, yc, Rayon , RGB ( Random (255), Random (255), Random (255))) 
     Next Rayon    
    DisplaySprite(0, 0, 0)
    zone_texte(10,10,#White) 
     StopDrawing () 
EndProcedure 

Procedure.S Curs(ms.L = 200, Char.S = "_") 
  Static Used.L 
  Static Start.L 
  Static CursorStat.B 
  If Used = 0: Start = ElapsedMilliseconds(): Used = 1: EndIf 
  If ElapsedMilliseconds() > Start + ms 
    CursorStat = 1 - CursorStat 
    Used = 0 
  EndIf 
  If CursorStat 
    ExitChar.S = Char 
  Else 
    ExitChar = "" 
  EndIf 
  ProcedureReturn ExitChar 
EndProcedure 

Procedure.L Keyboard(Touche.L, AttenteIni.L = 500) 
  Static Used.L 
  Static Start.L 
  Static CursorStat.B 
  Signal = 0
  If KeyboardPushed(Touche)
    If Keyb(Touche) = 0
      Keyb(Touche) = 1
      KeybStart(Touche) = ElapsedMilliseconds()
      Signal = 1
    Else
      If ElapsedMilliseconds() > KeybStart(Touche) + AttenteIni
        Signal = 1
      EndIf
    EndIf
  Else
    Keyb(Touche) = 0    
  EndIf
  ProcedureReturn Signal
EndProcedure 


Publié : ven. 27/juil./2007 1:08
par Mytic
C’est ce que j’ai remarqué !
Sympa l’effet de défilement , je sais pas pourquoi mais ça me rappel le Qbasic
:roll: