Page 1 sur 2

mini jeu - casse brique (compatible PB/SB)

Publié : mer. 21/sept./2016 9:49
par Guillot
Salut les codeurs,

j'ai fais un petit casse brique compatible PB et SB
quelques petits problèmes en SB (MouseDeltaX(), vectordrawing anormalement lent (cf bugs reports)...)
mais a part ça on peut déjà presque tout faire
je sens que je vais sortir des petits jeux internet a la pelle grâce SB
j'espere que ça vous donnera aussi envie d'en faire

PS : désolé, pas de bruitage, je m'étais fais un petit generateur de son, mais il marche plus en PB 5.50...

Code : Tout sélectionner

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:While WindowEvent():Wend: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

Re: mini jeu - casse brique (compatible PB/SB)

Publié : mer. 21/sept./2016 10:32
par djes
En tant que spécialiste, je te fais mes compliments ;)

Re: mini jeu - casse brique (compatible PB/SB)

Publié : mer. 21/sept./2016 11:10
par Ar-S
Excellent !
La raquette en ellipse, très bonne idée pour les rebonds !

Re: mini jeu - casse brique (compatible PB/SB)

Publié : mer. 21/sept./2016 19:46
par JohnJohnsonSHERMAN
Absolument époustouflant :P J'adooore, même si c'est super dur en fait :mrgreen:
Merci beaucoup pour ce petit jeu!

Re: mini jeu - casse brique (compatible PB/SB)

Publié : jeu. 22/sept./2016 4:23
par SPH
S U P E R 8)

Re: mini jeu - casse brique (compatible PB/SB)

Publié : jeu. 22/sept./2016 9:08
par Guillot
@ djes:
tres honoré !
j'ai testé purebreaker
mon casse brique fait tres "mini budget" à coté !

Re: mini jeu - casse brique (compatible PB/SB)

Publié : jeu. 22/sept./2016 9:34
par Ar-S
Guillot a écrit :@ djes:
tres honoré !
j'ai testé purebreaker
mon casse brique fait tres "mini budget" à coté !
Vu le nombre de lignes pour créer le tiens je te trouve très humble :wink:

Re: mini jeu - casse brique (compatible PB/SB)

Publié : jeu. 22/sept./2016 10:06
par falsam
Trés bon jeu sur 10 niveaux faisant penser à Arkanoid en bien mieux pour passer un bon moment derrière un ordinateur. Pas de vie mais des libérations de balles et possibilité de tirer avec la souris. Merci beaucoup Guillot.

Re: mini jeu - casse brique (compatible PB/SB)

Publié : jeu. 22/sept./2016 10:27
par djes
Guillot a écrit :@ djes:
tres honoré !
j'ai testé purebreaker
mon casse brique fait tres "mini budget" à coté !
Il faut une base, et ce que j'apprécie, c'est que tu ne dénatures pas le concept. Arkanoid est très vieux, mais les collisions étaient déjà bien gérées, et ce n'est pas si facile ! Ça montre une envie de bien faire :)

Re: mini jeu - casse brique (compatible PB/SB)

Publié : jeu. 22/sept./2016 11:54
par comtois
Wow, c'est excellent, et en si peu de code 8O

Re: mini jeu - casse brique (compatible PB/SB)

Publié : ven. 23/sept./2016 19:56
par Kwai chang caine
Vraiment beau, de la classe de ceux du commerce 8O
Et surtout merci pour le partage 8)

Re: mini jeu - casse brique (compatible PB/SB)

Publié : lun. 03/juil./2017 6:28
par Tonio
Bonjour Guillot

Comment tu as fait pour inserer les graphismes sans les charger?


merci

Re: mini jeu - casse brique (compatible PB/SB)

Publié : lun. 03/juil./2017 8:58
par Ar-S
Il les dessine... Si tu lis tu vois les emplacements : raquette, balle etc...

Re: mini jeu - casse brique (compatible PB/SB)

Publié : lun. 03/juil./2017 9:36
par Tonio
Ar-S a écrit :Il les dessine... Si tu lis tu vois les emplacements : raquette, balle etc...

Merci pour la réponse mais que veux dire ceci :

Code : Tout sélectionner

;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

Re: mini jeu - casse brique (compatible PB/SB)

Publié : lun. 03/juil./2017 10:22
par Guillot
ils sont créés dans la procedure initdecor
c'est fait avec la lib vectordrawing
comme je dessine des sprites et que la vectordrawing ne fonctionne pas avec, je les créé dans une image que je recopie ensuite dans un sprite
(macro DrawingSprite et StopDrawingSprite)