Illusion..une montre... special

Programmation d'applications complexes
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message 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 :)
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: une montre... special

Message par SPH »

J'ai reussi en louchant. Mais la methode reste a ameliorer
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: une montre... special

Message par kernadec »

bonsoir
excellent.. merci, manque plus que les gloutons :)


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

Re: une montre... special

Message 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
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: une montre... special

Message par GallyHC »

Dobro> un bon vert et ça repart :)
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message par Backup »

ouaip bonne idée , j'y vais :lol:
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: une montre... special

Message par GallyHC »

je te vois bien avec un bon "verre" et ta gratte :)
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message 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 :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: une montre... special

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message 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 :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message 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 ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message 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 !!
zaphod
Messages : 135
Inscription : dim. 07/déc./2008 9:32

Re: une montre... special

Message 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


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

Re: une montre... special

Message 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 :)
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: une montre... special

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre