Page 1 sur 1

Ondulation

Publié : dim. 25/nov./2012 3:35
par SPH

Code : Tout sélectionner

; SPH(2006)
; PB4 

InitSprite() 
InitMouse() 
InitKeyboard() 

;SetPriorityClass_ ( GetCurrentProcess_ (), #IDLE_PRIORITY_CLASS ) 

If ExamineDesktops() 
   dw.w=DesktopWidth(0) 
   dh.w=DesktopHeight(0) 
Else 
   dw.w=1024 
   dh.w=768 
EndIf 
dw2=dw/2
dh2=dh/2

dw1=dw/4
dw3=(dw/4)*3

OpenScreen(dw,dh,32,"") 

;;;;;;;;;;;
;;;;;;;;;;;
autre:
rr1.f=Random(5)+Random(1000)/1000
rr2.f=Random(5)+Random(1000)/1000
vv1.f=Random(5)+Random(1000)/1000
vv2.f=Random(5)+Random(1000)/1000
bb1.f=Random(5)+Random(1000)/1000
bb2.f=Random(5)+Random(1000)/1000
or1.f=rr1
or2.f=rr2
ov1.f=vv1
ov2.f=vv2
ob1.f=bb1
ob2.f=bb2
cr1.f=0.001+Random(1000)/10000
cr2.f=0.001+Random(1000)/10000
cv1.f=0.001+Random(1000)/10000
cv2.f=0.001+Random(1000)/10000
cb1.f=0.001+Random(1000)/10000
cb2.f=0.001+Random(1000)/10000

a1.f=0.001+Random(1000)/35000
a2.f=0.002+Random(1000)/35000
a3.f=0.003+Random(1000)/35000
a4.f=0.001+Random(1000)/35000
a5.f=0.002+Random(1000)/35000
a6.f=0.003+Random(1000)/35000

;;;;;;;;;;;
Repeat ; Until xmouse<>xmouse2 Or ymouse<>ymouse2 Or KeyboardPushed(#PB_Key_All) 

ExamineMouse() 
xmouse=MouseDeltaX()/55 ; /x : x= sensibilité
ymouse=MouseDeltaY()/55 ; /x : x= sensibilité
;*****
ClearScreen(0)
StartDrawing(ScreenOutput())


;;;;;;;;;;;

For i=0 To dh-1
r1=63+Cos(rr1)*63
r2=63+Sin(rr2)*63
v1=63+Cos(vv1)*63
v2=63+Cos(vv2)*63
b1=63+Sin(bb1)*63
b2=63+Sin(bb2)*63

rr=r1+v1+b1
vv=r2+v2+b2

;LineXY(0,i,dw,i,RGB(b1+b2,r1+r2,v1+v2))
;LineXY(dw2,i,dw,i,RGB(b1+b2,r1+r2,v1+v2))

LineXY(dw2-rr,i,dw2+vv,i,RGB(r1+r2,v1+v2,b1+b2))

rr1+a1
rr2+a2
vv1+a3
vv2+a4
bb1+a5
bb2+a6
Next
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  2



or1+cr1
rr1=or1
or2+cr2
rr2=or2
ov1+cv1
vv1=ov1
ov2+cv2
vv2=ob2
ob1+cb1
bb1=ob1
ob2+cb2
bb2=ob2
;;;;;;;;;;;
StopDrawing() 
;*****
FlipBuffers() 

If MouseButton(#PB_MouseButton_Left)<>0
Goto autre
EndIf

ExamineKeyboard() 
Until xmouse<>0 Or ymouse<>0 Or KeyboardPushed(#PB_Key_All) 
End 

Re: Ondulation

Publié : dim. 25/nov./2012 4:09
par nemerod256
belle effet
mais c'est pourquoi ?

Re: Ondulation

Publié : dim. 25/nov./2012 13:39
par MLD
@SPH

Salut
Sympa l'effet
Si tu le fait de haut en bas au lieu de l'inverse, tu pourrai l'appelé "TARTINE DEGOULINANTE" :mrgreen:

Re: Ondulation

Publié : dim. 25/nov./2012 14:00
par Backup
hum , tu nous fais du réchauffé ? ;)

par politesse je ne donnerai pas le lien du topic original ;)


Code : Tout sélectionner

InitMouse()
InitKeyboard()
InitJoystick()

Declare Ondulation(xo,yo,Texte.s,ro,vo,bo) 
; ***** variables a OLIV ********* 
; Variables
Global yo.f = 110

;vitesses de départ
Global vxo.f = 10
Global vyo.f = -45

Global Paso.f=0.2
#HauteurSin = 50 ; Coef qui joue sur la hauteur de la sinusoide
#LargeurSin = 50 ; Coef qui joue sur la largeur de la sinusoide
#VitesseAngle =  1 * #PI / 50 ; vitesse de modification de l'angle de départ du texte
Global angleo.f, FontID,   long_text_bas
; ****************************************


Enumeration
	#fenetre
	#Police
	#Image_buffer
EndEnumeration

pa=10:r=255-16
LoadFont(0,"arial",50)

; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
WindowID = OpenWindow(#Fenetre, 0, 0,1024,768,  "hello",#PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered ) 
Result = OpenWindowedScreen(WindowID(#Fenetre) ,0,0, 1027, 768, 1, 0,0) 
CentreX = (EcranX)  / 2
CentreY = 0 
Vitesse.f = 8.2 ;donne scroling vert ou hori suivant
angle.f = 0  ;donne scroling vert ou hori suivant
amplitude.f =120 ; profondeur des dents
pas.f = 0.3 ; nombre de dent de scie  
ss.f=2

Global Dim palette.l(500)
For i = 0 To 500
	angle.f = angle + ((2 * #PI) / 500)
	palette(i) = RGB (Abs (Cos (angle + (4*#PI/6))* 255),Abs (Cos (angle + #PI/3)* 255), Abs (Cos (angle)* 255))
Next 
Texte.s= ".................... coucou SPH , tu ressort les vieux code ???    :D............"
Repeat
	artichaut = artichaut+Cos( 36)/10
	artison =artison+Sin( 36) 
	ExamineMouse() 
	StartDrawing(ScreenOutput()) 
	; ***************************************************************************
	a = Sin ((x + artichaut)/(500 + Sin (x/100)*100)) * 75 + 75
	For Y=1 To EcranY-1  
		artichaut = Cos ((Y + artison)/(300 + Cos (Y/100)*100)) * 75 + 75 
		coul = a + artichaut
		If coul > 500
			coul = coul-500
		EndIf
		coul = palette (coul) 
		i=Y
		amplitude= amplitude+ss
		If amplitude>120:ss=-ss:EndIf
		If amplitude<-120:ss=-0.001:ss=-ss:EndIf    
		x=(CentreX)-300+ Sin((angle + i* pas*10  )  * 0.0174533) * amplitude 
		LineXY(x+Sin((angle + i* pas*3  )  * 0.0174533) * amplitude ,Y,x+500+Sin((angle + i* pas*5  )  * 0.0174533) * amplitude ,Y,coul) 
	Next Y
	StopDrawing()  
	angle=angle + Vitesse  
	;************ ondulation text ***************
	xo=xo-2
	If xo<-1600
		xo= EcranX
	EndIf
	; ***************************************
	Ondulation(xo,yo,Texte.s,255,0,255)  
	WindowEvent()  
	If MouseButton(2)
		End 
	EndIf 
	FlipBuffers():; affiche l'ecran
	ClearScreen(RGB(0, 0, 0)) :;efface l'ecran 
Until Event=#PB_Event_CloseWindow 

Procedure Ondulation(xo,yo,Texte.s,ro,vo,bo)  
	; procedure realisé par OLIV
	StartDrawing(ScreenOutput()) ; Pour pouvoir utiliser les commandes des dessin 2D.
	DrawingMode( #PB_2DDrawing_Transparent) ; On selectionne le mode pour ne pas avoir de fond derrière les lettres.
	FrontColor(RGB(ro,vo,bo) ); On change la couleur. 
	DrawingFont(FontID(0)) ; On change la police 
	angleo + #VitesseAngle ; Angle de départ de la sinusoide en radian 
	If angleo >= 2 * #PI
		angleo = 0
	EndIf 
	; On affiche toute les lettres
	posx = 10 ; Position du caractère
	For n = 1 To Len(Texte) ; Pour chaque lettre du texte 
		Lettre.s = Mid(Texte, n, 1) ; on récupère la lettre à la position n 
		posy = 50 + #HauteurSin * Sin(angleo + posx / #LargeurSin) ; on calcul la position en Y de la lettre
		; On part du centre de l'image (50) puis on ajoute un sin
		; #HauteurSin fait varier l'amplitude du mouvement
		; l'angle mis dans le sinus est d'abord composé de l'angle de départ d'affichage du texte (Angle)
		; puis on augmente l'angle au fur et à mesure que l'on affiche des lettres avec le coefficient #LargeurSin qui permet de faire varier la largeur de la sinusoide
		
		DrawText(xo+posx, yo+posy,Lettre) 
		posx +TextWidth(Lettre) 
	Next 
	StopDrawing() ; On signife que l'on arrête les fonctions dessin 2D.
EndProcedure


Re: Ondulation

Publié : lun. 26/nov./2012 8:24
par SPH
Dobro a écrit :hum , tu nous fais du réchauffé ? ;)
Oui, il y a du new people a reconquerir :wink:

Re: Ondulation

Publié : lun. 26/nov./2012 9:42
par kelebrindae
Bin, réchauffé ou pas, moi j'trouve ça bien joli... :)

Re: Ondulation

Publié : mar. 27/nov./2012 14:07
par TazNormand
Très bonne initiative.

D'ailleurs, faut aussi relancer les PurePunchs. Ah et si un ancien démoMaker pouvait faire des tutos sur les différents effets de démos, accompagné d'exemple en PB, genre :
Plasma
CopperList
Rasters
Scrollings
twisted bars
etc...

Re: Ondulation

Publié : mar. 27/nov./2012 16:04
par djes
TazNormand a écrit :D'ailleurs, faut aussi relancer les PurePunchs.
Ok ! :)

Re: Ondulation

Publié : mar. 27/nov./2012 16:47
par Ar-S
TazNormand a écrit :Très bonne initiative.

D'ailleurs, faut aussi relancer les PurePunchs. Ah et si un ancien démoMaker pouvait faire des tutos sur les différents effets de démos, accompagné d'exemple en PB, genre :
Plasma
CopperList
Rasters
Scrollings
twisted bars
etc...
Ce serait top.
J'ai recupéré des codes sur divers forums regroupant quelques uns de ces effets, reste à les retrouver et voir s'ils sont encore fonctionnels.
On a déjà de bon exemples avec le Shadow Of the Beast et le remake de la cracktro scoopex.

Re: Ondulation

Publié : mar. 27/nov./2012 16:52
par Backup