Re: Compétition PurePunch Noël 2014
Publié : mar. 16/déc./2014 17:19
@raven: joli! tu as vraiment tout dessiner avec des box() ?
Forums PureBasic - Français
https://www.purebasic.fr/french/
Code : Tout sélectionner
Procedure drawing()
StartDrawing(ScreenOutput())
; neige
Box(0,390,650,150,RGB(255,255,255))
;pere noel
Box(490,30,35,10,RGB(255,0,0))
Box(475,35,35,10,RGB(255,0,0))
Box(461,45,45,10,RGB(255,0,0))
Box(455,55,55,15,255)
Box(525,35,15,15,RGB(255,255,255))
Box(460,70,50,5,RGB(255,255,255))
Box(455,70,5,35,RGB(255,255,255))
;Box(505,70,5,35,rgb(255,255,255))
Box(495,75,10,10,$FF99FF)
Box(460,75,10,10,$FF99FF)
Box(468,75,10,10,$CC6600)
Box(485,75,12,10,$CC6600)
Box(478,75,10,10,$FF99FF)
Box(470,85,10,10,$FF99FF)
Box(486,85,10,10,$FF99FF)
Box(460,85,10,10,$999999)
Box(495,85,10,10,$999999)
Box(460,95,10,10,$FF99FF)
Box(495,95,10,10,$FF99FF)
Box(408,105,10,25,0)
Box(418,105,10,25,$FFFFFF)
Box(428,105,35,25,255)
Box(455,75,8,40,$FFFFFF)
Box(463,105,75,25,255)
Box(470,95,25,10,$FFFFFF)
Box(460,105,45,15,$FFFFFF)
Box(478,103,10,8,0)
Box(470,115,25,15,$FFFFFF)
Box(505,70,8,45,$FFFFFF)
Box(538,105,10,25,$FFFFFF)
Box(548,105,10,25,0)
Box(478,85,10,10,$9933FF)
Box(438,130,90,25,255)
Box(438,140,90,25,0)
Box(474,143,18,18,$99CCFF)
Box(438,165,90,15,255)
Box(438,175,30,15,255)
Box(498,175,30,15,255)
Box(438,190,30,10,$FFFFFF)
Box(498,190,30,10,$FFFFFF)
Box(438,200,30,10,0)
Box(498,200,30,10,0)
Box(438,210,100,15,$333355)
Box(430,220,100,10,$333355)
Box(423,200,15,25,$333355)
Box(413,185,10,35,$333355)
Box(403,195,15,15,$333355)
Box(530,195,25,35,$333355)
Box(555,175,60,60,$225599)
Box(545,185,25,15,$333355)
Box(555,175,25,15,$333355)
Box(565,165,25,15,$333355)
Box(430,230,150,8,$225599)
Box(430,230,150,8,$225599)
Box(580,170,90,10,$225599)
Box(610,180,20,25,$225599)
Box(445,238,10,15,$227799)
Box(560,238,10,15,$227799)
Box(405,248,220,10,$227799)
Box(395,238,10,10,$227799)
Box(385,230,10,10,$227799)
Box(375,200,10,30,$227799)
Box(385,190,10,10,$227799)
Box(395,180,10,10,$227799)
;renne
Box(305,285,15,10,$225599)
Box(305,275,10,10,$227799)
Box(295,275,10,10,$778899)
Box(295,265,10,10,$227799)
Box(288,265,10,10,$778899)
Box(288,255,10,10,$227799)
Box(280,255,10,10,$778899)
Box(280,245,10,10,$227799)
Box(270,245,10,10,$447799)
Box(270,215,20,30,$227799)
Box(260,235,10,10,$447799)
Box(260,225,10,10,$447799)
Box(240,205,60,20,$227799)
Box(220,185,60,25,$227799)
Box(195,185,25,10,$447799)
Box(185,195,10,10,$447799)
Box(175,205,10,20,$447799)
Box(185,225,10,10,$225599)
Box(190,165,35,10,$447799)
Box(180,175,10,10,$447799)
Box(210,165,50,35,$227799)
Box(170,185,10,10,$447799)
Box(165,195,10,10,$225599)
Box(210,155,30,20,$227799)
Box(210,135,20,20,$227799)
Box(180,115,50,30,$227799)
Box(185,105,50,30,$227799)
Box(195,80,10,25,$225599)
Box(205,70,10,20,$225599)
Box(205,95,10,10,$225599)
Box(215,90,30,10,$225599)
Box(235,80,10,15,$225599)
Box(205,100,20,10,$225599)
Box(245,75,10,10,$225599)
;Box(215,75,10,10,$225599)
Box(300,205,10,10,$FFFFFF)
Box(160,125,20,20,$FFFFFF)
Box(150,125,10,10,$225599)
Box(190,115,10,10,$000000)
Box(360,115,50,10,$000000)
Box(320,125,50,10,$000000)
Box(280,135,50,10,$000000)
Box(220,115,30,10,$FFFFFF)
Box(230,145,60,10,$000000)
Box(230,155,50,30,$225599)
;Box(260,155,5,30,$000000)
Box(250,375,10,20,$225599)
Box(350,375,10,20,$225599)
Box(50,375,10,20,$225599)
Box(550,375,10,20,$225599)
Box(545,355,20,30,$006600)
Box(345,355,20,30,$006600)
Box(45,355,20,30,$006600)
Box(245,355,20,30,$006600)
StopDrawing()
EndProcedure
C'est comme les sapins. Je fais avec ce qui est autorisékernadec a écrit :falsam : très joli paysage 3D et le bonhomme de neige est très réussi.
Merci et j'ai hate devoir ta production.Cool Dji a écrit : ma prod "HotSnowMan" aura quelques points communs avec la tienne qui est très réussie
Un espace gagné .... est un espace gagnéCool Dji a écrit :pousser le truc à ne pas mettre les extensions des fichiers images...
Pas trop laggy ? Tu peux aussi installer DirectX 9.0c End-User Runtime .Cool Dji a écrit :Ta prod passe sous windows8 en sous-systeme opengl avec la musique
Code : Tout sélectionner
Y=Yr*Sin(v):Z=Zr*Cos(v):Q:J Mode=3:X=Xr*Sin(v*2):Y=Yr*Cos(v/4):Z=Zr*Sin(v):Q;;;;
Code : Tout sélectionner
;*****************************************************************************
;*
;* XMas 2014 PurePunch contest
;* PureBasic 5.xx or SpiderBasic 1.00 Beta
;* 64 lines of 80 chars of code + 128 lines of data
;*
;* Name : La guirlande enchantée
;* Author : Huitbit
;* Date : 19/12/2014
;* Notes :marble popper (version de test)
;* Les lutins sont en grève, les enfants ont trop de cadeaux, il y a donc trop de travail !
;* Pour entamer les négociations, ils ont décidé de ligoter
;* le Père Noël durant sa sieste grâce à une guirlande ensorcelée !
;* La guirlande va tenter de pénêtrer par une bouche d'aération de
;* la maison du Père Noël, stoppez-la !
;*****************************************************************************
MessageRequester("Information", "Eclatez 365 boules pour conjurer le sort !"+Chr(13)+" Clic droit pour quitter"+Chr(13)+" Clic gauche pour tirer"+Chr(13)+" A la fin tapez [Entrée] pour quitter.", #PB_MessageRequester_Ok)
a=255:le=800:he=600:r=12:d=25:Macro u:EndIf:EndMacro:Macro ds;;;;;;;;;;;;;;;;
DisplayTransparentSprite:EndMacro:Macro q:Next:EndMacro:Macro s:Sprite:EndMacro;
Macro ra:Random:EndMacro:Macro e:Element:EndMacro:Macro em:ElapsedMilliseconds()
EndMacro:Structure pt:x.l:y.l:s.l:a.f:b.f:EndStructure:Structure courbe:x.f:y.f;
at.l:EndStructure:Structure z:x.f:y.f:s.l:ds.f:spr.l:retour.l:EndStructure;;;;;;
NewList z.z():nl=12:Dim p.pt(nl):P(0)\x=385:P(0)\y=20:For n=0 To nl-1:P(n+;;;;;;
1)\y=P(n)\y+480/nl+ra(20)*Pow(-1,n):P(n+1)\x=P(n)\y*Sin(2*#PI*P(n)\y/200)+400+;;
ra(20)*Pow(-1,n):q n:Macro af(a,b,xA,yA,xB,yB):If xB=xA:xB=xA+1:u:If xA<xB;;;;;;
a=(yB-yA)/(xB-xA):Else:a=(yB-yA)/(xA-xB):u:b=yB-a*xB:EndMacro:Macro cb(id,;;;;;;
couleur):Create#s(id,d,d):StartDrawing(s#Output(id)):Circle(r,r,r,couleur);;;;;;
StopDrawing():EndMacro:Procedure.l su(Array pP.pt(1),pn,ps,pr.f):Dim o.pt(pn);;;
CopyArray(pP(),o()):For nSubdv=1 To ps:ReDim pP(2*pn-1):For n=0 To pn-1;;;;;;;;;
pP(2*n)\x=o(n)\x+pr*(o(n+1)\x-o(n)\x):pP(2*n)\y=o(n)\y+pr*(o(n+1)\y-o(n)\y);;;;;
pP(2*n+1)\x=o(n)\x+(1-pr)*(o(n+1)\x-o(n)\x):pP(2*n+1)\y=o(n)\y+(1-pr)*(o(n+;;;;;
1)\y-o(n)\y):q n:pn=2*pn-1:ReDim o.pt(pn):CopyArray(pP(),o()):q nSubdv;;;;;;;;;;
ProcedureReturn pn:EndProcedure:nl=su(P(),nl,4,0.25):For n=0 To nl-1:af(P(n)\a,;
P(n)\b,P(n)\x,P(n)\y,P(n+1)\x,P(n+1)\y):q n:P(0)\s=0:lc=0:For n=0 To nl-1:lc=lc+
Sqr(1+P(n)\a*P(n)\a)*Abs(P(n+1)\x-P(n)\x):P(n+1)\s=lc:q n:Dim s.courbe(lc);;;;;;
s(0)\x=P(0)\x:s(0)\y=P(0)\y:hy.f=Sqr(1+P(0)\a*P(0)\a):l=1:For n=0 To nl-1;;;;;;;
hy=Sqr(1+P(n)\a*P(n)\a):co.f=Sign(P(n+1)\x-P(n)\x)/hy:si.f=P(n)\a/hy;;;;;;;;;;;;
While l<P(n+1)\s:s(l)\x=s(l-1)\x+co:s(l)\y=s(l-1)\y+si:l=l+1:Wend:If l=P(n+1)\s;
s(l)\x=P(n+1)\x:s(l)\y=P(n+1)\y:l=l+1:u:q n:Init#s():InitMouse():InitSound();;;;
OpenWindow(0,0,0,le,he,""):OpenWindowedScreen(WindowID(0),0,0,le,he,1,0,0,2);;;;
Dim pd.pt(11):Restore etoile:For i=0 To 10:Read.l pd(i)\x:Read.l pd(i)\y:q i;;;;
nMax=su(pd(),10,4,0.10):pd(nMax)\x=pd(0)\x:pd(nMax)\y=pd(0)\y:Create#s(7,88,88);
StartDrawing(s#Output(7)):For i=0 To nMax-1:For j=0 To 1:LineXY(pd(i)\x+j,;;;;;;
pd(i)\y+j,pd(i+1)\x+j,pd(i+1)\y+j,RGB(a,a,0)):q j:q i:FillArea(44,44,RGB(a,a,0),
RGB(a,200,32)):StopDrawing():Dim pd.pt(20):Restore sapin:For i=0 To 19;;;;;;;;;;
Read.l pd(i)\x:Read.l pd(i)\y:q i:nMax=su(pd(),19,4,0.10):pd(nMax)\x=pd(0)\x;;;;
pd(nMax)\y=pd(0)\y:Create#s(8,le,he):StartDrawing(s#Output(8)):For n=0 To 999;;;
Box(ra(999),ra(999),1,1,RGB(a,a,a)):q n:Ellipse(400,he,999,200,RGB(220,a,a));;;;
For i=0 To nMax-1:For j=0 To 2:LineXY(pd(i)\x+j+200,pd(i)\y+j+60,pd(i+1)\x+j+;;;
200,pd(i+1)\y+j+60,RGB(0,a,0)):q j:q i:FillArea(200+200,100+60,RGB(0,a,0),RGB(0,
192,64)):Ellipse(P(nl)\x,P(nl)\y,30,10,RGB(64,64,64)):StopDrawing():cb(1,RGB(a,;
0,0)):cb(2,RGB(a,a,0)):cb(3,RGB(0,a,0)):cb(4,RGB(0,0,a)):cb(5,RGB(a,0,a)):cb(6,;
RGB(64,64,64)):st=ra(5,1):cl=0:Repeat:ExamineMouse():If em-cc>80:cc=em;;;;;;;;;;
If MouseButton(1) And clic=0:clic=1:tir=1:x=MouseX():u:u:If MouseButton(1)=0;;;;
clic=0:u:If tir=1:x=x:y=y-r:If y<d:tir=0:st=ra(5,1):u:Else:x=MouseX():y=he-2*d:u
ForEach z():If s#Collision(st,x,y,z()\spr,z()\x,z()\y) And cl=0:cl=1:sTir=z()\s;
Break:u:q:If cl=1:Repeat:sbt=z()\spr:z()\spr=st:st=sbt:Until Previous#E(z())=0;;
First#E(z()):sPremier=z()\s:If sPremier+d<lc:Insert#E(z()):z()\s=sPremier+d;;;;;
z()\spr=sbt:Else:fin=1:u:cl=2:tir=0:st=ra(5,1):u:If cl=2:ForEach z():rv=0;;;;;;;
If ListIndex(z())<ListSize(z())-2:ba=z()\spr:ia=ListIndex(z()):Next#E(z());;;;;;
bb=z()\spr:Next#E(z()):bC=z()\spr:indexC=ListIndex(z()):Next#E(z()):bD=z()\spr;;
indexD=ListIndex(z()):If ba=bb And ba=bC And ba=bD:Select#E(z(),indexD);;;;;;;;;;
If z()\s>d:g=z()\s:u:_=_+4:Delete#E(z()):Delete#E(z()):Delete#E(z());;;;;;;;;;;;
Delete#E(z()):For sC=g To lc:s(sC)\at=0:q sC:rv=1:ElseIf ba=bb And ba=bC;;;;;;;;
Select#E(z(),indexC):If z()\s>d:g=z()\s:u:_=_+3:Delete#E(z()):Delete#E(z());;;;;
Delete#E(z()):For sC=g To lc:s(sC)\at=0:q sC:rv=1:u:If rv=1:First#E(z()):Else;;;
Select#E(z(),ia):u:u:q:cl=0:u:Last#E(z()):If em-tb>40 And cl=0:tb=em;;;;;;;;;;;;
If s(0)\at=0:Add#E(z()):z()\s=0:z()\x=s(z()\s)\x:z()\y=s(z()\s)\y:z()\ds=1;;;;;;
If ListIndex(z())=0:z()\spr=6:Else:z()\spr=ra(5,1):While z()\spr=spd1 And;;;;;;;
z()\spr=spd2:z()\spr=ra(5,1):Wend:u:spd3=spd2:spd2=spd1:spd1=z()\spr:u;;;;;;;;;;
ForEach z():If z()\s<lc:If z()\s>d+1:ia=ListIndex(z()):sA=z()\s:Select#E(z(),ia+
1):ib=ListIndex(z()):sB=z()\s:If (sA-sB)>d+1:Select#E(z(),ia):z()\ds=-4;;;;;;;;;
z()\retour=1:Else:Select#E(z(),ia):z()\retour=0:z()\s=sb+d:s(z()\s)\at=0:u:u;;;;
If s(z()\s)\at=1:z()\ds=0:Else:If z()\retour=0:z()\ds=1:s(z()\s)\at=1;;;;;;;;;;;
If z()\s>=d:s(z()\s-d)\at=0:u:u:u:z()\s=z()\s+z()\ds:z()\x=s(z()\s)\x;;;;;;;;;;;
z()\y=s(z()\s)\y:Else:fin=1:u:q:First#E(z()):g=z()\s:For sC=g To lc-1:s(sC)\at=0
q sC:u:Display#s(8,0,0):ds(7,342,0):ForEach z();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
If ListIndex(z())<ListSize(z())-1:ds(z()\spr,z()\x-r,z()\y-r):u:q:If spd3<>0;;;;
ds(st,x-r,y-r):u:If _=365:MessageRequester("","Félicitations !"):u:If fin=1;;;;
FreeList(z()):MessageRequester("","Argh, pauvre Santa,"+_+" boules sur 365 !");;
End:u:FlipBuffers():Until WindowEvent()=13111
DataSection
etoile:
Data.l 30,68,;;
66,84,63,54,87,30,60,27,45,1,28,27,2,32,22,53,13,82,30,68
sapin:
Data.l 150,392,;
248,424,374,378,275,255,328,221,262,182,244,139,286,120,217,63
Data.l 182,2,140,
75,83,121,110,146,75,207,27,232,89,268,49,323,0,351,38,406,109,411,150,392;;;;;;
EndDataSection;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Code : Tout sélectionner
;* 94 lines of 80 chars of code + 90 lines of data
Code : Tout sélectionner
;* 64 lines of 80 chars of code + 128 lines of data