Code : Tout sélectionner
;*****************************************************************************
;*
;* July-August 2014 PurePunch contest
;* PureBasic 5.30
;* 50 lines of 80 chars, 2 months delay
;*
;* Name : A Sky full of stars
;* Author : Cool Dji
;* Date : 31-08-2014
;* Notes :
;*
;*****************************************************************************
InitEngine3D():InitSprite():InitKeyboard():InitSound():UseOGGSoundDecoder()
OpenScreen(1024,768,32,""):LoadSound(0,"M.OGG"):CreateSphere(4,999,50,50):s=-9
Global si.s,c,l=384,t,CaX=-2000:CaY.f=2000:CaZ.f=2000:DCaZ.f=0.5:Q=255:W=0:at=1
Global e=255:rtc.f=0.1:drt.f=0.05:Declare ri(x,y):CreatePlane(3,10,10,1,1,1,1)
CreateSphere(1,0.5,9,9):CreateCube(0,10):Dim p(30):CreateCamera(0,0,0,100,100)
Vr=#PB_Relative:Va=#PB_Absolute:Add3DArchive("T",#PB_3DArchive_FileSystem)
CreateDirectory("T"):LoadImage(0,"3.bmp"):For y=0 To 2
For x=0 To 3:GrabImage(0,1,x*128,y*128,128,128):SaveImage(1,"T/"+Str(n)+".bmp")
CreateMaterial(n,LoadTexture(n,Str(n)+".bmp")):n+1:Next:Next:Dim t(10)
MaterialBlendingMode(10,#PB_Material_Add):DeleteDirectory("Tx","*.*")
CreateEntity(0,MeshID(4),MaterialID(11),-20000,5000,9000)
CreateStaticGeometry(0,100,100,100,#False):StartDrawing(ImageOutput(0))
ri(c,l):be=t:For j=1 To be:For i= 0 To 10:ri(c,l):t(i)=t:Next
CreateEntity(j,MeshID(t(0)),MaterialID(t(1))):For x=-2 To 2:For y=-2 To 2
n=x*400+t(2)-200:m=y*400+t(4)-200:af.f=t(8)/20:bf.f=t(9)/20
AddStaticGeometryEntity(0,EntityID(j),n,t(3),m,af,bf,t(10)/20,t(5),t(6),t(7))
Next:Next:FreeEntity(j):Next:c=0:l=449:For j=1 To 30:ri(c,l):p(j)=t : Next
StopDrawing():BuildStaticGeometry(0):GrabImage(0,1,0,450,512,62)
CreateSprite(0,1024,768,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(0)):Box(0,0,1024,768,RGB(e,e,e))
DrawImage(ImageID(1),256,300):StopDrawing()
CreateBillboardGroup(1,MaterialID(10),150,150):a=400000:b=200000:c=10000:d=1
For j=0 To c:AddBillboard(1,Random(a)-b,c,Random(a)-b):Next:b=0.5:c=99:a=-30
For j=1 To 9:If j=9:a=5000:b=10000:c=-700000:d=200:EndIf
CreateParticleEmitter(j,d,d,d,#PB_Particle_Box,a,b,c):ParticleSize(j,d,d)
CreateEntity(j,MeshID(1),#PB_Material_None,a,b,c):ParticleEmissionRate(j,500)
ParticleMaterial(j,MaterialID(10)):ParticleTimeToLive(j,0.1,0.5)
ParticleEmissionRate(j,500):MaterialBlendingMode(5,#PB_Material_Add)
ParticleColorRange(j,RGB(Random(e),Random(e),Random(e)),RGB(e,e,e)):Next
PlaySound(0):CreateEntity(12,MeshID(1),#PB_Material_None):HideEntity(12,1)
Repeat:ExamineKeyboard():RotateEntity(0,0,0.1,0,1):If W=0:Q=Q-1:EndIf
MoveParticleEmitter(9,-20,0,500):StartDrawing(TextureOutput(5))
For x=0 To 127:For y=33 To 94:Plot(x,y,RGB(Random(e),Random(e),Random(e)))
Next:Next:Sx-1:If Sx<-512:Sx=600:EndIf:DrawImage(ImageID(1),Sx,33)
StopDrawing():AmbientColor(RGB(at,at,at)):If s<21:a=CameraX(0)-EntityX(12)
Dis=Sqr(Pow(a,2)+Pow(CameraY(0)-EntityY(12),2)+Pow(CameraZ(0)-EntityZ(12),2))
If Dis<80:at-1:If at=0:s+10:at=99:MoveEntity(12,p(s),p(s+1),p(s+2),Va)
MoveCamera(0,p(s+3),p(s+4),p(s+5),Va):CameraLookAt(0,p(s+6),p(s+7),p(s+8))
EndIf:EndIf:CameraFollow(0,EntityID(12),0,10,10,0.1,0.002/p(s+9),#False)
Else:For j=1 To 8:x=Random(2):z=Random(2)
MoveEntity(j,(x-1)/4,0,(z-1)/4,Vr):MoveParticleEmitter(j,(x-1)/4,0,(z-1)/4,Vr)
Next:RotateCamera(0,-0.05,0.5,0,Vr):MoveCamera(0,0,0.02,0,Vr)
If CameraY(0)>190:w=2:EndIf:EndIf:RenderWorld():If W=2:Q=Q+1:EndIf
If Q<0:Q=0:EndIf:If Q>255:Q=255:EndIf:DisplayTransparentSprite(0,0,0,Q)
FlipBuffers():Until KeyboardPushed(#PB_Key_Escape):Procedure ri(x.i,y.i)
cl=Point(x,y):n0.s=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