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 »

Ar-S a écrit :
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.
ha oui :oops: bien vu ! :)

pour l'affichage , c'est pourtant strictement le meme que le miens :)
ton cerveau s'habitue !! :)

le code de Zaphod , légèrement modifié pour centrer l'affichage :)

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 19
            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=3 To 13
      For x=2 To 19
         If heure(x,y)>0
           DrawImage(ImageID(#im2), (x*16)-62,(y*16)-50)
            Else
            If  flagh =0
              DrawImage(ImageID(#im1),(x*16)-62,(y*16)-50)
            EndIf
          EndIf
        Next x
      Next y
;     
      For y=3 To 13
        For x=2 To 19
          If minut(x,y)>0
            DrawImage(ImageID(#im2),(x*16)-62,(y*16)+125)           
            Else
            If  flagm=0
               DrawImage(ImageID(#im1),(x*16)-62,(y*16)+125)
            EndIf
         EndIf
      Next x
    Next y
    ;
    StopDrawing()
    ;
    SetGadgetState(#imgad,ImageID(#im0))
EndProcedure
;
;-debut
;
OpenWindow(#window, 0, 0, 260, 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

Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: une montre... special

Message par Ar-S »

Tu fais ça avec ton NC 10 ?
Parce que coté affichage, j'ai pas de soucis avec le code de zaphod mais un décalage avec ton remaniement.

Image

Tes codes précédents affichaient déjà ce décalage chez moi.
Bizarre
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message par Backup »

très étonnant !! 8O

non je code sur mon Msi 17 pouces (voir signature) Resolution 1920x1080

Purebasic 4.60 32/64 bits


avec ma rectification :------------------------------------------------------------------------- -------> Zaphod Version

Image Image

Ps: Merci au passage tu m'a permis de corriger un bug sur mon editeur :)
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: une montre... special

Message par Ar-S »

Essaye de les relancer en 1680 x 1050 pour voir si ça fait pareil.
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message par Backup »

pareil sur toute les resolutions (a partir de 800x600 )

et quelque soit le mode de mise a l'echelle de l'ecran par Nvidia
( parametre qui permet d'avoir le 1024x600 en plein ecran si on veux ou pas .. )
c'est bizarre ça 8O

peut etre un probleme de pilote ... faut que je vérifie ça ..

[reedit] j'ai téléchargé le dernier pilote de nvidia pour ma carte , ça n'a rien changé !
le probleme est ailleurs .... faudrai que quelqu'un d'autre test les 2 codes et nous dise
c'est mon ordi ou le tiens qui va pas ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message par Backup »

bon je viens de reediter mon code (celui des sprites )

effectivement lorsque je teste sur mon NC10 j'ai les memes résultats que toi
(code Zaphode et le miens (maintenant corrigé ) )

Sur mon Msi , j'ai un décalage !! 8O

pilote graphique a jour !

l'utilisation de l'ecran screen en fenêtre semble avoir un bug je pense !

j'ai deja soulevé un lievre sur le forum anglais avec l'histoire du redimensionnent
des sprites et des images qui est différent... peut etre un problème Directx 9 ou 10 ( faut que je vois la mise a jour aussi )

je sais plus ou en est la dernière Version de Directx .. mais je sais que mon MSI gere la dernière
(DirectX 11 )
peut etre que c'est là , le probleme de base avec le Screen de Purebasic ?

vais retester le bug du redimensionnement sur mon Nc10 pour voir

[Reedit]
bon apres test , il n'y a pas de bug avec mon NC10 !

je pense donc que ce "bug" qui n'a lieu que sur mon MSI doit provenir
du DirectX ..... sur mon MSI j'ai la Version 11
c'est embetant ces changement de Version qui sont non compatible
Dernière modification par Backup le jeu. 01/mars/2012 12:09, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message par Backup »

ar-s : tu as quel version de Directx ??

execute "dxdiag"

bon j'ai signalé ce "bug" ici :
http://forums.purebasic.com/english/vie ... 0b921bc38c

on verra si Fred répond :)
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: une montre... special

Message par Ar-S »

J'ai le 11 (7x64...)

Comme d'hab le problème doit venir de la gestion différente de l'affichage entre carte ATI / Nvidia.
Sont pénible...
~~~~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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message par Backup »

ouaip , mais pour le coup ce serai Nvidia qui serai OUT :roll:

parceque mon nc10 (GMA 950 ) c'est meme affichage que toi et Zaphod ( sans décalage )
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: une montre... special

Message par GallyHC »

Bonjour,

Perso pas de prob apar qu'il faut bien plisser les yeux pour pouvoir voir l'heure lollll

Cordialement,
GallyHC
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 »

GallyHC a écrit :Perso pas de prob apar qu'il faut bien plisser les yeux pour pouvoir voir l'heure lollll
tu veux parler dernier code de zaphod posté par Ar-s ?? (page 3)

si c'est celui la click sur la fenetre , et normalement les lettres devraient être centrées

alors que ma modification de ce code (message suivant )
montre en principe les lettres décalées !

hors justement , pas sur mon MSI ( c'est l'inverse ) ;)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: une montre... special

Message par Backup »

autre bizarrerie concernant ce code :roll:

lorsque je compile ma montre en 64 bits ( sous seven 64bits )
que je la mets dans le menu demarrage de win7

la montre plante au démarrage
( pourtant il me semble que les prg mis dans le menu demarrage se lance APRES le system )

alors qu'en 32bits non !

question : un ordinateur 64 bits (seven ) boot en 32 bits puis passe en 64 bits ensuite ?
ou bien est-ce un bug du compilateur Purebasic ?

rappel ce ( ces ) codes font appel au graphisme ... y aurait'il un probleme de boot en 64 bits avec un code utilisant la partie
graphique ?

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

Re: une montre... special

Message par Backup »

Code mis en Version 5.20

les images :
Block A:

Image

block A2:

Image

rappel on peut cliquer sur la montre pour afficher l'heure en clair .. si vous n'arrivez pas a lire ;)

Code : Tout sélectionner

;***********************************************
;Titre  :*illusion
;Auteur  : Dobro
;Date  :20/01/2014
;Heure  :14:54:46
;Version Purebasic :  PureBasic 5.21 LTS (Windows - x86)
;Version de l'editeur :EPB V2.52
; Libairies necessaire : Aucune 
; Adaptation d'un concept de montre "illusion" de chez Tokyo flash
;***********************************************
UsePNGImageDecoder()
global flag_heure=0,flag_min=0
Enumeration
	#window
	#block
	#block2
	#timer
	#timer2
EndEnumeration
InitSprite(); : InitSprite3D()
Declare  WindowCallback(WindowID,message,wParam,lParam)
Declare  animation()
if FileSize("illusion.inf")<>-1
	openfile(1,"illusion.inf")
	global xw=readLong(1)
	global yw=readLong(1)
	CloseFile(1)
	Else
	xw=1
	yw=1
endif
global taillex=(248)/2
global tailley=(436)/2
OpenWindow(#window,xw,yw,taillex,tailley,"Illusion",#PB_Window_BorderLess ) ;#PB_Window_SizeGadget
AddWindowTimer(#window,#timer,1000)
AddWindowTimer(#window,#timer2,2000)
OpenWindowedScreen(windowid(#window),1 ,1,256,440,1,0,0)
SetWindowCallback(@WindowCallback())
;{ ********** dessin du block de base ************
LoadSprite(#block,"E:\Dobro\PureBasic\dobro\Dobro_creation\montre\blockA.png")

; lettre
LoadSprite(#block2,"E:\Dobro\PureBasic\dobro\Dobro_creation\montre\blockA2.png")

;} *********************************************
dim heure(25,18)
dim minut(25,18)
repeat
	
	StartDrawing(ScreenOutput())
		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
		
		:L=0
		for y=1 to 16
			for x=1 to 16
				heure(x,y)=point(x,y)
				minut(x,y)=point(x+20,y)
			next x
		next y
	StopDrawing()
	ClearScreen(0)
	
	;{ *********** Affichage *******************  
	L=0
	;Start3D()
	for y=0 to 16
		for x=0 to 16 
			if heure(x,y)>0
				DisplaySprite(#block2,(x*16)-16,(y*16)-32)
				
				else
				if  flag_heure =0
					DisplaySprite(#block,(x*16)-16,(y*16)-32)
				endif
			endif
			
			if minut(x,y)>0
				
				DisplaySprite(#block2,(x*16),(y*16)+160+16)
				
				Else
				if  flag_min=0
					DisplaySprite(#block,(x*16),(y*16)+160+16)
				endif
			endif
		next x
	next y
	;Stop3D()
	
	FlipBuffers()
	ClearScreen(0)
	;} ***************************************²
	event= WaitWindowEvent(20)
	select event
		;case #PB_Event_Timer
		
		case #WM_LBUTTONdown
		SendMessage_(WindowID(#Window), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
		
		flag_min=1
		flag_heure=1
		openfile(1,"illusion.inf")
		WriteLong(1,WindowX(#window))
		WriteLong(1,Windowy(#window))
		CloseFile(1)
		
		case #WM_RBUTTONdown
		event=#PB_Event_CloseWindow
	endselect
	
until event=#PB_Event_CloseWindow
Delay(500)
end
; 
Procedure WindowCallback(WinID,message,wParam,lParam)
	; by Dobro
	res=#PB_ProcessPureBasicEvents
	Select message
		case #WM_LBUTTONUP
		; 
		flag_min=0
		flag_heure=0
		Case #WM_PAINT
		flag_min=0
		flag_heure=0
		
		Case #WM_TIMER
		
		if EventTimer() = #timer
			flag_min=0
			flag_heure=0
			animation()
			
		endif
		if EventTimer() = #timer2
			; rafraichi l'affichage
			flag_min=0
			flag_heure=0
			ResizeWindow(#window,#pb_ignore,#pb_ignore,taillex,tailley)
		endif
		;EndSelect
	EndSelect
	ProcedureReturn res ; important , laissez passer les autres evenements !!!
EndProcedure
procedure animation()
	
	static pos_block
	static pos_block2
	
	pos_block=pos_block-1
	pos_block2=pos_block2+1
	if  pos_block<0 : pos_block=3:endif
	if  pos_block2>3
		pos_block2=0
		RemoveWindowTimer(#Window,#timer)
		AddWindowTimer(#window,#timer,random(60000)+10000)
	endif
	select pos_block
		case 0
		RotateSprite(#block,0,1)
		case 1
		RotateSprite(#block,90,1)
		case 2
		RotateSprite(#block,180,1)
		case 3
		RotateSprite(#block,270,1)
	endselect
	
	select pos_block2
		case 0
		RotateSprite(#block2,0,1)
		case 1
		RotateSprite(#block2,90,1)
		case 2
		RotateSprite(#block2,180,1)
		case 3
		RotateSprite(#block2,270,1)
	endselect
	
EndProcedure


; 



; 

; EPB
Dernière modification par Backup le mar. 21/janv./2014 2:59, modifié 5 fois.
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Illusion..une montre... special

Message par Micoute »

Merci Dobro pour ce partage !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Illusion..une montre... special

Message par Ar-S »

Dobro soit tu link les images nécessaires, soit tu dé-commentes les lignes de creasprite mais là tu es entre les 2.
En 5.21 faut rebidouiller par contre.
~~~~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