En tout cas j'ai bien avancé et enfin résolu un soucis de positionnement qui me cassait les noix.

La classe, plus besoin de se prendre la tête, peu être bien grâce à toi je vais peu être re-participermajikeyric a écrit :Voici mon premier punch, l'utilitaire ultime pour compresser ...
.......... vos sources en punchs !![]()
Il est supposé être multi-plateforme avec gestion des differents formats de fin de ligne (testé seulement sous windows).
Il supprime les commentaires, les espaces superflus et tronque les lignes "intelligemment".
Il a été codé pour fichiers ASCII et ne gère pas les labels.
...
mince...G-Rom a écrit :La classe, plus besoin de se prendre la tête, peu être bien grâce à toi je vais peu être re-participer
J'ai pas compris, tu veux dire qu'après crunchage tu as un prob de transparence ?Ar-S a écrit :Mais par contre, le resultat à la compilation est buggé enfin mes sprites perdent leurs transparences (testé en 5.30) donc le resultat est tout laid.
Désolé je peux pas mettre de screenshot pour le moment..
Code : Tout sélectionner
Macro M : Macro : EndMacro
M dts(id,x,y,c):DisplayTransparentSprite(id,x,y,c):
TransparentSpriteColor(id, $FC00FC)
EndMacro
M ds(id,x,y):DisplaySprite(id,x,y):EndMacro
M cs(id,x,y,w,l):ClipSprite(id,x,y,w,l):EndMacro
Code : Tout sélectionner
Macro M:Macro:EndMacro:M E:End:End#M:M St:Structure:End#M:M Sp:Sprite:End#M:C.d;
M H:Element:E#M:M Q:#PB_Key_:E#M:M R:Window:E#M:M U:Random:E#M:M Ke:Keyboard:E#M
Init#Sp():M SM:x.d:y.d:a.d:u.d:v.d:m.d:l.d:b.d:E#St:E#M:UsePNGImageDecoder():T.d
St Mo:SM:St Ob:w.d:I.d:List f.Mo():SM:K.Ob:B.Ob:L.Ob:Open#R(0,0,0,800,600,"M",;#
#PB_#R#_ScreenCentered|#PB_#R#_SystemMenu):Open#R#edScreen(R#ID(0),0,0,800,600);
Load#Sp(0,"M.png"):M N:Next:E#M:Init#Ke():x.d:y.d:M CC(i,x,y,k,l,b=2):Copy#Sp(0,
i,4):Clip#Sp(i,x,y,k,l):Zoom#Sp(i,k*b,l*b):E#M:Clip#Sp(0,2,21,55,42):CC(1,61,38,
15,25,1):For i=0 To 9:CC(10+i,80,3+i*6,5,7):N:CC(9,80,9,13,7):CC(6,56,3,25,7);##
CC(7,60,9,21,7):CC(8,1,9,53,9,4):Create#Sp(4,10,10):F.d:Procedure DN(L,x,y):i=0+
Int(Log10(L)):p=Pow(10,i):For j=0 To i:r=Int(L/p):L-r*p:p/10:Display#Sp(10+r,x,;
y):x+8:N:E#Procedure:DB: :NewList S.Ob():Clear#St(L,Ob):Initialize#St(L,Ob):D.d;
L\x=400:L\b=50000000:L\y=300:L\m=1206:L\I=43172:#P=#PI/2:*d.Mo=Add#H(L\f()):CR=0
*g.Mo=Add#H(L\f()):*d\a=0.715743:*d\l=30.479501:*c.Mo=Add#H(L\f()):*d\b=-#P:CS=5
*g\a=2.425849:*g\l=30.4:*g\b=-#P:Initialize#St(K,Ob):*o.Mo=Add#H(K\f()):*c\b=-#P
M El:ElapsedMilliseconds():E#M:K\x=-10:K\y=300:*c\m=0:*c\a=#P:*o\m=50:Ke#Mode(1)
CB=50:*c\l=5:*o\a=0:*o\l=300:ti=El:Repeat:*d\m=0:*g\m=0:Z.d=(El-ti)/1000:*c\m=0;
Repeat:EV=R#Event():If EV=#PB_Event_Close#R:E:E#If:Until EV=0:Examine#Ke():ti=El
If Ke#Pushed(Q#Escape):E:E#If:If CR:Z=0:If Ke#Pushed(Q#Space):Goto DB:E#If:Else;
If Ke#Pushed(Q#Up):*d\m=10000:*g\m=10000:D=0:E#If:If Ke#Pushed(Q#Left):*d\m+5000
E#If:A.d=0:If Ke#Pushed(Q#Right):*g\m+5000:E#If:If Ke#Pushed(Q#Down):*c\m=50000;
E#If:E#If:C=0:CT+1:ForEach L\f():*m.Mo=L\f():L\b-*m\m:If L\b<0:L\b=0:Break:E#If;
T=L\a+*m\a:*m\x=*m\l*Cos(T):G.d:*m\y=*m\l*Sin(T):T=L\a+*m\b:*m\u=*m\m*Cos(T);###
*m\v=*m\m*Sin(T):D+*m\x**m\v-*m\u**m\y:A+*m\u:C+*m\v:N:A/L\m:C/L\m+10:D/L\I:L\u+
A*Z:L\v+C*Z:L\w+D*Z:L\a+L\w*Z:T=L\u*Z:B\x-T:K\x-T:T=L\v*Z:B\y-T:ClearScreen(0);#
K\y-T:Rotate#Sp(0,L\a*90/#P,0):DisplayTransparent#Sp(0,L\x-27,L\y-21):Grab#Sp(2,
L\x-34,L\y-34,68,68,4):ClearScreen($FFFFFF):Repeat:If F>=-200 And F<=1000 And;##
G>=-200 And G<=800:x1.d:*e.Mo=Add#H(K\f()):*e\a=*o\a+(U(20)-10)/#P/20:*e\l=*o\l+
U(20)-10:If *e\l<100:*e\l=100:E#If:If *e\l>400:*e\l=400:E#If:CB-1:CS-1:*e\m=0+;#
U(20)+40:*e=*o:E#If:F=K\x:G=K\y:ForEach K\f():T=K\f()\a+#P:x=F+K\f()\l*Cos(T)/2;
y=G+K\f()\l*Sin(T)/2:T=K\f()\a-#P:x1=F+K\f()\l*Cos(T)/2:F+K\f()\m*Cos(K\f()\a);#
y1.d=G+K\f()\l*Sin(T)/2:G+K\f()\m*Sin(K\f()\a):If ListIndex(K\f())>0;###########
Transform#Sp(4,x1,y,ox.d,y-oy1.d+y1,J.d,y-oy.d+y1,x.d,y1):E#If:Display#Sp(4,0,0)
ox=x:oy=y:J=x1:oy1=y1:N:If CB<0:CB=30:T=K\f()\l-60:T=(U(T)-T/2):B\x=F+T*Cos(#P+;
K\f()\a):B\y=G+T*Sin(K\f()\a+#P):B\l=1:E#If:If CS<0:CS=5:Last#H(S()):Add#H(S());
T=K\f()\l-60:T=(U(T)-T/2):S()\x=F+T*Cos(K\f()\a+#P):S()\y=G+T*Sin(K\f()\a+#P);##
S()\v=100*Abs(T)/(K\f()\l/2-50):S()\l=1:E#If:If ListSize(K\f())>40;#############
First#H(K\f()):K\x=K\x+K\f()\m*Cos(K\f()\a):K\y=K\y+K\f()\m*Sin(K\f()\a);#######
Delete#H(K\f()):*o=Last#H(K\f()):E#If:Until F<-200 Or F>1000 Or G<-200 Or G>800;
StartDrawing(ScreenOutput()):For i=0 To 15:T=i*2*#PI/15:If Point(400+22*Cos(T),;
300+22*Sin(T)):CR=1:E#If:Next:If Point(400+34*Cos(0.64+L\a),300+34*Sin(0.64+;###
L\a)) Or Point(400+34*Cos(2.5+L\a),300+34*Sin(2.5+L\a)):CR=1:E#If:If L\b:;######
ForEach L\f():For i=-5 To 5:T=L\a+L\f()\b+i/10:LineXY(L\x+L\f()\x,L\y+L\f()\y,;#
L\x+L\f()\x-L\f()\m*Cos(T)/500,L\y+L\f()\y-L\f()\m*Sin(T)/500,$88FF):N:N:E#If:;#
StopDrawing():DisplayTransparent#Sp(2,L\x-34,L\y-34):If B\l:If Sp#Collision(1,;#
B\x-7,B\y-12,2,L\x-34,L\y-34):L\b+25000000:B\l=0:E#If:DisplayTransparent#Sp(1,;#
B\x-7,B\y-12):E#If:ForEach S():S()\x-L\u*Z:S()\y-L\v*Z:If S()\l:;###############
If Sp#Collision(9,S()\x-6,S()\y-3,2,L\x-34,L\y-34):S()\l=0:L\l+S()\v:E#If;######
DN(S()\v,S()\x-6,S()\y-3):E#If:N:Display#Sp(6,352,5):DN(L\l,400,5);#############
Display#Sp(7,360,19):DN(L\b/5000,400,19):If CR And CT%50<30:Display#Sp(8,294,;##
282):E#If:FlipBuffers():ForEver;#PURE#PUNCH##AOUT#2014###MOONLANDER#BY#GRAPH100#