Un petit délire - Lotus Démo

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Un petit délire - Lotus Démo

Message par djes »

Code : Tout sélectionner

;********************************
;*
;* LOTUS DEMO
;* djes 28/03/2011
;*
;********************************

Procedure FilterCallback(x, y, SourceColor, TargetColor)
  r.l = (0.5 * Sqr((x - 64) * (x - 256) + (y - 256) * (y - 256) )) 
  v.l = (0.5 * Sqr((x - 256) * (x - 64) + (y - 256) * (y - 64) )) 
  b.l = (0.5 * Sqr((x - 256) * (x - 256) + (y - 64) * (y - 256) )) 
  a.l = (256 * (512 - Sqr((x - 256) * (x - 256) + (y - 256) * (y - 256) ))) 
  u%255
  ProcedureReturn RGBA(r, v, b, a)
EndProcedure

If InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Sprite system can't be initialized", 0)
  End
EndIf

If InitSprite3D() = 0
  MessageRequester("Error", "Sprite3D system can't be initialized correctly", 0)
  End
EndIf

If OpenWindow(0, 0, 0, 512, 512, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  
  If OpenWindowedScreen(WindowID(0), 0, 0, 512, 512, 0, 0, 0)

    If CreateImage(0, 512, 512, 32) And StartDrawing(ImageOutput(0))
 
      DrawingMode(#PB_2DDrawing_AlphaChannel)
      Box(0, 0, 512, 512, $00000000)
      DrawingMode(#PB_2DDrawing_CustomFilter)      
      CustomFilterCallback(@FilterCallback())     
      Circle( 256, 256, 256 )
      StopDrawing()
      
    EndIf
    
    If StartDrawing(ScreenOutput())      
      DrawImage(ImageID(0), 0, 0)
      StopDrawing()     
    EndIf
    
    GrabSprite(0, 0, 0, 512, 512, #PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
    
    For u = 0 To 31
      CreateSprite3D(u, 0)
    Next u
     
    Sprite3DQuality(#PB_Sprite3D_BilinearFiltering)
   
    i.f = 0
    bl_src = 2
    bl_dst = 6
    
    Repeat
      
      Event = WindowEvent()
      
      Select Event 
        Case #PB_Event_Gadget
          If EventGadget() = 0
            End
          EndIf
        
        Case #PB_Event_CloseWindow
          End 
      EndSelect
     
      FlipBuffers()
      
      ClearScreen(RGB(0,50,128))
      
      
      If Start3D()
        
        Sprite3DBlendingMode(bl_src, bl_dst) 
  
        For u = 0 To 31
          w = 512 * Sin(i + u * 5)
          h = 512 * Sin(i + u * 5)
          ZoomSprite3D(u, w, h)
          RotateSprite3D(u, i * 100 + u * 5, 0)
          DisplaySprite3D(u, 256 - w / 2 - 8 * Sin(i * u), 256 - h / 2 - 8 * Cos(i * u), 127)
        Next u    
        
        Stop3D()
      EndIf
      
      ExamineKeyboard()
      
      If KeyboardReleased(#PB_Key_Up)
        bl_src + 1
      EndIf
      If KeyboardReleased(#PB_Key_Down)
        bl_src - 1
      EndIf
      If KeyboardReleased(#PB_Key_Left)
        bl_dst + 1
      EndIf
      If KeyboardReleased(#PB_Key_Right)
        bl_dst - 1
      EndIf
        
      i+0.01
    Until KeyboardPushed(#PB_Key_Escape)
  
  Else
    MessageRequester("Erreur", "Can't open a screen !", 0)
    End
  EndIf  

Else
  MessageRequester("Error", "Can't open a window !", 0)
EndIf
  
  
End   
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Un petit délire - Lotus Démo

Message par TazNormand »

Superbe, reste plus qu'à en faire un économiseur d'écran.

Bravo Djes !!!

Edit : Juste pour voir, j'ai changé 2/3 valeur pour une résolution de 1280*1024 :

Code : Tout sélectionner

;********************************
;*
;* LOTUS DEMO
;* djes 28/03/2011
;*
;********************************

Procedure FilterCallback(x, y, SourceColor, TargetColor)
	r.l = (0.5 * Sqr((x - 64) * (x - 256) + (y - 256) * (y - 256) )) 
	v.l = (0.5 * Sqr((x - 256) * (x - 64) + (y - 256) * (y - 64) )) 
	b.l = (0.5 * Sqr((x - 256) * (x - 256) + (y - 64) * (y - 256) )) 
	a.l = (256 * (512 - Sqr((x - 256) * (x - 256) + (y - 256) * (y - 256) ))) 
	u%255
	ProcedureReturn RGBA(r, v, b, a)
EndProcedure

If InitSprite() = 0 Or InitKeyboard() = 0
	MessageRequester("Error", "Sprite system can't be initialized", 0)
	End
EndIf

If InitSprite3D() = 0
	MessageRequester("Error", "Sprite3D system can't be initialized correctly", 0)
	End
EndIf

If OpenWindow(0, 0, 0, 1280, 1024, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	
	If OpenWindowedScreen(WindowID(0), 0, 0, 1280, 1024, 0, 0, 0)

		If CreateImage(0, 1024,1024, 32) And StartDrawing(ImageOutput(0))

			DrawingMode(#PB_2DDrawing_AlphaChannel)
			Box(0, 0, 1024,1024, $00000000)
			DrawingMode(#PB_2DDrawing_CustomFilter)      
			CustomFilterCallback(@FilterCallback())     
			Circle( 256, 256, 256 )
			StopDrawing()
			
		EndIf
		
		If StartDrawing(ScreenOutput())      
			DrawImage(ImageID(0), 0, 0)
			StopDrawing()     
		EndIf
		
		GrabSprite(0, 0, 0, 1024,1024, #PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
		
	For u = 0 To 31
		CreateSprite3D(u, 0)
	Next u
		
	Sprite3DQuality(#PB_Sprite3D_BilinearFiltering)

	i.f = 0
	bl_src = 2
	bl_dst = 6
	
	Repeat
		
		Event = WindowEvent()
		
		Select Event 
			Case #PB_Event_Gadget
				If EventGadget() = 0
					End
				EndIf
			
			Case #PB_Event_CloseWindow
				End 
		EndSelect
		
		FlipBuffers()
		
		ClearScreen(RGB(0,50,128))
		
		
		If Start3D()
			
			Sprite3DBlendingMode(bl_src, bl_dst) 

			For u = 0 To 31
				w = 1024 * Sin(i + u * 5)
				h = 1024 * Sin(i + u * 5)
				ZoomSprite3D(u, w, h)
				RotateSprite3D(u, i * 100 + u * 5, 0)
				DisplaySprite3D(u, 640 - w / 2 - 8 * Sin(i * u), 512 - h / 2 - 8 * Cos(i * u), 127)
			Next u    
			
			Stop3D()
		EndIf
		
		ExamineKeyboard()
		
		If KeyboardReleased(#PB_Key_Up)
			bl_src + 1
		EndIf
		If KeyboardReleased(#PB_Key_Down)
			bl_src - 1
		EndIf
		If KeyboardReleased(#PB_Key_Left)
			bl_dst + 1
		EndIf
		If KeyboardReleased(#PB_Key_Right)
			bl_dst - 1
		EndIf
			
		i + 0.01
	Until KeyboardPushed(#PB_Key_Escape)
	
	Else
		MessageRequester("Erreur", "Can't open a screen!", 0)
		End
	EndIf  

Else
	MessageRequester("Error", "Can't open a window!", 0)
EndIf

End
Image
Image
Torp
Messages : 360
Inscription : lun. 22/nov./2004 13:05

Re: Un petit délire - Lotus Démo

Message par Torp »

Super Jolie !
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: Un petit délire - Lotus Démo

Message par kelebrindae »

Très beau, et en très peu de code; on reconnaît la patte d'un ancien demo-maker...
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Un petit délire - Lotus Démo

Message par Ar-S »

Ah c'est chouette, par contre ou changer la vitesse ? J'ai viré l'openwindowscreen et la windows pour les remplacer par un openscreen et du coup, ça marche bien mais ça bombarde trop !
~~~~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
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Un petit délire - Lotus Démo

Message par djes »

Le petit "i + 0.01" du bas :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Un petit délire - Lotus Démo

Message par Ar-S »

effectivement, avec i + 0.001 ça le fait bien mieux ;)
~~~~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
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Re: Un petit délire - Lotus Démo

Message par flaith »

C'est Thérèse au lit :mrgreen:
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Un petit délire - Lotus Démo

Message par venom »

Sympa ton effet Djes :wink:
Bravo 8)





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Un petit délire - Lotus Démo

Message par Le Soldat Inconnu »

oui, très zoli :D
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)]
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Un petit délire - Lotus Démo

Message par djes »

Merci merci... Les nouvelles fonctions de remplissage sont du tonnerre :)
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Un petit délire - Lotus Démo

Message par Patrick88 »

compatible mac, très zouli

pat
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Un petit délire - Lotus Démo

Message par SPH »

tres beau :idea:

!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.12LTS- 64 bits
Répondre