Voici ma production à l'arrache...
ps : un soucis avec la transparence d'une texture grrrrr...plus le temps de corriger (les invités arrivent dans 2h et ma douce s'impatiente !!)
Code : Tout sélectionner
;*****************************************************************************
;*
;* Season's Greetings PurePunch Demo contest
;* PureBasic 5.00
;* 80 lines of 80 chars, 1 month delay
;*
;* Name : Winter Punch
;* Author : Cool Dji
;* Date : 31 decembre 2012
;* Notes : RAS
;*
;*****************************************************************************
InitEngine3D():InitSprite():InitKeyboard():InitSprite3D():InitSound()
Global si.s,n0.s,c,l,t:UsePNGImageDecoder():UseOGGSoundDecoder()::InitMouse()
Procedure ri(x.i,y.i):cl=Point(x,y):n0=Str(Red(cl)):n1.s=Str(Green(cl))
n2.s=Str(Blue(cl)):sr.s="":w=Len(Bin(Val(n2))):If w<8:For q=0 To 8-w-1
sr=sr+"0":Next:EndIf:si=Bin(Val(n1))+sr+Bin(Val(n2)):t=Val("%"+si):If n0="1"
t=-t:EndIf:c+1:If c=512:c=0:l+1:EndIf:EndProcedure
Global Dim At(150,7),Dim T$(11):T$(0)="SNOWMAN":T$(1)="SLOWLY":T$(5)="TOGETHER"
T$(10)="PUREPUNCH":T$(2)="CHANGE[THINGS":T$(3)="FLOWERS"::T$(7)="THINK[BIG"
T$(4)="LOVE":T$(9)="LIFE":T$(6)="PEACE":T$(8)="WORLD":Global nc=5000,b
Global Dim dx.f(nc),Dim zx.f(nc),Dim dy.f(nc),Dim zy.f(nc):For j=1 To nc
zx(j)=(Random(10)-5)/10:zy(j)=(Random(10)-5)/10:Next:LoadImage(0,"W1.png")
GrabImage(0,1,0,377,130,7):StartDrawing(ImageOutput(1)):For k=0 To 25
For j=0 To 4:For i=0 To 6:If Point(k*5+j,i)=0:At(k*5+j,i)=1:EndIf:Next:Next
Next:StopDrawing():LoadSound(0,"W.ogg"):OpenScreen(1024,768,32,"X")
AntialiasingMode(#PB_AntialiasingMode_x6):u=0:k=16:For j=1 To 6
CreateTexture(j,128,128):GrabImage(0,j,u,k,128,128)
StartDrawing(TextureOutput(j)):DrawImage(ImageID(j),0,0,128,128):StopDrawing()
CreateMaterial(j,TextureID(j)):DisableMaterialLighting(j,1):u+128:If j=4:u=0
k=128+16:EndIf:Next:MaterialBlendingMode(3,#PB_Material_AlphaBlend)
CreatePlane(1,2000,2000,1,1,20,20):TransformMesh(1,0,0,0,1,1,1,0,0,0)
CreateEntity(1,MeshID(1),MaterialID(1),1420,0,0):CreatePlane(2,20,20,1,1,1,1)
CreateEntity(0,MeshID(1),MaterialID(1),-600,0,0):Dim Tz(200):For j=0 To 199
CreateEntity(j+300,MeshID(2),MaterialID(1),410,0,1000-j*20)
CreateEntity(j+500,MeshID(2),MaterialID(6),410,0,1000-j*20)
RotateEntity(j+500,0,0,180,#PB_Relative):Tz(j)=j*4:Next:CreateSphere(5,6.4)
CreateSphere(6,4.5):CreateSphere(7,0.4):Restore BN:For j=2 To 8:Read.f in
Read.f kn:Read.f xn:Read.f yn:Read.f zn
CreateEntity(j,MeshID(Int(in)),MaterialID(Int(kn)),xn,yn,zn):Next
StartDrawing(ImageOutput(0)):
CreateMesh(9):For j=1 To 12
ri(c,l):m=t:ri(c,l):n=t:ri(c,l):o=t:AddMeshFace(m,n,o):Next:For j=1 To 24
ri(c,l):m=t:ri(c,l):n=t:ri(c,l):o=t:AddMeshVertex(m,n,o):
Next:StopDrawing()
FinishMesh():NormalizeMesh(9)
StartDrawing(ImageOutput(0)):
CreateMesh(10):For j=1 To 120
ri(c,l):m=t:ri(c,l):n=t:ri(c,l):o=t:AddMeshFace(m,n,o):Next:For j=1 To 136
ri(c,l):m=t:ri(c,l):n=t:ri(c,l):o=t:AddMeshVertex(m,n,o):
Next:StopDrawing():FinishMesh()
NormalizeMesh(10):CreateEntity(9,MeshID(9),MaterialID(3),1000,100,100)
ScaleEntity(9, 0.1, 0.1, 0.1):EntityPhysicBody(9,#PB_Entity_StaticBody)
CreateEntity(10,MeshID(10),MaterialID(2),1000,100,100)
ScaleEntity(10, 0.1, 0.1, 0.1):fe=255:ca.f=0
bf=500:c=0:CreateSphere(2,0.5):P=350:For j=1000 To 5000:v.f=Random(P)-P/2
q.f=Random(P)-P/2:CreateEntity(j,MeshID(2),MaterialID(5),v,Random(200),q)
Next:CreateSphere(3,5):For j=100 To 200:sd=1000+Random(10)
CreateEntity(j,MeshID(3),MaterialID(4),sd,100+Random(10),100+Random(10))
EntityPhysicBody(j,#PB_Entity_SphereBody,1,0,1):Next:co=RGB(200,200,255)
CreateCamera(0,0,0,100,100):CameraBackColor(0,co):Fog(co,100,500,800)
CreateSprite(0,1024,768,#PB_Sprite_Texture):StartDrawing(SpriteOutput(0))
Box(0,0,1024,768,$ffffff):StopDrawing():TransparentSpriteColor(0,0)
CreateSprite3D(0,0):CreateSprite(1,8,8,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(1)):Box(0,0,8,8,$aaaaff):StopDrawing()
TransparentSpriteColor(1,1):CreateSprite3D(1,1):Smt=ElapsedMilliseconds()
PlaySound(0):Repeat:Smtb=ElapsedMilliseconds()-Smt:ExamineKeyboard()
Select Smtb
Case 20000 To 202000:Smt=ElapsedMilliseconds():bf=500:For j=1 To nc:dx(j)=0
dy(j)=0:Next:sa+1:If sa>10:sa=10:EndIf:EndSelect:If ca>150:For j=0 To 199
Tz(j)-1:If (Tz(j)<0) And (Tz(j) >-360)
RotateEntity(300+j,0,0,-0.5,#PB_Relative)
RotateEntity(500+j,0,0,-0.5,#PB_Relative):EndIf:Next:EndIf
ca+0.5:For j=1000 To 5000:MoveEntity(j,Random(100)/1000,-0.8,Random(100)/1000)
If EntityY(j)<0:EntityLocate(j,ca+Random(P)-P/2,200,Random(P)-P/2):EndIf:Next
RotateEntity(9,0,0,0.6,#PB_Relative):RotateEntity(10,0,0,0.6,#PB_Relative)
y.f+0.01:CameraLocate(0,ca+200*Cos(y),5+y*2,200*Sin(y))
CameraLookAt(0,ca,50+10*Cos(y),0):RenderWorld()
If sa<10:fe-1:If fe<0:fe=0:EndIf:Else
fe+1:If fe>255:fe=255:EndIf:EndIf:
Start3D():DisplaySprite3D(0,0,0,fe):b=0:bf-2
bl=bf:If bf<0:bl=0:EndIf:If bf>255:bl=255:EndIf:jb=Len(T$(sa)):s=512-60-jb*30
For ja=1 To jb:a$=Mid(T$(sa),ja,1):h=Asc(a$)-65:For j=0 To 4:For i=0 To 6
If At(j+h*5,i)=1:For k=1 To 5:b+1:If bl<255:dx(b)+zx(b):dy(b)+zy(b):EndIf
DisplaySprite3D(1,s+ja*60+j*10+Random(5)-3+dx(b),250+i*10+Random(5)-3+dy(b),bl)
Next:EndIf:Next:Next:Next:FlipBuffers():Until KeyboardPushed(#PB_Key_Escape)
End:DataSection:Bn:Data.f 5,5,5,6,25,6,5,5,15,25,7
Data.f 2,4,17,29,7,2,6,17,29,7,2,5,10,30,7,2,5,9,30.7,7,2,5,8,31:EndDataSection