Page 1 sur 1

Un petit prog pour Tracer

Publié : sam. 15/janv./2005 16:29
par Paneric
Il est sans prétention;

Code : Tout sélectionner

;*****************************************************************************
; creation d'une table de trajectoire
;*****************************************************************************
;
InitSprite()
InitMouse()
InitKeyboard()
;*****************************************************************************
NewList table.Point()
;*****************************************************************************
OpenScreen(800,600,32,"")
;*****************************************************************************
; creation du réticule
;*****************************************************************************
reticule=CreateSprite(#PB_Any,8,8,0)
StartDrawing(SpriteOutput(reticule))
Line(0,3,8,0,$FFFFD3)
Line (3,0,0,8,$FFFFD3)
StopDrawing()
;*****************************************************************************
bulle=CreateSprite(#Pb_Any,16,16,0)
StartDrawing(SpriteOutput(bulle))
    Circle(8,8,5,RGB($D5,$99,$2A))
StopDrawing()
;*****************************************************************************
Repeat
    ClearScreen(0,0,0)

    ForEach table()
        DisplayTransparentSprite(bulle,table()\x-8,table()\y-8)
    Next

    DisplayTransparentSprite(reticule,MouseX(),MouseY())
    FlipBuffers(1)
    ExamineMouse()
    If MouseButton(1)
        AddElement(table())
        table()\x=MouseX()
        table()\y=MouseY()
    EndIf
    If MouseButton(2)
          LastElement(table())
          DeleteElement(table()) 
    EndIf
;------------------------------------------------------------------------------
; on examine les touches du clavier
    ExamineKeyboard()
    If  KeyboardPushed(#PB_Key_S) Or KeyboardPushed(#PB_Key_s)
        ResetList(table())
        CreateFile(0,"Trajectoire.Dta") 
        ForEach table()
            WriteLong(table()\x)
            WriteLong(table()\y)
        Next
        CloseFile(0)
    EndIf
    
    If  KeyboardPushed(#PB_Key_t) Or KeyboardPushed(#PB_Key_T)
        ResetList(table())
        ClearList(table())
        OpenFile(0,"Trajectoire.Dta")
        While Eof(0)=0
            AddElement(table())
            table()\x=ReadLong()
            table()\y=ReadLong()
        Wend
        CloseFile(0)
        ResetList(table())
        n=1
        Repeat
            ClearScreen(0,0,0)
            SelectElement(table(),n)
            DisplayTransparentSprite(bulle,table()\x,table()\y)
            FlipBuffers(1)
            n+1
            n=(n % CountList(table()))+1
            ExamineKeyboard()
         Until KeyboardPushed(#PB_Key_Escape)   
    EndIf
        
;------------------------------------------------------------------------------
; on sort de la bouche principale si la touche ESC est préssée
Until KeyboardPushed(#PB_Key_Escape)
End 
Mais il me sers bien, @+

Eric

Publié : dim. 16/janv./2005 0:14
par Backup
ça a deja été fait ! :D



voir ici : http://purebasic.hmt-forum.com/viewtopic.php?t=869


dommage hein ? :lol: :lol:

Publié : dim. 16/janv./2005 11:18
par Paneric
Oui, je le savais!
mais bon !
Je me fous d'être le premier ou le dernier.

Eric

Publié : dim. 16/janv./2005 11:23
par Polux
Tu as raison eric, en plus je trouve ton code meilleur...

dommage hein :lol: :lol:

Publié : dim. 16/janv./2005 11:57
par Le Soldat Inconnu
2 petites choses :

d'abord

Code : Tout sélectionner

KeyboardPushed(#PB_Key_T) Or KeyboardPushed(#PB_Key_T) 
et

Code : Tout sélectionner

KeyboardPushed(#PB_Key_S) Or KeyboardPushed(#PB_Key_S) 
Quel intérêt

ensuite, qu'on on lance le test de la trajectoire, impossible de quitter.
j'ai corriger comme ça :

Code : Tout sélectionner

;***************************************************************************** 
; creation d'une table de trajectoire 
;***************************************************************************** 
; 
InitSprite() 
InitMouse() 
InitKeyboard() 
;***************************************************************************** 
NewList table.Point() 
;***************************************************************************** 
OpenScreen(800,600,32,"") 
;***************************************************************************** 
; creation du réticule 
;***************************************************************************** 
reticule=CreateSprite(#PB_Any,8,8,0) 
StartDrawing(SpriteOutput(reticule)) 
Line(0,3,8,0,$FFFFD3) 
Line (3,0,0,8,$FFFFD3) 
StopDrawing() 
;***************************************************************************** 
bulle=CreateSprite(#PB_Any,16,16,0) 
StartDrawing(SpriteOutput(bulle)) 
    Circle(8,8,5,RGB($D5,$99,$2A)) 
StopDrawing() 
;***************************************************************************** 
Repeat 
    ClearScreen(0,0,0) 

    ForEach table() 
        DisplayTransparentSprite(bulle,table()\x-8,table()\y-8) 
    Next 

    DisplayTransparentSprite(reticule,MouseX(),MouseY()) 
    FlipBuffers(1) 
    ExamineMouse() 
    If MouseButton(1) 
        AddElement(table()) 
        table()\x=MouseX() 
        table()\y=MouseY() 
    EndIf 
    If MouseButton(2) 
          LastElement(table()) 
          DeleteElement(table()) 
    EndIf 
;------------------------------------------------------------------------------ 
; on examine les touches du clavier 
    ExamineKeyboard() 
    If  KeyboardPushed(#PB_Key_S)
        ResetList(table()) 
        CreateFile(0,"Trajectoire.Dta") 
        ForEach table() 
            WriteLong(table()\x) 
            WriteLong(table()\y) 
        Next 
        CloseFile(0) 
    EndIf 
    
    If  KeyboardPushed(#PB_Key_T)
        ResetList(table()) 
        ClearList(table()) 
        OpenFile(0,"Trajectoire.Dta") 
        While Eof(0)=0 
            AddElement(table()) 
            table()\x=ReadLong() 
            table()\y=ReadLong() 
        Wend 
        CloseFile(0) 
        ResetList(table()) 
        n=1 
        Repeat 
            ClearScreen(0,0,0) 
            ExamineKeyboard() 
            SelectElement(table(),n) 
            DisplayTransparentSprite(bulle,table()\x,table()\y)
            FlipBuffers(1)
            n+1 
         Until KeyboardPushed(#PB_Key_Escape) Or n = CountList(table())
    EndIf 
        
;------------------------------------------------------------------------------ 
; on sort de la bouche principale si la touche ESC est préssée 
Until KeyboardPushed(#PB_Key_Escape) 
End 

Publié : dim. 16/janv./2005 12:18
par Oliv
Le Soldat Inconnu a écrit :2 petites choses :

d'abord

Code : Tout sélectionner

KeyboardPushed(#PB_Key_T) Or KeyboardPushed(#PB_Key_T) 
et

Code : Tout sélectionner

KeyboardPushed(#PB_Key_S) Or KeyboardPushed(#PB_Key_S) 
Quel intérêt
Bah, c'est pour le double appui, comme le double clique sur une souris, où est le problème ?

Sino c'est toujours marrant de faire des dessis à la souris :D , ma soeur a passé une heure a jouer avec ce matin :)

Publié : dim. 16/janv./2005 12:41
par Paneric
Le Soldat Inconnu a écrit:
2 petites choses :

d'abord
Code:
KeyboardPushed(#PB_Key_T) Or KeyboardPushed(#PB_Key_T)

et
Code:
KeyboardPushed(#PB_Key_S) Or KeyboardPushed(#PB_Key_S)

Quel intérêt



C'était pour les minuscules et majuscules ... Mais ces lettres n'était pas toutes en masjuscule dans le source. Voir plus haut

Ensuite il est vrai qu'il manquait un EXAMINEKEYBOARD() dans la boucle.
Ceci permettait de voir en continus le chemin tracé.

De plus, je l'ai édité le source et l'ai corrigé

Eric

Eric

Publié : dim. 16/janv./2005 21:51
par garzul
Bravo Paneric bon petit prog comme tu le dis sans prétention SUPER !!! .

Publié : dim. 16/janv./2005 23:09
par Le Soldat Inconnu
oui, et le code est moins fouilli que celui de Dobro :lol: :lol: :lol: :jesors:

Publié : dim. 16/janv./2005 23:24
par Backup
#jaune