Un petit prog pour Tracer

Programmation avancée de jeux en PureBasic
Paneric
Messages : 66
Inscription : dim. 25/janv./2004 19:03
Contact :

Un petit prog pour Tracer

Message 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
Dernière modification par Paneric le dim. 16/janv./2005 12:42, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ça a deja été fait ! :D



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


dommage hein ? :lol: :lol:
Paneric
Messages : 66
Inscription : dim. 25/janv./2004 19:03
Contact :

Message par Paneric »

Oui, je le savais!
mais bon !
Je me fous d'être le premier ou le dernier.

Eric
Avatar de l’utilisateur
Polux
Messages : 440
Inscription : mer. 21/janv./2004 11:17
Localisation : france
Contact :

Message par Polux »

Tu as raison eric, en plus je trouve ton code meilleur...

dommage hein :lol: :lol:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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 
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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 :)
Paneric
Messages : 66
Inscription : dim. 25/janv./2004 19:03
Contact :

Message 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
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

Bravo Paneric bon petit prog comme tu le dis sans prétention SUPER !!! .
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oui, et le code est moins fouilli que celui de Dobro :lol: :lol: :lol: :jesors:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

#jaune
Répondre