Page 2 sur 4

Re: une montre... special

Publié : lun. 27/févr./2012 19:00
par Backup
faudra que je le fasse en 3D
ça ferai un labyrhinte donc les murs changerai de place
en fonction de l'heure :)

on se promènerai dedans :)

Re: une montre... special

Publié : lun. 27/févr./2012 19:45
par SPH
J'ai reussi en louchant. Mais la methode reste a ameliorer

Re: une montre... special

Publié : lun. 27/févr./2012 19:54
par kernadec
bonsoir
excellent.. merci, manque plus que les gloutons :)


Cordialement

Re: une montre... special

Publié : lun. 27/févr./2012 19:58
par Backup
@SPH
en fait la derniere version du code posté contien une procedure 'animation'
qui de temps en temps inverse le sens des sprites
peut etre qu'il y a un sens ou tu verrai mieux ...


en principe sans faire d'effort , tu te recule d'un ou deux metres de ton ecran
les chiffres apparaissent ...

je ne pense pas qu'il faut forcer, ou loucher , d'un seul oeil on voit donc ..

comme le dit Ar-s , le cerveau fait le travail .. ou pas ..

personnellement les images que certains voit dans des miriades de points colorés, chez moi ça ne fonctionne pas ...

mais par contre, là, ce type d'image, je le voit bien :)

je pense que ça doit etre en fonction de chacun ....

change la couleur des sprites, peut etre que tu es moins sensible au Vert

j'ai gardé le Vert pour le coté "Geek" de l'affaire
une vielle réminiscence des monitors Vert / ou ambre des années 75 :)

mon clavier est retro eclairé Vert , mon bureau a beaucoup d'images verte , mon site tire sur le Vert , l'interieur de la voiture est vert wasabi
je crois que ... j'aime le vert 8O

Re: une montre... special

Publié : lun. 27/févr./2012 20:14
par GallyHC
Dobro> un bon vert et ça repart :)

Re: une montre... special

Publié : lun. 27/févr./2012 21:25
par Backup
ouaip bonne idée , j'y vais :lol:

Re: une montre... special

Publié : lun. 27/févr./2012 21:48
par GallyHC
je te vois bien avec un bon "verre" et ta gratte :)

Re: une montre... special

Publié : lun. 27/févr./2012 23:30
par Backup
je viens de ré éditer le code ci plus haut

parceque sous Seven j'avais un drole de comportement si on essayais de mettre la fenetre plus haut que le haut de l'ecran
la fenetre se redimenssionne !

j'ai donc réactivé le callback +timer , pour redimensionner la fenetre , de la sorte elle reprendra sa forme au bout de 2 secondes :)

Re: une montre... special

Publié : mar. 28/févr./2012 0:04
par nico
Dobro a écrit :c'est curieux , moi ça ne me pose aucun soucis ! 8O
je lis instantanément l'heure ...
auriez vous des problemes de vue ?

ça me demande de l'effort car je vois l'heure mais trop furtivement, du coup je ne suis pas sûr de ce que je vois et je suis obligé de m'y reprendre à plusieurs fois ce qui est trop pénible pour moi.

Re: une montre... special

Publié : mar. 28/févr./2012 0:11
par Backup
bon d'un autre coté le fait que tout le monde ne puisse le lire etait le but de cette montre :)

pour que ce soit lisible il reste la possibilité de clicker sur l'ecran
ou de colorer le sprite #block2 d'une couleurs differente :)
mais ça perdrai de son interet ..

enfin .. c'est surtout le concept graphique qui est intéressant ici :)

Re: une montre... special

Publié : mar. 28/févr./2012 9:50
par Backup
ya un truc que je ne comprends pas 8O

avec le code de la montre ci dessus

si je remplace cette ligne qui marche bien( charge une image qui fait 16x16 )

Code : Tout sélectionner

;LoadSprite(#block,"E:\Dobro\PureBasic\dobro\Dobro_creation\montre\blockA.png",#PB_Sprite_Texture)
par :

Code : Tout sélectionner


CreateSprite(#block,16,16, #PB_Sprite_Texture)
StartDrawing(SpriteOutput(#block))
LineXY(0,0,16,16,#green)
StopDrawing()
(sprite de 16x16 avec ligne oblique dedans )

ça ne marche pas !!

je veux dire, l'image fait 16x16 et représente une ligne oblique

hors , si je la remplace par un sprite 16x16 avec une ligne oblique dedans
celle_ci apparait plus petite ... 8O
il y aurai un bug quelques part que ça m’étonnerai pas ... :)

ou j'ai loupé un truc ?

Re: une montre... special

Publié : mar. 28/févr./2012 10:32
par Backup
j'ai compris le probleme :)

c'est parcequ'en mode :

OpenWindowedScreen(windowid(#window),1 ,1,256,440,1,0,0)

les sprites sont réduit en fonction de la taille de l'ecran , mais pas les images sprite !! ( loadsprite() )

en fait les sprite ( createsprite() ) semblent reduit 2 fois !! alors que les sprites loadsprite() semblent reduit 1 fois

en mode

OpenWindowedScreen(windowid(#window),1 ,1,256,440,0,0,0)

ça fonctionne :)

enfin quoiqu'il en soit il y a une difference de traitement entre le sprite fabriqué ( create sprite )
et le sprite loadé ( loadsprite() )

peut etre bien un bug de OpenWindowedScreen() en fait !!

Re: une montre... special

Publié : mar. 28/févr./2012 12:07
par zaphod
Salut tous,

une adaption du code de dobro, sans sprites :

Code : Tout sélectionner


;
Enumeration
  #window
  #imgad
  #im0
  #im1
  #im2
  #im3
  #font1
  #timer
EndEnumeration
;
Global Dim heure.i(25,18)
Global Dim minut.i(25,18)
Global flagh.i,flagm.i
;
Procedure DrawTime()
  Protected x.i,y.i
  CreateImage(#im3,40,20)
  StartDrawing(ImageOutput(#im3))
  DrawingFont(FontID(#font1))
      If Hour(Date()) <10
         DrawText(1,1,"0"+Str(Hour(Date())),#Green)
         Else
         DrawText(1,1,Str(Hour(Date())),#Green)
      EndIf
      If Minute(Date())<10
         DrawText(20,1,"0"+Str(Minute(Date())),#Green)
         Else
         DrawText(20,1,Str(Minute(Date())),#Green)
      EndIf
      
      For y=0 To 16
         For x=1 To 17
            heure(x,y)=Point(x,y)
            minut(x,y)=Point(x+19,y)
         Next x
      Next y
      StopDrawing()
     ;
  FreeImage(#im3)
EndProcedure

Procedure drawmotif()
  Protected x.i,y.i
  ;
  StartDrawing(ImageOutput(#im0))
  Box(0,0,270,350,#Black)
  ;
  For y=0 To 12
      For x=2 To 18 
         If heure(x,y)>0
           DrawImage(ImageID(#im2), (x*16)-30,(y*16)-30)
            Else
            If  flagh =0
              DrawImage(ImageID(#im1),(x*16)-30,(y*16)-30)
            EndIf
          EndIf
        Next x
      Next y
;      
      For y=2 To 12
        For x=2 To 18
          If minut(x,y)>0
            DrawImage(ImageID(#im2),(x*16)-31,(y*16)+145)           
            Else
            If  flagm=0
               DrawImage(ImageID(#im1),(x*16)-31,(y*16)+145)
            EndIf
         EndIf
      Next x
    Next y
    ;
    StopDrawing()
    ;
    SetGadgetState(#imgad,ImageID(#im0))
EndProcedure
;
;-debut
;
OpenWindow(#window, 0, 0, 270, 350, "TimeMotif", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
 ImageGadget(#imgad,0,0,270,350,0)
 ;
 CreateImage(#im1,16,16);,32|#PB_Image_Transparent) ; \
 StartDrawing(ImageOutput(#im1))
 Line(0,0,16,16,#Green)
 Line(1,0,16,16,#Green)
 Line(0,1,16,16,#Green)
 StopDrawing()
 ;
 CreateImage(#im2,16,16);,32|#PB_Image_Transparent) ; /
 StartDrawing(ImageOutput(#im2))
 LineXY(0,16,16,0,#Green)
 LineXY(1,16,15,0,#Green)
 LineXY(0,15,16,1,#Green)
 StopDrawing()
 ;
 CreateImage(#im0,270,350)
 ;
 LoadFont(#font1, "Courier", 10,#PB_Font_Bold)
 ; 
 Drawtime()
 drawmotif()
 ;
 AddWindowTimer(#window,#timer,1000)
 ;
    Repeat
      Event = WaitWindowEvent()
      Select event
        Case #PB_Event_Gadget
          If EventGadget()=#imgad
          If EventType()=#PB_EventType_LeftClick
            flagh= (Not flagh)
            flagm= (Not flagm)
            drawmotif()
          EndIf
          EndIf
          
        Case #PB_Event_Timer
        If EventTimer() = #timer
          drawtime()
          drawmotif()
        EndIf
        EndSelect
          
    Until Event = #PB_Event_CloseWindow



Re: une montre... special

Publié : mar. 28/févr./2012 12:41
par Backup
content que ça fasse des émules :)

2 choses cependant

l'affichage n'est pas en entier chez moi (l'heure est coupée a droite)
et lorsqu'on click sur la fenetre l'heure apparait, mais reste ensuite en clair :)

Re: une montre... special

Publié : mar. 28/févr./2012 16:19
par Ar-S
zaphod a écrit :Salut tous,

une adaption du code de dobro, sans sprites :

Code : Tout sélectionner


;
Enumeration
  #window
  #imgad
  #im0
  #im1
  #im2
  #im3
  #font1
  #timer
EndEnumeration
;
Global Dim heure.i(25,18)
Global Dim minut.i(25,18)
Global flagh.i,flagm.i
;
Procedure DrawTime()
  Protected x.i,y.i
  CreateImage(#im3,40,20)
  StartDrawing(ImageOutput(#im3))
  DrawingFont(FontID(#font1))
      If Hour(Date()) <10
         DrawText(1,1,"0"+Str(Hour(Date())),#Green)
         Else
         DrawText(1,1,Str(Hour(Date())),#Green)
      EndIf
      If Minute(Date())<10
         DrawText(20,1,"0"+Str(Minute(Date())),#Green)
         Else
         DrawText(20,1,Str(Minute(Date())),#Green)
      EndIf
      
      For y=0 To 16
         For x=1 To 17
            heure(x,y)=Point(x,y)
            minut(x,y)=Point(x+19,y)
         Next x
      Next y
      StopDrawing()
     ;
  FreeImage(#im3)
EndProcedure

Procedure drawmotif()
  Protected x.i,y.i
  ;
  StartDrawing(ImageOutput(#im0))
  Box(0,0,270,350,#Black)
  ;
  For y=0 To 12
      For x=2 To 18 
         If heure(x,y)>0
           DrawImage(ImageID(#im2), (x*16)-30,(y*16)-30)
            Else
            If  flagh =0
              DrawImage(ImageID(#im1),(x*16)-30,(y*16)-30)
            EndIf
          EndIf
        Next x
      Next y
;      
      For y=2 To 12
        For x=2 To 18
          If minut(x,y)>0
            DrawImage(ImageID(#im2),(x*16)-31,(y*16)+145)           
            Else
            If  flagm=0
               DrawImage(ImageID(#im1),(x*16)-31,(y*16)+145)
            EndIf
         EndIf
      Next x
    Next y
    ;
    StopDrawing()
    ;
    SetGadgetState(#imgad,ImageID(#im0))
EndProcedure
;
;-debut
;
OpenWindow(#window, 0, 0, 270, 350, "TimeMotif", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
 ImageGadget(#imgad,0,0,270,350,0)
 ;
 CreateImage(#im1,16,16);,32|#PB_Image_Transparent) ; \
 StartDrawing(ImageOutput(#im1))
 Line(0,0,16,16,#Green)
 Line(1,0,16,16,#Green)
 Line(0,1,16,16,#Green)
 StopDrawing()
 ;
 CreateImage(#im2,16,16);,32|#PB_Image_Transparent) ; /
 StartDrawing(ImageOutput(#im2))
 LineXY(0,16,16,0,#Green)
 LineXY(1,16,15,0,#Green)
 LineXY(0,15,16,1,#Green)
 StopDrawing()
 ;
 CreateImage(#im0,270,350)
 ;
 LoadFont(#font1, "Courier", 10,#PB_Font_Bold)
 ; 
 Drawtime()
 drawmotif()
 ;
 AddWindowTimer(#window,#timer,1000)
 ;
    Repeat
      Event = WaitWindowEvent()
      Select event
        Case #PB_Event_Gadget
          If EventGadget()=#imgad
          If EventType()=#PB_EventType_LeftClick
            flagh= (Not flagh)
            flagm= (Not flagm)
            drawmotif()
          EndIf
          EndIf
          
        Case #PB_Event_Timer
        If EventTimer() = #timer
          drawtime()
          drawmotif()
        EndIf
        EndSelect
          
    Until Event = #PB_Event_CloseWindow


Merci, je trouve le résultat plus "lisible" avec ce code.
P.S : Le résultat reste en claire sauf si tu refaits un clique gauche dedans.