Mieux vaut tard que jamais ! De nombreux contretemps ont bien failli m'empêcher de poster le code
.
Un grand merci à majikeyric pour son cruncher.
Code : Tout sélectionner
;*****************************************************************************
;*
;* July-August 2014 PurePunch contest
;* PureBasic 5.22
;* 50 lines of 80 chars, 2 months delay
;*
;* Name : Retour à winterfell
;* Author : Huitbit
;* Date : 28/08/2014
;* Notes : jeu d'adresse
;*
;*****************************************************************************
;Hors punch
MessageRequester("PurePunch2014","But du jeu : trouver puis attraper la clé pour rentrer chez vous !"+Chr(13)+" [ESPACE] : démarrer et épée"+Chr(13)+" [HAUT] : changer de direction"+Chr(13)+"[GAUCHE/DROITE] : déplacer la bascule")
;fin hors punch
L=320:H=240:Define.f xA,yA,uA,vyA,vA,yAp,xB,yB,uB,vyB,vB,yBp,xr,yr,ur,vyr,n,rA,;
rB:v=0:sB=8:a=128:b=32:lba=132:c=16:pt.f=0.25:al.f=ATan2(a,b):o.f=0:m=100;;;;;;;
jba=14520:xba=96:yba=208:yCb=yba+c:xCb=xba+b:Macro cl(x,y,vx,vy):vy=vy+0.6:x=x+;
vx*0.1:y=y+vy*0.1:EndMacro:Macro rn(r,x1,y1,x2,y2):r=Sqr((x2-x1)*(x2-x1)+;;;;;;;
(y2-y1)*(y2-y1)):EndMacro:Macro s:Sprite:EndMacro:Macro d:DisplayTransparent#s#(
EndMacro:Macro u:SpriteCollision:EndMacro:Macro k:Keyboard:EndMacro:Macro t;;;;;
ElapsedMilliseconds:EndMacro:Macro p:EndIf:EndMacro:Macro z:Random:EndMacro;;;;;
Macro r:Read.l:EndMacro:Macro gj:Goto jeu:EndMacro:Init#s():Init#k():InitSound()
OpenWindow(0,0,0,640,480,"",13107200):OpenWindowedScreen(WindowID(0),0,0,L,H,1,;
0,0,2):Load#s(10,"s.bmp"):Display#s(10,0,0):For i=0 To 7:Grab#s(i,0,16*i,16,16);
Next i:Grab#s(8,0,128,128,32):Grab#s(9,0,160,128,32):jeu: :LoadMusic(0,"v.it");;;;
PlayMusic(0):v=0:sB=8:xba=96:yba=208:yCb=yba+c:xCb=xba+b:xA=xba:yA=194:xB=xba+;;
a-c:yB=yba+14:w=3:j=4:xr=32:yr=16:g=7:xg.f=160:yg.f=z(1)*48:rx=3:ct=0;;;;;;;;;;;
Dim sp.l(8):sp(8)=z(7):Repeat:If u(5,xq,yq,7,xg,yg+n):yg=H:p:Restore dp;;;;;;;;;
For i=0 To 7:r cn:r ln:If sp(i)<>-1:If u(5,xq,yq,sp(i),16*cn,16*ln):If i<>sp(8);
sp(i)=-1:Else:If ct=0:sp(i)=2:ct=1:pq=t():p:If ct=2:xq=0:MessageRequester("",""+
"Gagné!"):gj:p:p:p:p:Next i:If yr<H-60:If u(w,xA,yA+n,1,xr,yr+n):yA=YA+16:p;;;;;
If u(j,xB,yB+n,1,xr,yr+n):yB=yB+16:p:p:If yg<H-60:If u(w,xA,yA+n,7,xg,yg+n);;;;;
yA=YA+16:p:If u(j,xB,yB+n,7,xg,yg+n):yB=yB+16:p:p:If t()-cK>200:Examine#k();;;;;
If k#Pushed(203):If xba+a*0.75>0:xba=xba-4:If v<>1:xA=xA-4:p:If v<>2:xB=xB-4:p:p
p:If k#Pushed(205):If xba+a*0.25<L:xba=xba+4:If v<>1:xA=xA+4:p:If v<>2:xB=xB+4:p
p:p:If k#Pushed(200):If v<>0:If v<>1:If j=4:j=3:Else:j=4:p:p:If v<>2:If w=3:w=4;
Else:w=3:p:p:cK=t():p:p:If k#Pushed(#PB_Key_Space):If v=1:If w=3:w=11:p:If w=4;;
w=12:p:p:If v=2:If j=4:j=12:p:If j=3:j=11:p:p:If v=0:v=2:xB=xA+112:yB=yA:uB=0;;;;;;;;
vyB=-30*Cos(al):sB=9:yA=yba+14:w=3:j=4:cK=t():p:p:p:xCb=xba+64:If v=1:yAp=yA;;;;
cl(xA,yA,uA,vyA):If vyA>0:If (xA>=xba) And (xA<=xba+48):If (yA+c)>=yba And (yAp+
c)<=yba:yA=yCb-pt*(xCb-(xA+c))-18:v=2:rn(rA,(xA+8),(yA+c),xCb,yCb):rn(rB,(xB+8),
(yB+c),xCb,yCb):jt=m*(rA*rA+rB*rB)+jba:o=m*((xA+8-xCb)*vyA-(yA+c-yCb)*uA)/jt;;;;
yB=yCb-pt*(xB-xCb)-c:vB=Abs(rB*o*#E):If vB>70:vB=70:p:If vB<30:vB=30:p;;;;;;;;;;
uB=-vB*Sin(al)+0.4:vyB=-vB*Cos(al):yA=yba+14-pt*(xA-xba):sB=9:Select w:Case 3,11
w=3:Case 4,12:w=4:EndSelect:j=4:p:p:p:If yA>H:gj:p:If yA<64:n=-yA+64:Else:n=0:p;
If xA>(L-C):uA=-uA:p:p:If v=2:yBp=yB:cl(xB,yB,uB,vyB):If vyB>0:If (xB>=xba+;;;;;
72) And (xB<=xba+a):If (yB+c)>=yba And (yBp+c)<=yba:yB=yCb-pt*(xB-xCb)-18:v=1;;;
rn(rA,(xA+8),(yA+c),xCb,yCb):rn(rB,(xB+8),(yB+c),xCb,yCb):jt=m*(rA*rA+rB*rB)+jba
o=m*((xB+8-xCb)*vyB-(yB+c-yCb)*uB)/jt:yA=yba+pt*(xA+c-xba)-c:vA=Abs(rA*o*#E);;;;
If vA>70:vA=70:p:If vA<30:vA=30:p:uA=vA*Sin(al)+0.4:vyA=-vA*Cos(al):yB=yCb+;;;;;
pt*(xB+c-xCb)-18:sB=8:w=3:Select j:Case 4,12:j=4:Case 3,11:j=4:EndSelect:p:p:p;;
If yB>H:gj:p:If yB<64:n=-yB+64:Else:n=0:p:If xB<0:uB=-uB:p:p:If t()-pq>1000;;;;;
If ct=1:ct=2:p:p:If t()-cg>100:cg=t():g=g+1:If g>7:g=6:p:xg=xg+rx:yg=yg+4;;;;;;;
If yg>H:g=7:xg=160:yg=z(1)*48:rx=4*(-1+z(2)):If rx=0:rx=4:p:p:p:cl(xr,yr,ur,vyr)
If yr>H:Restore dk:For i=0 To z(2):r xr:r yr:Next i:xr=xr*16:yr=yr*16:vyr=6;;;;;
ur=-6+z(12):p:Display#s(10,-a,-240+n):Restore dp:For i=0 To 7:r cn:r ln;;;;;;;;;
If sp(i)<>-1:d#sp(i),16*cn,16*ln+n):p:Next i:d#sB,xba,yba+n):xq=0:If w=11:xq=xA+
12:yq=yA+n:w=3:p:If w=12:xq=xA-12:yq=yA+n:w=4:p:If j=11:xq=xB+12:yq=yB+n:j=3:p;;
If j=12:xq=xB-12:yq=yB+n:j=4:p:If xq<>0:d#5,xq,yq):p:d# 1,xr,yr+n):d# g,xg,yg+n)
d# w,xA,yA+n):d# j,xB,yB+n):FlipBuffers():Until WindowEvent()=13116:DataSection;
dp: :Data.l 6,7,13,7,1,4,1,7,1,10,18,5,18,8,18,11:dk:
Data.l 2,1,17,2,9,-3:EndDataSection;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;