Page 1 sur 1

petit effet sympa sprites 3D

Publié : mer. 31/oct./2007 3:09
par case

Code : Tout sélectionner

;initialisation des modules PURE
If InitSprite() =0
	MessageRequester(Titre$, "impossible d'initialiser le systeme de sprites",  #PB_MessageRequester_Ok)
	End
EndIf
If InitSprite3D() =0
	MessageRequester(Titre$, "impossible d'initialiser le systeme de sprites3d",  #PB_MessageRequester_Ok)
	End
EndIf
If InitMouse() =0
	MessageRequester(Titre$, "impossible d'initialiser la souris",  #PB_MessageRequester_Ok)
	End
EndIf

; structure des sprites
Structure Pnt
	sprite.b
	zoom.b
	rot.f
EndStructure
;;

;
;
;creation fenetre
;
;
main=OpenWindow(0,0,0,1024,768,"floutage")
screen=OpenWindowedScreen(WindowID(0),0,0,1024,768,0,0,0);32,"");,0,0)
TransparentSpriteColor(#PB_Default,RGB(255,1,1))
ClearScreen(0)
GrabSprite(0,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(255,255,255))
GrabSprite(1,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(255,0,255))
GrabSprite(2,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(255,255,0))
GrabSprite(3,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(0,255,255))
GrabSprite(4,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(0,255,0))
GrabSprite(5,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(255,0,0))
GrabSprite(6,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(0,0,255))
GrabSprite(7,0,0,10,10,#PB_Sprite_Texture)

ClearScreen(0)
CreateSprite3D(0,0)
CreateSprite3D(1,1)
CreateSprite3D(2,2)
CreateSprite3D(3,3)
CreateSprite3D(4,4)
CreateSprite3D(5,5)
CreateSprite3D(6,6)
CreateSprite3D(7,7)


Dim spr.pnt(100,100)

For y= 1 To 100
	For x= 1 To 100
		spr(x,y)\sprite=Random(6)+1
		spr(x,y)\zoom=Random(6)+1
		spr(x,y)\rot=Random(360)
	Next
Next
Start3D()
 	ZoomSprite3D(1,1024,768)
 	DisplaySprite3D(1,0,0,25)
 	ZoomSprite3D(0,1024,768)
 	r=0:r=0:b=0:ra=1
Repeat

	t=t+1
  Repeat
	Event = WindowEvent()
  	spr=0
    Select Event 
    Case #PB_Event_Gadget
     	If EventGadget() = 0
        End
    	EndIf       
    Case #PB_Event_CloseWindow
      End 
    EndSelect
 	Until Event = 0 
 	ExamineMouse()
 	FrontColor(RGB(255,255,255))
 	DisplaySprite3D(0,0,0,25)
 	;
 	z=z+1 	

 	For y=1 To 100
 	For x=1 To 100
 	ZoomSprite3D(spr(x,y)\sprite,spr(x,y)\zoom,spr(x,y)\zoom)
 	spr(x,y)\rot=spr(x,y)\rot+10
 	RotateSprite3D(spr(x,y)\sprite,spr(x,y)\rot,0)
	FrontColor(RGB(Random(255),Random(255),Random(255)))
	;Sprite3DBlendingMode(5,2)  			
 	DisplaySprite3D(spr(x,y)\sprite,-150+(x*20)+100*Cos((z+x)/100),-150+(y*10)+100*Sin((z+y)/100))
 	;Sprite3DBlendingMode(5,6)
	If Random(100)>90
		spr(x,y)\zoom=spr(x,y)\zoom+Random(2)-1
		If spr(x,y)\zoom>20
			spr(x,y)\zoom=20
		EndIf
		If spr(x,y)\zoom<1
			spr(x,y)\zoom=1
		EndIf
		
	EndIf
 	Next
 	Next
 	StartDrawing(ScreenOutput())
 	DrawingMode(#PB_2DDrawing_Transparent)
 	r=r+ra:If r=255:ra=-ra:ba=1:EndIf:If r=0:ra=-ra:EndIf
 	g=g+ga:If g=255:ga=-ga:ga=1:EndIf:If g=0:ga=-ga:EndIf
 	b=b+ba:If b=255:ba=-ba:EndIf:If b=0:ba=-ba:EndIf
 	DrawText(MouseX()+15*Cos(z/10),MouseY()+15*Sin(z/10),"PURE BASIC",RGB(r,g,b),0)
 	StopDrawing()

 	;
 	ExamineKeyboard() 	
 	FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) <>0

Publié : mer. 31/oct./2007 12:04
par Ar-S
Houaaa tu m'as foutu le vertige en 3 secondes avec ce code :P

Publié : mer. 31/oct./2007 22:02
par Buckethead
Mince ca ne marche pas chez moi, Line 89 There's no current 2D drawing object (PureBasic 4.02, XP pro SP2)

Edit: j'ai mis en REM les lignes comprenant les "FrontColor" et ajouté InitKeyboard()
Très bel effet ! (Même si ca doit etre un peu différent avec les frontcolor)

Publié : mer. 31/oct./2007 22:45
par case
ca ne change que la couleur de 'pure basic '

Publié : jeu. 01/nov./2007 10:13
par zorg
Buckethead a écrit :Mince ca ne marche pas chez moi, Line 89 There's no current 2D drawing object (PureBasic 4.02, XP pro SP2)

Edit: j'ai mis en REM les lignes comprenant les "FrontColor" et ajouté InitKeyboard()
Très bel effet ! (Même si ca doit etre un peu différent avec les frontcolor)
ça fait pareil pour moi mais ça fonctionne sans le debugger. :wink:

Publié : jeu. 01/nov./2007 10:37
par tmyke
J'ai le meme soucis avec FrontColor(). Cette fonction ne doit-elle pas s'employer
après un 'StartDrawing()' ?
Sinon, j'ai du aussi rajouter un 'InitKeyboard()'.

Sinon, c'est bien sympa... ;)

Publié : jeu. 01/nov./2007 18:16
par Buckethead
Zorg, effectivement ;)

Je me demande ce qui se passe avec le compilateur, les instructions sont "bypassées" ? Il y a quand même un retour clavier pour quitter l'application. FrontColor ou pas j'ai le même résultat.

Publié : jeu. 01/nov./2007 18:47
par Backup
code corrigé

Code : Tout sélectionner


;initialisation des modules PURE
If InitSprite() =0
  MessageRequester(Titre$, "impossible d'initialiser le systeme de sprites",  #PB_MessageRequester_Ok)
  End
EndIf
If InitSprite3D() =0
  MessageRequester(Titre$, "impossible d'initialiser le systeme de sprites3d",  #PB_MessageRequester_Ok)
  End
EndIf
If InitMouse() =0
  MessageRequester(Titre$, "impossible d'initialiser la souris",  #PB_MessageRequester_Ok)
  End
EndIf
If InitKeyboard() =0
  MessageRequester(Titre$, "impossible d'initialiser le clavier",  #PB_MessageRequester_Ok)
  End
EndIf

; structure des sprites
Structure Pnt
  sprite.b
  zoom.b
  rot.f
EndStructure
;;

;
;
;creation fenetre
;
;
main=OpenWindow(0,0,0,1024,768,"floutage")
screen=OpenWindowedScreen(WindowID(0),0,0,1024,768,0,0,0);32,"");,0,0)
TransparentSpriteColor(#PB_Default,RGB(255,1,1))
ClearScreen(0)
GrabSprite(0,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(255,255,255))
GrabSprite(1,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(255,0,255))
GrabSprite(2,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(255,255,0))
GrabSprite(3,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(0,255,255))
GrabSprite(4,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(0,255,0))
GrabSprite(5,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(255,0,0))
GrabSprite(6,0,0,10,10,#PB_Sprite_Texture)
ClearScreen(RGB(0,0,255))
GrabSprite(7,0,0,10,10,#PB_Sprite_Texture)

ClearScreen(0)
CreateSprite3D(0,0)
CreateSprite3D(1,1)
CreateSprite3D(2,2)
CreateSprite3D(3,3)
CreateSprite3D(4,4)
CreateSprite3D(5,5)
CreateSprite3D(6,6)
CreateSprite3D(7,7)


Dim spr.Pnt(100,100)

For y= 1 To 100
  For x= 1 To 100
    spr(x,y)\sprite=Random(6)+1
    spr(x,y)\zoom=Random(6)+1
    spr(x,y)\rot=Random(360)
  Next
Next
Start3D()
ZoomSprite3D(1,1024,768)
DisplaySprite3D(1,0,0,25)
ZoomSprite3D(0,1024,768)
r=0:r=0:b=0:ra=1
Repeat
  
  t=t+1
  Repeat
    Event = WindowEvent()
    spr=0
    Select Event
      Case #PB_Event_Gadget
        If EventGadget() = 0
          End
        EndIf       
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until Event = 0
  ExamineMouse()
  
  DisplaySprite3D(0,0,0,25)
  ;
  z=z+1    
  
  For y=1 To 100
    For x=1 To 100
      ZoomSprite3D(spr(x,y)\sprite,spr(x,y)\zoom,spr(x,y)\zoom)
      spr(x,y)\rot=spr(x,y)\rot+10
      RotateSprite3D(spr(x,y)\sprite,spr(x,y)\rot,0)
      
      ;Sprite3DBlendingMode(5,2)           
      DisplaySprite3D(spr(x,y)\sprite,-150+(x*20)+100*Cos((z+x)/100),-150+(y*10)+100*Sin((z+y)/100))
      ;Sprite3DBlendingMode(5,6)
      If Random(100)>90
        spr(x,y)\zoom=spr(x,y)\zoom+Random(2)-1
        If spr(x,y)\zoom>20
          spr(x,y)\zoom=20
        EndIf
        If spr(x,y)\zoom<1
          spr(x,y)\zoom=1
        EndIf
        
      EndIf
    Next
  Next
  StartDrawing(ScreenOutput())
  DrawingMode(#PB_2DDrawing_Transparent)
  FrontColor(RGB(Random(255),Random(255),Random(255)))
  r=r+ra:If r=255:ra=-ra:ba=1:EndIf:If r=0:ra=-ra:EndIf
  g=g+ga:If g=255:ga=-ga:ga=1:EndIf:If g=0:ga=-ga:EndIf
  b=b+ba:If b=255:ba=-ba:EndIf:If b=0:ba=-ba:EndIf
  FrontColor(RGB(255,255,255))
  DrawText(MouseX()+15*Cos(z/10),MouseY()+15*Sin(z/10),"PURE BASIC",RGB(r,g,b),0)
  StopDrawing()
  
  ;
  ExamineKeyboard()    
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) <>0