Hello,
I made a little breakout, PB and SB compatible
some small problems in SB (MouseDeltaX () vectordrawing abnormally slow (see bug reports) ...)
but very easy to code with SB
Code: Select all
EnableExplicit
Structure objet
x.f
y.f
dx.f
dy.f
s.w
EndStructure
Global ex=800,ey=600,zoom.f,titre.s="Casse Brique"
Global NewMap b.objet() ;balles
Global NewMap t.objet() ;tires
Global NewMap e.objet() ;explosion
Global Dim niv.s(10)
Global Dim n.b(30,20)
Global Dim btrans(24)
Global rx,ry=ey-64+8,rl,nbr,tire
Global niveau,score
InitSprite()
InitMouse()
InitKeyboard()
CompilerIf #PB_Compiler_OS<>5
#SBCol=0
ExamineDesktops()
zoom=DesktopHeight(0)/600
Macro xend:End:EndMacro
Macro xClipPath(v):ClipPath(v):EndMacro
Macro xReleaseMouse(v):ReleaseMouse(v):EndMacro
Macro xRenderFrame:Repeat:WindowEvent():RenderFrame(): ForEver:EndMacro
CompilerElse
#SBCol=$ff000000
zoom=1
Macro xend:ReleaseMouse(1):EndMacro
Macro xClipPath(v):zoom=1:EndMacro
Macro xReleaseMouse(v):zoom=1:EndMacro
Macro xRenderFrame:BindEvent(#PB_Event_RenderFrame, @RenderFrame()):FlipBuffers():EndMacro
CompilerEndIf
Procedure CoMelange(c1.l, c2.l, m.f)
Protected r.w,g.w,b.w,a.w
r= Red(c1) + (Red(c2) - Red(c1)) * m
g=Green(c1) + (Green(c2) - Green(c1)) * m
b= Blue(c1) + (Blue(c2) - Blue(c1)) * m
a=Alpha(c1) + (Alpha(c2) - Alpha(c1)) * m
ProcedureReturn RGBA(r,g,b,a)
EndProcedure
Macro cola(col,a=$ff):((col|(a<<24))!#SBCol):EndMacro
Procedure.f POM(v.f)
ProcedureReturn (Random(v*1000)-v*500)/500
EndProcedure
Macro limite(v,min,max)
If v<min:v=min:EndIf
If v>max:v=max:EndIf
EndMacro
Procedure NVballe()
Static cpt:cpt+1
Define bb.objet=b():b()\dx=pom(4):b()\s=1
b(Str(cpt))=bb
EndProcedure
Procedure NVtire()
Static cpt:cpt+1
Define tt.objet:tt\x=rx:tt\y=ry-16:tt\dy=-8:tt\s=3
t(Str(cpt))=tt
EndProcedure
Procedure NVexplosion(x,y)
Static cpt:cpt+1
Define ee.objet:ee\x=x:ee\y=y:ee\s=255
e(Str(cpt))=ee
EndProcedure
Procedure.b collision(x,y,objet)
Protected i=x/32,j=y/32,brique,transf
limite(i,0,24)
brique=n(i,j):If brique=0:ProcedureReturn:EndIf
transf=btrans(brique)
If transf=0:nbr-1:score+1:NVexplosion(i*32-8,j*32-8):EndIf
If objet
Select brique
Case 2 :NVballe()
Case 3 :b()\s=2
Case 4 :rl=128
Case 5 :tire=1
EndSelect
EndIf
n(i,j)=transf
If (objet=2 And transf>0) Or (objet<2 And brique>0):ProcedureReturn 1:EndIf
EndProcedure
Procedure message(txt.s)
Macro dt(nf,y,t,col)
DrawingFont(FontID(nf))
DrawText((OutputWidth()-TextWidth(t))/2,y,t,col!#SBCol)
EndMacro
CreateSprite(30,ex*0.6,ey*0.4,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(30))
DrawingMode(#PB_2DDrawing_AllChannels)
Box(0,0,ex*0.6,ey*0.4,0!#SBCol)
RoundBox(0,0,ex*0.6,ey*0.4,100,100,$88004444!#SBCol)
DrawingMode(#PB_2DDrawing_AlphaBlend |#PB_2DDrawing_Transparent)
dt(3,30,txt,$ffffffff)
dt(2,100,"APPUYER SUR UNE TOUCHE",$ff00ffff)
dt(1,160,"[Echap] Pause / Menu / Quitter [F1] Editeur",$ff00ffff)
dt(1,180,"(Souris) ou [<] Gauche [>] Droite [/\] Tire",$ff00ffff)
dt(1,200,"[+] [-] Changer de niveau",$ff00ffff)
StopDrawing()
EndProcedure
Procedure initdecor()
Protected i,j,k,c,ca,c1,c2, x,y,r,a1,a2,a3
Macro DrawingSprite(n,dx,dy)
CreateSprite(n,dx,dy,#PB_Sprite_AlphaBlending)
CreateImage(0,dx,dy,32,#PB_Image_Transparent)
StartVectorDrawing(ImageVectorOutput(0))
EndMacro
Macro StopDrawingSprite(n)
StopVectorDrawing()
StartDrawing(SpriteOutput(n))
DrawingMode(#PB_2DDrawing_AllChannels)
DrawAlphaImage(ImageID(0),0,0)
StopDrawing()
EndMacro
;fond
DrawingSprite(10,ex,ey)
VectorSourceColor(cola(Random($ffffff)))
FillVectorOutput()
a1=64:a2=a1/2:a3=0:If niveau & 1:Swap a1,a3:EndIf
For i=0 To ex Step 40
For j=0 To ey Step 40
x=i+Random(40)
y=j+Random(40)
r=10+Random(50)
c=Random($ffffff)
VectorSourceCircularGradient(x, y, r)
VectorSourceGradientColor(cola(c,a1),0.0)
VectorSourceGradientColor(cola(c,a2),0.8)
VectorSourceGradientColor(cola(c,a3),0.95)
VectorSourceGradientColor(cola(c,0 ),1.0)
AddPathCircle(x,y,r)
FillPath()
Next
Next
stopDrawingSprite(10)
;score
CreateSprite(20,ex/2,32,#PB_Sprite_AlphaBlending)
;raquette
DrawingSprite(0,128,16)
AddPathEllipse(64,8,62,7)
VectorSourceLinearGradient(64,0,64,16)
VectorSourceGradientColor(cola($00ff00), 0.0)
VectorSourceGradientColor(cola($ff0000), 1.0)
FillPath(#PB_Path_Preserve)
VectorSourceColor(cola($ffffff)):StrokePath(2)
stopDrawingSprite(0)
;balle
DrawingSprite(1, 16,16)
AddPathCircle(8,8,6)
VectorSourceCircularGradient(8, 8, 8, -2, -2)
VectorSourceGradientColor(cola($ffffff), 0.0)
VectorSourceGradientColor(cola($888888), 1.0)
FillPath()
stopDrawingSprite(1)
;balle (grosse)
DrawingSprite(2, 16,16)
AddPathCircle(8,8,8)
VectorSourceCircularGradient(8, 8, 8, -2, -2)
VectorSourceGradientColor(cola($00ffff), 0.0)
VectorSourceGradientColor(cola($008888), 1.0)
FillPath()
stopDrawingSprite(2)
;tire
DrawingSprite(3, 8,32)
AddPathEllipse(4,16,4,16)
VectorSourceCircularGradient(4, 10, 20)
VectorSourceGradientColor(cola($00ffff), 0.0)
VectorSourceGradientColor(cola($0000ff), 1.0)
FillPath()
stopDrawingSprite(3)
;canon
DrawingSprite(4, 16,20)
VectorSourceLinearGradient(0, 0,16,0)
VectorSourceGradientColor(cola($444444), 0.0)
VectorSourceGradientColor(cola($ffffff), 0.3)
VectorSourceGradientColor(cola($444444), 1.0)
FillVectorOutput()
stopDrawingSprite(4)
;explosion
DrawingSprite(5, 48,48)
AddPathCircle(24,24,24)
VectorSourceCircularGradient(24,24,24)
VectorSourceGradientColor(cola($ffffff), 0.0)
VectorSourceGradientColor(cola($00ffff), 0.6)
VectorSourceGradientColor(cola($00ffff,0), 1.0)
FillPath()
stopDrawingSprite(5)
;briques
Protected Dim col.l(23)
For i=0 To 23
c=Random($ffffff):col(i)=c
DrawingSprite(64+i, 32,32)
Select i
Case 0
AddPathBox(2,2,28,28)
VectorSourceColor(cola($ffffff))
StrokePath(3)
Case 1
btrans(1)=1
VectorSourceColor(cola($888888)):FillVectorOutput()
For j=0 To 31 Step 4
For k=0 To 31 Step 4
AddPathCircle(k+1,j+1,1):VectorSourceColor(cola($aaaaaa)):FillPath()
AddPathCircle(k+3,j+3,1):VectorSourceColor(cola($666666)):FillPath()
Next
Next
Case 2 To 11
ca=c|$ff000000
AddPathBox(2,2,28,28)
VectorSourceCircularGradient(16,16,17, -8,-8)
VectorSourceGradientColor(CoMelange($ffffffff,ca, 0.0), 0.0)
VectorSourceGradientColor(CoMelange($ffffffff,ca, 0.2), 0.1)
VectorSourceGradientColor(CoMelange(ca,$ff000000,0.2), 0.9)
VectorSourceGradientColor(CoMelange(ca,$ff000000,0.4), 0.99)
VectorSourceGradientColor(CoMelange($00000000,ca, 0.0), 1.0)
FillPath()
Select i
Case 2
AddPathCircle(10,16,3)
AddPathCircle(22,16,3)
VectorSourceColor(cola($ffffff)):FillPath(#PB_Path_Preserve)
VectorSourceColor(cola($000000)):StrokePath(1)
Case 3
AddPathCircle(16,16,5)
VectorSourceColor(cola($00ffff)):FillPath(#PB_Path_Preserve)
VectorSourceColor(cola($ff0000)):StrokePath(1)
Case 4
AddPathSegments("M 6 16 L 14 10 L 14 14 L 18 14 L 18 10 L 26 16 L 18 22 L 18 18 L 14 18 L 14 22 Z")
VectorSourceColor(cola($000000)):FillPath(#PB_Path_Preserve)
VectorSourceColor(cola($ffffff)):StrokePath(1)
Case 5
AddPathEllipse(16,16,3,6)
VectorSourceColor(cola($0088ff)):FillPath(#PB_Path_Preserve)
VectorSourceColor(cola($ff8800)):StrokePath(1)
EndSelect
Case 12 To 23
AddPathBox(2,2,28,28)
xClipPath(#PB_Path_Preserve)
If i<18:btrans(i)=i+6:Else: c=col(i-6):EndIf
c1=cola(c,$cc)
c2=cola($ffffff,$cc)
VectorSourceCircularGradient(16,16,20,4,4)
VectorSourceGradientColor(c1, 0)
VectorSourceGradientColor(c2, 1)
FillPath()
If i>=18
For j=0 To 40
VectorSourceColor(CoMelange(c1,$88ffffff, Random(16)/16))
MovePathCursor(16+pom(8),16+pom(8)):AddPathLine(16+pom(20),16+pom(20))
StrokePath(1)
Next
EndIf
EndSelect
stopDrawingSprite(i+64)
Next
EndProcedure
Procedure initniveau(niv)
Protected t.s,i,j,c
limite(niv,1,10)
If niveau<>niv:niveau=niv:RandomSeed(niv):initdecor():EndIf
t=niv(niveau)
c=0
nbr=0
For i=0 To 24:n(i,0)=1:Next
For j=1 To 16
n(0,j)=1:n(24,j)=1
For i=1 To 23:c+1
n(i,j)=Asc(Mid(t,c,1))-64:If n(i,j)<0:n(i,j)=0:EndIf
If n(i,j)>1:nbr+1:EndIf
Next
Next
rx=ex/2
rl=64
tire=0
ClearMap(e())
ClearMap(t())
ClearMap(b())
AddMapElement(b(),"0")
b()\x=rx
b()\y=ry
b()\dx=0
b()\dy=-4
b()\s=1
message("NIVEAU "+Str(niveau))
EndProcedure
Procedure RenderFrame()
Static px,nokey,nobutton,pause,bsel,i,j,br,pi,pj,etat
Protected txt.s
Macro sprite(n,x,y)
DisplayTransparentSprite(n,x+8,y+8,64,0!#SBCol)
DisplayTransparentSprite(n,x,y)
EndMacro
ExamineKeyboard()
ExamineMouse()
;tableau
DisplaySprite(10,0,0)
For j=0 To 16
For i=0 To 24
br=n(i,j):If br>0:Sprite(br+64,i*32,j*32):EndIf
Next
Next
StartDrawing(SpriteOutput(20))
DrawingMode(#PB_2DDrawing_AllChannels )
Box(0,0,ex*0.5,32,cola(0,0))
DrawingFont(FontID(2))
DrawText(ex*0.0,0,"SCORE "+Str(score),cola($ffffff),cola($888888))
DrawText(ex*0.3,0,"NIVEAU "+Str(niveau),cola($ffffff),cola($888888))
StopDrawing()
DisplayTransparentSprite(20,ex/4,0)
Select etat
Case 0 ; ---------------- menu
If KeyboardReleased(#PB_Key_Add ):initniveau(niveau+1):EndIf
If KeyboardReleased(#PB_Key_Subtract):initniveau(niveau-1):EndIf
If (nokey And KeyboardReleased(#PB_Key_All)) Or MouseButton(1):score=0:initniveau(niveau):etat=3:EndIf
If KeyboardReleased(#PB_Key_Escape):xEnd:EndIf
If KeyboardReleased(#PB_Key_F1):initniveau(niveau):etat=5:EndIf
Case 1 ; ---------------- attente
If (nokey And KeyboardReleased(#PB_Key_All)) Or MouseButton(1):etat=3:EndIf
Case 2 ; ---------------- pause
If KeyboardReleased(#PB_Key_Escape):message(titre):xReleaseMouse(0):etat=0:EndIf
If (nokey And KeyboardReleased(#PB_Key_All)):xReleaseMouse(0):etat=3:EndIf
Case 3 ; ---------------- jeux
; balles
ForEach b()
With b()
\x+\dx
\y+\dy
px=\x-rx
If collision(\x,\y+\dy,\s):\dy=-\dy:EndIf
If collision(\x+\dx,\y,\s):\dx=-\dx:EndIf
If \y=ry And px>-rl And px<rl:\dy=-\dy:\dx=\dx+(px*8)/rl:EndIf
If nbr=0 And MapSize(e())=0:initniveau(niveau+1):etat=1:EndIf
Sprite(b()\s,b()\x-8,b()\y-8)
If \y>ey:DeleteMapElement(b()):If MapSize(b())=0:message("GAME OVER"):etat=0:EndIf:EndIf
EndWith
Next
; tires
ForEach t()
With t()
\y+\dy
Sprite(3,\x-4,\y-8)
If collision(\x,\y+\dy,0):DeleteMapElement(t()):EndIf
EndWith
Next
; explosion
ForEach e()
With e()
DisplayTransparentSprite(5,\x,\y,\s)
\s-16:If \s<0:DeleteMapElement(e()):EndIf
EndWith
Next
; raquette
rx+(Bool(KeyboardPushed(#PB_Key_Right)<>0)-Bool(KeyboardPushed(#PB_Key_Left)<>0))*16+MouseDeltaX():limite(rx,0,ex)
ZoomSprite(0,rl*2,16):Sprite(0, rx-rl, ry)
If tire :DisplayTransparentSprite(4,rx-8,ry-4):If (nobutton And MouseButton(1)) Or KeyboardReleased(#PB_Key_Up):NVtire():EndIf:EndIf
If KeyboardReleased(#PB_Key_Escape):xReleaseMouse(1):message("PAUSE"):etat=2:EndIf
Case 5 ; ---------------- editeur
For i=1 To 23:DisplaySprite(64+i,i*32,ey-56):Next
pi=MouseX()/32:If pi<1:pi=1:ElseIf pi>23:pi=23:EndIf
pj=MouseY()/32:If pj<1:pj=1:ElseIf pj>17:pj=17:EndIf
DisplayTransparentSprite(64,pi *32,pj*32)
DisplayTransparentSprite(64,bsel *32,17*32,$ff,$ff0000ff)
If MouseButton(1)=1:If pj=17:bsel=pi: ElseIf pj<=14: n(pi,pj)=bsel:EndIf:EndIf
If MouseButton(2)=1 And pj<=14:n(pi,pj)=0:EndIf
If KeyboardReleased(#PB_Key_Escape):For j=1 To 14:For i=1 To 23:txt+Chr(64+n(i,j)):Next:Next:niv(niveau)=txt:Debug txt:etat=0:EndIf
EndSelect
If etat<=2:DisplayTransparentSprite(30,ex*0.2,ey*0.25):EndIf
FlipBuffers()
nokey=Bool(KeyboardPushed(#PB_Key_All)=0)
nobutton=Bool(MouseButton(1)=0)
EndProcedure
;niveaux
niv(1)="@FFFFFI@@@@@@@@@FKKKKK@DFGGGFI@QQQQQQQ@FKJJJKE@FGHGFI@QPPPPPQ@FKJIJK@@FGGGFI@QPBBBPQ@FKJJJK@@FFFFFI@QPBBBPQ@FKKKKK@@IIIIII@QPBBBPQ@FFFFFF@@@@@@@@@QPPPPPQ@@@@@@@@@@@@@@@@QQQAQQQ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B@@@@@@@@@@@@@B@@@@@@AAAAA@@@@@@@@@AAAAA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
niv(2)="@@@@@@@@JBBBBJ@@@@@@@@@@HHHHH@@JBBBBJ@@@IIIII@@KKKKK@@AAAAAA@@@FFFFF@@PMNOQ@@@@@@@@@@@PMNOP@@PMNOQ@@@@@@@@@@@PMNOP@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAA@@@@@@@@@AAAAAAAFFFFFFA@@@@@@@@@AIIIIIIGGGGGGA@@@@C@@@@AJJJJJJHHHHHHA@@AAAAA@@AKKKKKKIIEIIIA@@@@@@@@@AFFFDFF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
niv(3)="@@@@@@@@@@@@@@@@@@@@@@@@BPPPB@@JJJJJ@@BMMMMMB@@POOOP@@IIIII@@MMQQQQM@@POOOP@@HHHHH@@MQQQQQM@@POOOP@@@@@@@@@MQQQQQM@@POOOP@@B@@@B@@MQQQQQM@@BPPPB@@@@@@@@@BMMMMMB@@@@@@@@@AANAA@@@@@@@@@@@@@@@@@@AMMMA@@@@@@@@@@AAAAAAAAALLLAAAAAAAAAAA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
niv(4)="NOPQLN@@@@@@@@@@@@@@@@@OPQLN@@@@@@@@@@@@@@@@@@PQLN@@@AMMMMMMMMMA@@@@@QLN@@@@AFFFFFFFFFA@@@@@LN@@@@@AHHHHHHHHHA@@@@LN@@@@@@AAAAAAAAAAA@@@LQ@@@@@@@DBBBBBC@@@@@@LQP@@@AAAAAAAAAAA@@@@@LQPO@@@AJJJJEJJJJA@@@@LQPON@@@AIIIIIIIIIA@@@@@LQPO@@@ALLLLLLLLLA@@@@@@LQP@@@@@@@@@@@@@@@@@@@@@LQ@@@@@@@@@@@@@@@@@@@@@@L@@@@@@@@@@@@@@@@@@@@@@@"
niv(5)="@@@@@@@@@@@O@@@@@@@@@@@@@@@@@@@@@NNN@@@@@@@@@@@A@@@@@@@MMMMM@@@@@@@A@@AB@@@@@LLLLLLL@@@@@BA@@A@@@@@KCKCKCKCK@@@@@A@@AB@@@JJJJJJJJJJJ@@@BA@@A@@@IIIIIIIIIIIII@@@A@@A@@HHHHHHHHHHKKHHH@@A@@A@GGGGGGGGGGGGGGGGG@A@@AFFFFFFFFFFFFFFFFFFFA@@AAAAAAAAAAAAAAAAAAAAA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
niv(6)="@C@@B@@B@@@E@@@B@@B@@C@@@@@@@@@@@@@@@@@@@@@@@@QQQQQQQQQQQAMMMMMMMMMMMFFFFFFFFFFFAKKKKKKKKKKKIIIIIIIIIIIAGGGGGGGGGGGGGGGGGGGGGGAHHHHHHHHHHHKKKKKKKKKKKAFFFFFFFFFFFHHHHHHHHHHHAIIIIIIIIIII@@@@@B@@@@@A@@@@@@B@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
niv(7)="@@@@@@@@@@@D@@@@@@@@@@@@@@@@@@@BBBBBBB@@@@@@@@@@@@@@@BGGGGGGGB@@@@@@@@@@@@@BGGGGGGGGGB@@@@@@@@@@@BGGKKGGGKKGGB@@@@@@@@@@BGGKKGGGKKGGB@@@@@@@@@@GGGGGGGGGGGGG@@@@@@@@@@GGGGGGGGGGGGG@@@@@@@@@@GGGHGGGGGGHGG@@@@@@@@@@@GGGHGGGGHGGG@@@@@@@@@@@GGGGHHHHGGG@@@@@@@@@@@@@GGGGGGGGG@@@@@@@@@@@@@@@GGGGGGG@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
niv(8)="@@@H@@@@@@@@@@@@@@@L@@@@@HIH@@@@@@@@@B@@@LNL@@@HIJIH@@@@K@@@A@@LNNNL@HIJCJIH@@KJK@@@@@@LNL@@@HIJIH@@KJHJK@@@@@@L@B@@@HIH@@KJHEHJK@@I@@@@A@@@@H@@@@KJHJK@@IFI@@@@@@@B@@P@@@KJK@@IFGFI@@@@@@A@PQP@@@K@@IFGDGFI@@@@@@PQQQP@@@B@@IFGFI@@@@@@@@PQP@@@@A@@@IFI@@@@@@@@@@P@@@@@@@@@@I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
niv(9)="KKKKKAKKKKKKKKKKKAKKKKKKCJJJAJJJJJCJJJJJAJJJCKKJBIIAIIIIIDIIIIIAIIBJKKJIHHAHBHHHHHHHBHAHHIJKKJIHGAGGGGGGGGGGGAGHIJKKJIBGA@@AAAAAAA@@AGBIJKKJIHGA@@@@@@@@@@@AGHIJKKJIHG@@@@@@@@@@@@@GHIJKAAAA@@@@@@@@@@@@@@@AAAA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
niv(10)="@@@@@@@@@@@@@KKK@@@@@@C@@@@C@@@@@@@KKFKK@@@G@@@@@@@@@FFF@@KFAFK@@GBG@@@G@@@FJFJF@KKFKK@@@G@@@GBG@@FFAFF@@KKK@@@@@@@@@G@@@FJFJF@@@@@@@KKK@@@@@@@@@FFF@@@@@@@KKFKK@@@FFF@@@@@@@@@G@@KFAFK@@FJFJF@@@@@@@GBG@KKFKK@@FFAFF@@@C@@@@G@@@KKK@@@FJFJF@@@@@@@@@@@@@@@@@@@FFF@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
OpenWindow(0,0,0,ex* zoom,ey* zoom,"casse brique",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,ex,ey,1,0,0,#PB_Screen_SmartSynchronization)
LoadFont(1, "Arial", 13, #PB_Font_Bold)
LoadFont(2, "Arial", 20, #PB_Font_Bold)
LoadFont(3, "Arial", 45)
initniveau(1)
message(titre)
xrenderframe