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"

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

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