Je lui apprend le casse brique..
Publié : ven. 19/juin/2009 17:50


Messieurs, accordez vous un peu de détenteet de patiente , il est un peu têtue ..
Code : Tout sélectionner
;@ Chikun ; Casbrik!
ecranx = GetSystemMetrics_(#SM_CXSCREEN) ;1280
ecrany = GetSystemMetrics_(#SM_CYSCREEN) ;800
InitSprite() : InitKeyboard() : InitMouse()
OpenScreen (ecranx, ecrany, 32, "casbrik")
Structure objet
x.f
y.f
coul.l
ang.f
dt.f
gravite.f
vitesse.f
vectx.f
vecty.f
EndStructure
Structure target
x.w
y.w
EndStructure
Enumeration
#fond
#racket
#balle
#target
EndEnumeration
Dim objet.objet(4)
CreateSprite(#fond,EcranX,EcranY)
StartDrawing(SpriteOutput(#fond))
Box(0,0,EcranX,EcranY,RGB(0,0,0))
StopDrawing()
CreateSprite(#racket,100,2)
StartDrawing(SpriteOutput(#racket))
Box(0,0,100,2,RGB(255,255,255))
StopDrawing()
objet(#balle)\coul=RGB(10,157,32)
CreateSprite( #balle,32,32)
StartDrawing(SpriteOutput(#balle))
Circle(16, 16, 16, objet(#balle)\coul)
StopDrawing()
objet(#target)\coul=RGB(3,1,250)
CreateSprite( #target,32,32)
StartDrawing(SpriteOutput(#target))
Box(0,0,16, 16, objet(#target)\coul)
StopDrawing()
Dim target.target(150)
deb:
objet(#balle)\x=ecranx/2
objet(#balle)\y=ecrany/2
objet(#balle)\vitesse=99
objet(#balle)\ang=Random(360)+45*#PI/180
objet(#balle)\dt=0.2
objet(#balle)\gravite=9.8
objet(#balle)\vectx=objet(#balle)\vitesse*Cos(objet(#balle)\ang)
objet(#balle)\vecty=-objet(#balle)\vitesse*Sin(objet(#balle)\ang)
objet(#racket)\y=750
rec:
For i=1 To 150
target(i)\x=Random(ecranx-100)
target(i)\y=Random(ecrany-(16*40))
For j=1 To i-1
If target(i)\x=target(i-j) : Goto rec
EndIf
Next j
Next i
;*******************
Repeat
ExamineKeyboard()
ExamineMouse()
objet(#racket)\x=MouseX()
If objet(#racket)\x>1180 : objet(#racket)\x=1180 : EndIf
If objet(#racket)\x<0 : objet(#racket)\x=0 : EndIf
objet(#balle)\vecty=objet(#balle)\vecty+objet(#balle)\gravite*objet(#balle)\dt
objet(#balle)\x=objet(#balle)\x+objet(#balle)\vectx*objet(#balle)\dt
objet(#balle)\y=objet(#balle)\y+objet(#balle)\vecty*objet(#balle)\dt
If objet(#balle)\x> EcranX-34 Or objet(#balle)\x<0
objet(#balle)\vectx=-objet(#balle)\vectx : objet(#balle)\gravite=-objet(#balle)\gravite
EndIf
If objet(#balle)\y<0
objet(#balle)\vecty=-objet(#balle)\vecty
EndIf
If SpritePixelCollision(#balle,objet(#balle)\x,objet(#balle)\y,#racket,objet(#racket)\x,objet(#racket)\y)
objet(#balle)\vecty=-objet(#balle)\vecty :
EndIf
If objet(#balle)\y>750 : Delay(1000) : Goto deb
EndIf
StartDrawing(ScreenOutput())
DrawText(0,0,"@ Chikun",RGB(125,90,30),RGB(0,0,0))
Line(objet(#racket)\x,objet(#racket)\y,100,00,objet(#racket)\coul)
StopDrawing()
DisplayTransparentSprite(#balle,objet(#balle)\x,objet(#balle)\y)
For i=1 To 150
If SpritePixelCollision(#target,target(i)\x,target(i)\y,#balle,objet(#balle)\x,objet(#balle)\y)
objet(#balle)\vectx=-objet(#balle)\vectx : objet(#balle)\vecty=-objet(#balle)\vecty
target(i)\x=ecranx+32 : target(i)\y=ecrany+32
EndIf
DisplayTransparentSprite(#target,target(i)\x,target(i)\y)
Next i
DisplayTransparentSprite(#racket,objet(#racket)\x,objet(#racket)\y)
FlipBuffers()
DisplaySprite(#fond,0,0)
;Delay(1)
Until KeyboardPushed(#PB_Key_Escape)
End