

Je vous laisse comprendre le but (flêches droite, haut et gauche)! Bons scores !
Code : Tout sélectionner
l=640:h=480:k$="|þˉþþU":Structure a:x.l:y.l:EndStructure:Macro r:Random
EndMacro:Macro f:DisplaySprite:EndMacro:Dim g.a(4):Dim m.a(4):g(0)\x=0:x=4:a=1
g(0)\y=240:m(0)\x=r(l):m(0)\y=-r(l):For i=1 To 4:g(i)\x=g(i-1)\x+128+r(32)
g(i)\y=160+r(160):m(i)\x=r(l):m(i)\y=-r(l):Next i:InitSprite():InitKeyboard()
OpenWindow(0,0,0,l,h,""):OpenWindowedScreen(WindowID(0),0,0,l,h,0,0,0)
CreateSprite(0,l,40):StartDrawing(SpriteOutput(0)):Box(0,0,l,40,$EFCF10)
StopDrawing():CreateSprite(1,16,16):StartDrawing(SpriteOutput(1)):For j=1 To 8
For i=1 To 8:If Mid(RSet(Bin(Asc(Mid(k$,j,1))),8,"0"),i,1)="1"
Box(i*2-2,j*2-2,2,2,$FF):EndIf:Next i:Next j:StopDrawing()
CreateSprite(2,16,16):StartDrawing(SpriteOutput(2)):Circle(8,8,8,$227CE9)
StopDrawing():CreateSprite(3,48,h):StartDrawing(SpriteOutput(3))
Ellipse(24,0,24,360,$FCFBEB):StopDrawing():Repeat:FlipBuffers():ClearScreen(0)
For i=0 To 4:If m(i)\y>440:m(i)\x=r(640):m(i)\y=-r(l):g(i)\y=g(i)\y+10:EndIf
If SpriteCollision(1,x,y,2,m(i)\x,m(i)\y):m(i)\x=r(624):m(i)\y=-r(l):s+1:EndIf
f(2,m(i)\x,m(i)\y):m(i)\y=m(i)\y+1:Next i:For i=0 To 4:f(3,g(i)\x,g(i)\y)
Next i:f(1,x,y):f(0,0,440):For i=0 To 4
If SpriteCollision(1,x+dx,y+dy,3,g(i)\x,g(i)\y):If y<=g(i)\y-15:z=g(i)\y-16
EndIf:Break:Else:z=0:EndIf:Next i:If SpriteCollision(1,x,y,0,0,440)
MessageRequester("",Str(s)):End:EndIf:ExamineKeyboard():If KeyboardPushed(200)
If z:dy=-24:a=1:EndIf:EndIf:If KeyboardPushed(203) And x>3:dx=-3
ElseIf KeyboardPushed(205) And x<621:dx=3:Else:dx=0:EndIf:If z=0:If y<424
x+dx:dy+a:y+dy:EndIf:Else:x+dx:y=z:EndIf:Repeat:E= WindowEvent():If E=16:End
EndIf:Until e=0:Delay(1):ForEver
Version dépunchée si quelqu'un a le courage de mettre le nez dedans !
(Je pense que ça doit être possible de le "puncher" en plein écran?

Code : Tout sélectionner
;skull
;auteur Huitbit
;PureBasic 4.30 (Windows - x86)
;*********************************
Enumeration
#fond
#mer
#skull
#meteore
#iceberg
EndEnumeration
#largeur_ecran=640
#hauteur_ecran=480
skull$="|þˉþþU"
Structure coordo
x.l
y.l
EndStructure
Dim iceberg.coordo(4)
Dim meteore.coordo(4)
iceberg(0)\x=0
iceberg(0)\y=320
meteore(0)\x=Random(640)
meteore(0)\y=-100+Random(90)
;-positionnement du crâne
x=4
y=0
ay=1 ;accélération
;-placement des icebergs
For i=1 To 4
iceberg(i)\x=iceberg(i-1)\x+128+Random(32)
iceberg(i)\y=160+Random(160)
meteore(i)\x=Random(620)
meteore(i)\y=-400+Random(400)
Next i
;-PROGRAMME PRINCIPAL
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,#largeur_ecran,#hauteur_ecran,"skull ",#PB_Window_ScreenCentered|#PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,#largeur_ecran,#hauteur_ecran,0,0,0)
;-SPRITES
;-fond d'écran
CreateSprite(#fond,#largeur_ecran,#hauteur_ecran)
;-mer
CreateSprite(#mer,#largeur_ecran,40)
StartDrawing(SpriteOutput(#mer))
Box(0,0,#largeur_ecran,40,$FF0000)
StopDrawing()
;-crâne
CreateSprite(#skull,16,16)
StartDrawing(SpriteOutput(#skull))
For j=1 To 8
For i=1 To 8
If Mid(RSet(Bin(Asc(Mid(skull$,j,1))),8,"0"),i,1)="1"
Box(i*2-2,j*2-2,2,2,$FF)
EndIf
Next i
Next j
StopDrawing()
;-météore
CreateSprite(#meteore,16,16)
StartDrawing(SpriteOutput(#meteore))
Circle(8,8,8,$FFFF)
StopDrawing()
;-iceberg
CreateSprite(#iceberg,48,#hauteur_ecran)
StartDrawing(SpriteOutput(#iceberg))
Ellipse(24,0,24,#hauteur_ecran*0.75,$FFFFFF)
StopDrawing()
;-BOUCLE PRINCIPALE
Repeat
FlipBuffers()
;-fond noir
DisplaySprite(#fond,0,0)
;-météores
For i=0 To 4
If meteore(i)\y>440
meteore(i)\x=Random(640)
meteore(i)\y=-400+Random(400)
iceberg(i)\y= iceberg(i)\y+10
EndIf
;-test collision crâne~météore
If SpriteCollision(#skull,x,y,#meteore,meteore(i)\x,meteore(i)\y)
meteore(i)\x=Random(624)
meteore(i)\y=-400+Random(400)
score=score+1
EndIf
DisplaySprite(#meteore,meteore(i)\x,meteore(i)\y)
meteore(i)\y=meteore(i)\y+1
Next i
;-iceberg
For i=0 To 4
DisplaySprite(#iceberg,iceberg(i)\x,iceberg(i)\y)
Next i
;-crâne
DisplaySprite(#skull,x,y)
;-mer
DisplaySprite(#mer,0,440)
;-test collision crâne~iceberg
For i=0 To 4
If SpriteCollision(#skull,x+dx,y+dy,#iceberg,iceberg(i)\x,iceberg(i)\y)
If y<=iceberg(i)\y-15
y_contact=iceberg(i)\y-16
EndIf
Break
Else
y_contact=0
EndIf
Next i
;-fin de la partie
If SpriteCollision(#skull,x+dx,y+dy,#mer,0,440)
MessageRequester("score ",Str(score))
End
EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up)
;-saut seulement si crâne au contact du sol
If y_contact
dy=-24
ay=1
EndIf
EndIf
If KeyboardPushed(#PB_Key_Left) And x>3
dx=-3
ElseIf KeyboardPushed(#PB_Key_Right) And x<621
dx=3
Else
dx=0
EndIf
;-déplacement en l'air
If y_contact=0
If y<440-16
x=x+dx
dy=dy+ay
y=y+dy
EndIf
Else
;-déplacement sur l'iceberg
x=x+dx
y=y_contact
EndIf
Repeat
Event = WindowEvent()
If Event = #PB_Event_CloseWindow
End
EndIf
Until Event = 0
Delay(10)
ForEver