IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SpiderBasic Discussion :

quelques démos et jeux avec SpiderBasic/PureBasic


Sujet :

SpiderBasic

  1. #1
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    avril 2003
    Messages
    1 227
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 1 227
    Points : 7 900
    Points
    7 900
    Billets dans le blog
    8
    Par défaut quelques démos et jeux avec SpiderBasic/PureBasic
    Un utilisateur de PureBasic et SpiderBasic (Guillot) nous propose toujours des codes excellents, aussi bien en 2D qu'en 3D.

    Fonction - ImageFont (compatible PB/SB(2.00))

    Nom : VectorDrawing.png
Affichages : 658
Taille : 218,4 Ko

    Citation Envoyé par Guillot
    Salut les artistes,

    une petite fonction pour afficher du texte dont la fonte est 'mixée' avec une image

    probleme : PB (et SB) ne permettant pas de travailler sur 2 sorties graphique en même temps
    je dois passer par une procedure d'initialisation qui lit l'image et qui doit donc être exécuter en dehors de StartDrawing/StopDrawing

    initIF(image,centerX.l=-1,centerY=-1)
    - image : numero de l'image
    - [centerx/y] : definit le centre de l'image. par defaut, il est placer au milieu de l'image

    puis on utilise
    DrawTextIF(x,y,text.s)

    j'espere que ça pourra vous etre utile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    ; fonction - imagefont - pf shadoko - 2016
     
    CompilerIf #PB_Compiler_OS<>5
        Macro doevents:Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow:EndMacro
    CompilerElse
        Macro doevents:i=i:EndMacro
    CompilerEndIf
     
    ;####################################################################################
    Procedure SortIdx(Array t.l(1),Array idx.l(1),deb=0, fin=-1)
        Protected min,i,j,v,idmin
        If fin=-1: fin=ArraySize(t()):EndIf
        Dim idx(fin)
        For i=deb To fin:idx(i)=i:Next
        For i=deb To fin
            min=$7fffffff
            For j=i To fin
                v=t(idx(j))
                If v<min:min=v:idmin=j:EndIf
            Next
            Swap idx(i),idx(idmin)
        Next
    EndProcedure
     
    Procedure initIF(image,centerX.l=-1,centerY=-1)
        ;image : numero de l'image
        ;centerx/y : definit le centre de l'image
        Structure IFsij
            i.b
            j.b
        EndStructure
     
        Protected i,j,n,di,dj
        Protected idx=ImageWidth(image):If centerX<0:centerX=idx/2:EndIf
        Protected idy=ImageHeight(image):If centery<0:centery=idy/2:EndIf
        Protected Dim IFdis.l(idx * idy-1)
        Global Dim IFidx.l(idx * idy-1)
        Global Dim IFbmp.l(idx-1,idy-1)
        Global Dim IFpos.IFsij(idx * idy-1)
     
        StartDrawing(ImageOutput(image))
        DrawingMode(#PB_2DDrawing_AllChannels) 
        For j=0 To idy-1
            For i=0 To idx-1
                IFbmp(i,j)=Point(i,j)
                IFpos(n)\i=i:di=i-centerX
                IFpos(n)\j=j:dj=j-centerY
                ;IFdis(n)=di*di+dj*dj
                IFdis(n)=Abs(di)+Abs(dj)
                n+1
            Next
        Next
        StopDrawing()   
        sortidx(IFdis(),IFidx())
    EndProcedure
     
    Procedure DrawTextIF(x,y,text.s)
        Protected n,nn=ArraySize(IFidx())
        DrawingMode(#PB_2DDrawing_Transparent |#PB_2DDrawing_AlphaBlend)
        For n=0 To nn
            With IFpos(IFidx(nn-n))
                If Alpha(IFbmp(\i,\j)):DrawText(x+\i,y+\j,text,IFbmp(\i,\j)):EndIf
            EndWith
        Next   
    EndProcedure
    ;####################################################################################
     
    Procedure exemple()
        EnableExplicit
        Protected i,j,n,idx=800,idy=600
        For n=0 To 7
            CreateImage(10+n,16,16,32,#PB_Image_Transparent)
            StartVectorDrawing(ImageVectorOutput(10+n))
            Select n
                Case 0
                    VectorSourceCircularGradient(8-3,8-3,10)
                    VectorSourceGradientColor($ffffffff, 0.0)
                    VectorSourceGradientColor($ffffaaaa, 0.4)
                    VectorSourceGradientColor($ff886666, 1.0)     
                    VectorSourceGradientColor($00886666, 1.0)
                    AddPathCircle(8,8,7):FillPath()
                Case 1
                    AddPathBox(11,11,4,4):VectorSourceColor($08000000):FillPath()
                    AddPathBox(8,8,2,2):VectorSourceColor($ff0000ff):FillPath()
                Case 2
                    AddPathCircle(12,12,3):VectorSourceColor($11000000):FillPath()
                    AddPathCircle(8,8,3)
                    VectorSourceColor($ff008800):FillPath(#PB_Path_Preserve)
                    VectorSourceColor($ffffffff):StrokePath(2)
                Case 3
                    AddPathBox(6,6,4,4)
                    VectorSourceColor($ffaaaaff):FillPath(#PB_Path_Preserve)
                    VectorSourceColor($ffffffff):StrokePath(1)
                    AddPathBox(6,10,4,4):VectorSourceColor($ff8888ff):FillPath()
                Case 4
                    VectorSourceCircularGradient(8,8,7)
                    VectorSourceGradientColor($ff008800, 0.0)
                    VectorSourceGradientColor($ff00ffff, 0.8)     
                    VectorSourceGradientColor($0000ffff, 1.0)     
                    FillVectorOutput()
                Case 5
                    AddPathCircle(8,8,7):VectorSourceColor($ffffffff):FillPath()
                    AddPathCircle(8,8,1):VectorSourceColor($ff0000ff):StrokePath(1)
                    AddPathCircle(8,8,4):VectorSourceColor($ff0000ff):StrokePath(1)
                Case 6
                    RandomSeed(1)
                    For i=0 To 15
                        AddPathBox(Random(8)+4,Random(8)+4,1,1)
                        VectorSourceColor(RGBA(0,Random(255),0,$44)):FillPath()
                    Next
                Case 7
                    AddPathBox(11,11,4,4):VectorSourceColor($10000000):FillPath()
                    AddPathBox(7,7,4,4):VectorSourceColor($ffff4444):FillPath()
                    AddPathBox(5,5,4,4):VectorSourceColor($ffffbbbb):FillPath()
                    AddPathBox(6,6,4,4):VectorSourceColor($ffff8888):FillPath()
            EndSelect   
            StopVectorDrawing()
        Next
     
        LoadFont(0, "Courier New", 45)
        CreateImage(0,idx,idy,32,$888888)
        StartDrawing(ImageOutput(0))
        For j=0 To idx Step 16
            For i=16 To idx Step 16
                Box(i,j,16,16,($a0+(i+j) & $10) * $010101)
            Next
        Next   
        StopDrawing()
     
        For i=0 To 7
            initif(10+i)       
            StartDrawing(ImageOutput(0))
            DrawingFont(FontID(0))   
            DrawTextif(20,i*72,"BONJOUR tout le monde")
            DrawAlphaImage(ImageID(10+i),0,30+i*72)
            StopDrawing()
        Next
        OpenWindow(0, 0, 0, idx, idy, "test4", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
        ImageGadget(0, 0, 0, idx, idy,ImageID(0))
        doevents
    EndProcedure
     
    exemple()
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  2. #2
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    avril 2003
    Messages
    1 227
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 1 227
    Points : 7 900
    Points
    7 900
    Billets dans le blog
    8
    Par défaut
    mini jeu - casse brique (compatible PB/SB)

    Nom : CasseBrique1.png
Affichages : 578
Taille : 251,6 Ko

    Citation Envoyé 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 à 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'espère que ça vous donnera aussi envie d'en faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    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
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  3. #3
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    avril 2003
    Messages
    1 227
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 1 227
    Points : 7 900
    Points
    7 900
    Billets dans le blog
    8
    Par défaut
    mini jeu - puzzle (compatible PB/SB)

    Citation Envoyé par Guillot
    Salut les codeurs,

    encore un petit jeu compatible PB et SB
    désolé pour les forme rectangulaire des pièces, j'avais fait des jolies pièces arrondies, mais ça fonctionne pas sous SB (manque les fonction 'clippath' ou 'vectorsourceimage' du PB)
    peut être dans les prochaines version de SB

    pour trouver de belles images je vous conseille:
    https://pixabay.com/fr/photos/?q=rui...h=&min_height=

    PS :vous pouvez régler le nombre de pièce ligne 20

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    EnableExplicit
     
    Enumeration:#smouse:#schrono:#smessage:EndEnumeration
     
    Structure spiece
        s.i
        i.w
        j.w
        x.w :y.w :a.w
        xo.w:yo.w:ao.w
        xb.w:yb.w:ab.w
        h.w
        b.w
        g.w
        d.w
        sel.b
    EndStructure
     
    ExamineDesktops()
    Global nbpiecevoulu=50 ; <<<<<<<<<<<<
    Global ex=DesktopWidth(0),ey=DesktopHeight(0),bidon,zoom.f=1,titre.s="Puzzle",fic.s
    Global np,npj,lp,hp
    Global Dim p.spiece(0)
    Global Dim zindex(0)
     
     
    CompilerIf #PB_Compiler_OS<>5
      #SBCol=0
      Macro xUseJPEGImageDecoder:UseJPEGImageDecoder:EndMacro
      Macro xend:End:EndMacro
      Macro xClipPath(v):ClipPath(v):EndMacro
      Macro xReleaseMouse(v):ReleaseMouse(v):EndMacro
      Macro xMouseLocate(x,y):MouseLocate(x,y):EndMacro
      Macro xRenderFrame:Repeat:WindowEvent():RenderFrame(): ForEver:EndMacro
      Macro waitloadfinish:loadfinish():EndMacro
    CompilerElse
      #SBCol=$ff000000
      Macro xUseJPEGImageDecoder():bidon=1:EndMacro
      Macro xend:ReleaseMouse(1):EndMacro
      Macro xClipPath(v):bidon=1:EndMacro
      Macro xReleaseMouse(v):bidon=1:EndMacro
      Macro xMouseLocate(x,y):bidon=1:EndMacro
      Macro xRenderFrame:BindEvent(#PB_Event_RenderFrame, @RenderFrame()):FlipBuffers():EndMacro
      Macro waitloadfinish:BindEvent(#PB_Event_Loading, @loadfinish()):EndMacro
    CompilerEndIf
     
    InitKeyboard()
    InitMouse()
    InitSprite()
    xUseJPEGImageDecoder()
     
    Macro cola(col,a=$ff):((col|(a<<24))!#SBCol):EndMacro
     
    Macro limite(v,min,max):If v<min:v=min:EndIf:If v>max:v=max:EndIf:EndMacro
     
    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
     
    Procedure init(n)   
        Protected   i,j,c,oix,oiy,ix,iy,x,y,px,py,ni,nj
        Protected.f r
        oix=ImageWidth(0)
        oiy=ImageHeight(0)
        r=oiy/oix
        ix=Sqr(ex*ey/(1.5*r)):iy=r*ix
        ResizeImage(0,ix,iy)
        ni=Sqr(n*ix/iy)
        nj=iy*ni/ix
        np=ni*nj
        lp=ix/ni
        hp=iy/nj
        Dim p(np)
        Dim zindex(np)
        c=0
        For j=0 To nj-1:y=j*hp
            For i=0 To ni-1:x=i*lp           
                GrabImage(0,1,x,y,lp,hp)
                CreateImage(2,lp,hp)
                StartVectorDrawing(ImageVectorOutput(2))
                DrawVectorImage(ImageID(1)):StrokePath(1); <-- bug SB : apres DrawVectorImage le tracé suivant ne s'affiche pas (d'où ce StrokePath bidon)
                Macro contour(dx,dy):MovePathCursor(dx,dy):AddPathLine(lp+1+dx,dy):AddPathLine(lp+1+dx,hp+1+dy):AddPathLine(dx,hp+1+dy):ClosePath():StrokePath(1):EndMacro
                VectorSourceColor(cola($000000,$44)):contour(-1.5,-1.5)
                VectorSourceColor(cola($ffffff,$44)):contour( 0.5, 0.5)
                StopVectorDrawing()
                c+1
                With p(c)
                    \i=i
                    \j=j
                    \x=x+(ex-ix)/2:\xo=\x:\xb=Random(ex-lp)
                    \y=y+(ey-iy)/2:\yo=\y:\yb=Random(ey-hp)
                    \s=CreateSprite(-1,lp,hp,#PB_Sprite_AlphaBlending )
                    StartDrawing(SpriteOutput(\s))
                    DrawImage(ImageID(2),0,0)
                    StopDrawing()
                    zindex(c)=c
                EndWith
            Next
        Next
        RandomizeArray(zindex(),1,np)
     
        DrawingSprite(#smouse,32,32)
        AddPathSegments("M 0 0 L 32 16 L 16 32 Z")
        VectorSourceColor(cola($000000)):FillPath(#PB_Path_Preserve)
        VectorSourceColor(cola($ffffff)):StrokePath(2)
        StopDrawingSprite(#smouse)
     
        xMouseLocate(ex/2,ey/2)
    EndProcedure
     
    Procedure deplace(dx,dy)
        Protected k
        For k=1 To np
            If p(k)\sel:p(k)\x+dx:p(k)\y+dy:EndIf
        Next
    EndProcedure
     
    Procedure connexion()
        Protected k,l,x,y,dx,dy
     
        Macro prox(di,dj,cote1,cote2)
            dx=x-p(k)\x+di*lp
            dy=y-p(k)\y+dj*hp
            If (Abs(dx)<16 And Abs(dy)<16) And (p(l)\i+di=p(k)\i And p(l)\j+dj=p(k)\j)
                p(l)\cote1#=k
                p(k)\cote2#=l
                deplace(-dx,-dy)
                ProcedureReturn
            EndIf
        EndMacro
     
        For l=1 To np
            If p(l)\sel
                x=p(l)\x
                y=p(l)\y
                For k=1 To np
                    If p(k)\sel=0
                        prox( 1,0,d,g)
                        prox(-1,0,g,d)
                        prox(0, 1,b,h)
                        prox(0,-1,h,b)
                    EndIf
                Next
            EndIf
        Next
    EndProcedure
     
    Procedure piececonnexe(n)
        If n=0 Or p(n)\sel:ProcedureReturn:EndIf
        p(n)\sel=1
        npj+1
        piececonnexe(p(n)\h)
        piececonnexe(p(n)\b)
        piececonnexe(p(n)\g)
        piececonnexe(p(n)\d)
    EndProcedure
     
    Procedure selectionne(mx,my)
        Protected k,kk,l,i,dx,dy,psel=0,iz,pr
        For k=1 To np:i=zindex(k)
            dx=mx-p(i)\x
            dy=my-p(i)\y
            If dx>0 And dx<lp And dy>0 And dy<hp:psel=i:EndIf
        Next
        If psel:piececonnexe(psel):EndIf
        iz=np
        For k=0 To np:kk=zindex(k)
            If p(kk)\sel:For l=k To np-1:zindex(l)=zindex(l+1):Next:zindex(np)=kk:EndIf
        Next   
        ProcedureReturn psel
    EndProcedure
     
    Procedure message(txt1.s,txt2.s,txt3.s)
    Macro dt(nf,y,t,col)
        DrawingFont(FontID(nf))
        DrawText((OutputWidth()-TextWidth(t))/2,y,t,col!#SBCol)
    EndMacro
        CreateSprite(#smessage,600,200,#PB_Sprite_AlphaBlending)
        StartDrawing(SpriteOutput(#smessage))
        DrawingMode(#PB_2DDrawing_AllChannels)
        Box(0,0,600,200,cola(0,0))
        RoundBox(0,0,600,200,50,50,$88884444!#SBCol)
        DrawingMode(#PB_2DDrawing_AlphaBlend |#PB_2DDrawing_Transparent)
        dt(1,20,txt1,$ffffffff)
        dt(0,100,txt2,$ff00ffff)
        dt(0,150,txt3,$ff00ffff)
        StopDrawing()
    EndProcedure
    Procedure RenderFrame()
        Static n,etat=-1,amb,mb,amx,mx,amy,my,psel,chrono,chronoi
        Protected i,k,r.f,iz
     
        Macro effacesel:For k=0 To np:p(k)\sel=0:Next:EndMacro
     
        ExamineKeyboard()
        ExamineMouse()
        amb=mb:mb=MouseButton(1)
        amx=mx:mx=MouseX()
        amy=my:my=MouseY()
        ClearScreen($88aabb)
        Select etat
            Case -1
                message(titre,"Image: "+fic,Str(np)+" pieces"):etat=0
            Case 0
                If mb=1:n=0:etat=1:EndIf
            Case 1 ;========== brassage
                r=(1-Cos(Radian(n)))/2
                For i=0 To np
                    With p(i)
                        \x=\xo*(1-r)+\xb*r
                        \y=\yo*(1-r)+\yb*r
                        \a=\ao*(1-r)+\ab*r
                    EndWith
                Next
                n+4:If n>180:chronoi=Date():etat=2:EndIf
            Case 2 ;========== jeux
                chrono=Date()-chronoi
                If amb=0 And mb=1:psel=selectionne(mx,my):EndIf
                If amb=1 And mb=1 And psel:deplace(mx-amx,my-amy):EndIf
                If amb=1 And mb=0 :connexion():psel=0:effacesel:npj=0:piececonnexe(1)
                    If npj=np:message("Bravo","Vous avez perdu "+Str(chrono/3600)+" heure(s) et "+ Str((chrono%3600)/60)+" minute(s)","Maintenant au boulot !"):etat=3:EndIf:effacesel
                EndIf
            Case 3
                If amb=0 And mb=1:xEnd:EndIf
        EndSelect   
     
        Macro affiche(msel,mombre)
            For i=1 To np:iz=zindex(i)
                If p(iz)\sel=msel
                    ;RotateSprite(i,\a,0)
                    If mombre=1:DisplayTransparentSprite(p(iz)\s, p(iz)\x+8,p(iz)\y+8 ,64,0!#SBCol):EndIf
                    If mombre=0:DisplayTransparentSprite(p(iz)\s, p(iz)\x,p(iz)\y):EndIf
                EndIf
            Next
        EndMacro
        affiche(0,0)
        affiche(1,1)
        affiche(1,0)
     
        DrawingSprite(#schrono,128,32)
        VectorSourceColor(cola($000000,$44)):FillVectorOutput()
        VectorSourceColor(cola($ffffff)):MovePathCursor(16,4):VectorFont(FontID(0), 25):DrawVectorText(FormatDate("%hh:%ii:%ss",chrono))
        StopDrawingSprite(#schrono)
        DisplayTransparentSprite(#schrono, 4,4)
     
        If etat=0 Or etat=3:DisplayTransparentSprite(#smessage,ex/2-300,ey/2-100):EndIf
     
        DisplayTransparentSprite(#smouse, mx,my)
     
        FlipBuffers()
        If KeyboardReleased(#PB_Key_Escape):xEnd:EndIf
    EndProcedure
     
    OpenWindow(0,0,0,ex* zoom,ey* zoom,"Puzzle",#PB_Window_BorderLess|#PB_Window_ScreenCentered)
    OpenWindowedScreen(WindowID(0),0,0,ex,ey,0,0,0,#PB_Screen_SmartSynchronization)
    LoadFont(0, "arial", 20)
    LoadFont(1, "arial", 50)
     
    Procedure loadfinish()
        init(nbpiecevoulu)
        xRenderFrame
    EndProcedure
     
    CompilerIf #PB_Compiler_OS<>5
      fic=OpenFileRequester("Selectionnez une image","","Fichier jpeg|*.jpeg;*.jpg",0)
      LoadImage(0,fic):waitloadfinish
    CompilerElse
      Procedure lireimage()
        While NextSelectedFile():fic=SelectedFileName():Wend
        CloseWindow(1)
        LoadImage(0,fic,#PB_LocalFile):waitloadfinish
      EndProcedure
      Procedure selection()
        OpenFileRequester("", @ lireimage(), #PB_Requester_MultiSelection)
      EndProcedure   
      OpenWindow(1, 0,0, 200, 140, "Puzzle",#PB_Window_ScreenCentered)
      ButtonGadget(0, 10, 10, 180, 120, "Selectionnez une image"):BindGadgetEvent(0, @ selection())
    CompilerEndIf
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  4. #4
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    avril 2003
    Messages
    1 227
    Détails du profil
    Informations forums :
    Inscription : avril 2003
    Messages : 1 227
    Points : 7 900
    Points
    7 900
    Billets dans le blog
    8
    Par défaut
    Module: GoogleChartGadget

    Peter, un autre utilisateur de SpiderBasic nous propose un module dédié au GoogleChartGadget

    Citation Envoyé par Peter
    here is my first attempt of a GoogleChartGadget-Module:
    Nom : APIBWSy.png
Affichages : 692
Taille : 172,7 Ko

    enregistrer le code ci-dessous sous le nom GoogleChartGadget.sbi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    EnableExplicit
     
    DeclareModule GoogleChart
     
      EnableExplicit
     
      EnumerationBinary
        #PB_Border
      EndEnumeration
     
      ; ChartTypes:
     
      #ChartTypeAnnotation = "AnnotationChart"
      #ChartTypeArea = "AreaChart"
      #ChartTypeBar = "BarChart"
      #ChartTypeBubble = "BubbleChart"
      #ChartTypeCandleStick = "CandlestickChart"
      #ChartTypeCalendar = "Calendar"
      #ChartTypeColumn = "ColumnChart"
      #ChartTypeCombo = "ComboChart"
      #ChartTypeGantt = "Gantt"
      #ChartTypeGauge = "Gauge"
      #ChartTypeGeo = "GeoChart"
      #ChartTypeHistogram = "Histogram"
      #ChartTypeLine = "LineChart"
      #ChartTypeMap = "Map"
      #ChartTypeOrg = "OrgChart"
      #ChartTypePie = "PieChart"
      #ChartTypeSankey = "Sankey"
      #ChartTypeScatter = "ScatterChart"
      #ChartTypeSteppedArea = "SteppedAreaChart"
      #ChartTypeTable = "Table"
      #ChartTypeTimeline = "Timeline"
      #ChartTypeTreeMap = "TreeMap"
      #ChartTypeWordTree = "WordTree"
     
      Enumeration
        #ChartGadgetOptions
        #ChartGadgetData
        #ChartGadgetQuery
      EndEnumeration
     
      Declare Init(Callback)
      Declare Gadget(Gadget, x, y, Width, Height, ChartType.s = #ChartTypeLine, Flags = 0)
     
      Declare GetChartGadgetAttribute(Gadget, Attribute)
      Declare SetChartGadgetAttribute(Gadget, Attribute, Value)
     
      Declare Refresh(Gadget)
     
    EndDeclareModule
     
    Module GoogleChart
     
      EnableExplicit
     
      Procedure Gadget(Gadget, x, y, Width, Height, ChartType.s = #ChartTypeLine, Flags = 0)
     
        Protected ContainerGadgetFlags = #PB_Container_BorderLess
     
        If Flags & #PB_Border
          ContainerGadgetFlags = #PB_Container_Single
        EndIf
     
        If Gadget = #PB_Any
          Gadget = ContainerGadget(Gadget, x, y, Width, Height, ContainerGadgetFlags)
        Else
          ContainerGadget(Gadget, x, y, Width, Height, ContainerGadgetFlags)
        EndIf
     
        CloseGadgetList()
     
        ! var selector = $(spider_GadgetID(v_gadget).div).find('.dijitContentPane');
        ! var chart = new google.visualization.ChartWrapper( { chartType: v_charttype, containerId: selector[0].id } );
        ! selector.data("GoogleChart", chart);
        ! chart.draw();
     
        ProcedureReturn Gadget
     
      EndProcedure
     
      Procedure SetChartGadgetAttribute(Gadget, Attribute, Value)
     
        ! var selector = $(spider_GadgetID(v_gadget).div).find('.dijitContentPane');
        ! if (!selector) return;
        ! var chart = selector.data("GoogleChart");
     
        Select Attribute
          Case #ChartGadgetData
            ! chart.setDataTable(v_value);
          Case #ChartGadgetOptions
            ! chart.setOptions($.extend(v_value, chart.getOptions()));
          Case #ChartGadgetQuery
            ! chart.setQuery(v_value);
        EndSelect
     
        ! chart.draw();
     
      EndProcedure
     
      Procedure GetChartGadgetAttribute(Gadget, Attribute)
     
        ! var selector = $(spider_GadgetID(v_gadget).div).find('.dijitContentPane');
        ! if (!selector) return;
        ! var chart = selector.data("GoogleChart");
     
        Select Attribute
          Case #ChartGadgetData
            ! return chart.getDataTable();
          Case #ChartGadgetOptions
            ! return chart.getOptions();
          Case #ChartGadgetQuery
            ! return chart.getQuery();
        EndSelect
     
        ! chart.draw();
     
      EndProcedure
     
      Procedure Refresh(Gadget)
     
        ! var selector = $(spider_GadgetID(v_gadget).div).find('.dijitContentPane');
        ! if (!selector) return;
        ! var chart = selector.data("GoogleChart");
        ! chart.draw();
     
      EndProcedure
     
      Procedure Init(Callback)
     
        ! return $.ajax({ url:'https://www.gstatic.com/charts/loader.js', dataType:'script', beforeSend:function(jqxhr, settings) { jqxhr.url = settings.url; } })
        ! .done(function(data, status, jqxhr) {
        !   google.charts.load('current');
        !   google.charts.setOnLoadCallback(v_callback);
        ! })
        ! .fail(function(jqxhr, status, errorThrown) {
        Debug "GoogleChart::Init() failed"
        ! });
     
      EndProcedure
     
    EndModule
    Et voici un exemple d'utilisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    EnableExplicit
     
    XIncludeFile "GoogleChartGadget.sbi"
     
    Enumeration ; Windows
      #PieChartWindow
      #LineChartWindow
      #GaugeWindow
      #GeoChartWindow
    EndEnumeration
     
    Enumeration ; Gadgets
      #PieChart
      #LineChart
      #Gauge
      #GeoChart
    EndEnumeration
     
    Enumeration ; Misc
      #GaugeWindowTimer
    EndEnumeration
     
    Procedure WindowSizeEvent()
     
      Select EventWindow()
     
        Case #PieChartWindow
          ResizeGadget(#PieChart, #PB_Ignore, #PB_Ignore, WindowWidth(#PieChartWindow), WindowHeight(#PieChartWindow))
          GoogleChart::Refresh(#PieChart)
     
        Case #LineChartWindow
          ResizeGadget(#LineChart, #PB_Ignore, #PB_Ignore, WindowWidth(#LineChartWindow), WindowHeight(#LineChartWindow))
          GoogleChart::Refresh(#LineChart)
     
        Case #GaugeWindow
          ResizeGadget(#Gauge, #PB_Ignore, #PB_Ignore, WindowWidth(#GaugeWindow), WindowHeight(#GaugeWindow))
          GoogleChart::Refresh(#Gauge)
     
        Case #GeoChartWindow
          ResizeGadget(#GeoChart, #PB_Ignore, #PB_Ignore, WindowWidth(#GeoChartWindow), WindowHeight(#GeoChartWindow))
          GoogleChart::Refresh(#GeoChart)
     
        Default
     
          Debug "?"
     
      EndSelect
     
    EndProcedure
     
    ; PieChart-Example
     
    Procedure DrawPieChartExample()
     
      ; ------------------------------------
      ; PieChart
      ; https://google-developers.appspot.com/chart/interactive/docs/gallery/piechart
      ; ------------------------------------
     
      OpenWindow(#PieChartWindow, 10, 10, 400, 300, "PieChart", #PB_Window_SizeGadget)
     
      BindEvent(#PB_Event_SizeWindow, @WindowSizeEvent(), #PieChartWindow)
     
      GoogleChart::Gadget(#PieChart, 0, 0, WindowWidth(#PieChartWindow), WindowHeight(#PieChartWindow), GoogleChart::#ChartTypePie, GoogleChart::#PB_Border)
     
      ; Set Options
     
      Protected ChartOptions
     
      ! v_chartoptions = { 'title' : 'How Much Pizza I Ate Last Night' };
     
      GoogleChart::SetChartGadgetAttribute(#PieChart, GoogleChart::#ChartGadgetOptions, ChartOptions)
     
      ; Set Data
     
      Protected ChartData
     
      ! v_chartdata = new google.visualization.DataTable();
      ! v_chartdata.addColumn('string', 'Topping');
      ! v_chartdata.addColumn('number', 'Slices');
      ! v_chartdata.addRows([
      !   ['Mushrooms', 3],
      !   ['Onions', 1],
      !   ['Olives', 1],
      !   ['Zucchini', 1],
      !   ['Pepperoni', 2]
      ! ]);
     
      GoogleChart::SetChartGadgetAttribute(#PieChart, GoogleChart::#ChartGadgetData, ChartData)
     
    EndProcedure
     
    ; LineChart-Example
     
    Procedure DrawLineChartExample()
     
      ; ------------------------------------
      ; LineChart
      ; https://google-developers.appspot.com/chart/interactive/docs/gallery/linechart
      ; ------------------------------------
     
      OpenWindow(#LineChartWindow, 420, 320, 1000, 300, "LineChart", #PB_Window_SizeGadget)
     
      BindEvent(#PB_Event_SizeWindow, @WindowSizeEvent(), #LineChartWindow)
     
      GoogleChart::Gadget(#LineChart, 0, 0, WindowWidth(#LineChartWindow), WindowHeight(#LineChartWindow), GoogleChart::#ChartTypeLine, GoogleChart::#PB_Border)
     
      ; Set Options
     
      Protected ChartOptions
     
      ! v_chartoptions = {
      !    hAxis: { title: 'Time' },
      !      vAxis: { title: 'Popularity' }
      !   };
     
      GoogleChart::SetChartGadgetAttribute(#LineChart, GoogleChart::#ChartGadgetOptions, ChartOptions)
     
      ; Set Data
     
      Protected ChartData
     
      ! v_chartdata = new google.visualization.DataTable();
     
      ! v_chartdata.addColumn('number', 'X');
      ! v_chartdata.addColumn('number', 'Dogs');
     
      ! v_chartdata.addRows([
      !   [ 0,  0], [ 1, 10], [ 2, 23], [ 3, 17], [ 4, 18], [ 5,  9],
      !   [ 6, 11], [ 7, 27], [ 8, 33], [ 9, 40], [10, 32], [11, 35],
      !   [12, 30], [13, 40], [14, 42], [15, 47], [16, 44], [17, 48],
      !   [18, 52], [19, 54], [20, 42], [21, 55], [22, 56], [23, 57],
      !   [24, 60], [25, 50], [26, 52], [27, 51], [28, 49], [29, 53],
      !   [30, 55], [31, 60], [32, 61], [33, 59], [34, 62], [35, 65],
      !   [36, 62], [37, 58], [38, 55], [39, 61], [40, 64], [41, 65],
      !   [42, 63], [43, 66], [44, 67], [45, 69], [46, 69], [47, 70],
      !   [48, 72], [49, 68], [50, 66], [51, 65], [52, 67], [53, 70],
      !   [54, 71], [55, 72], [56, 73], [57, 75], [58, 70], [59, 68],
      !   [60, 64], [61, 60], [62, 65], [63, 67], [64, 68], [65, 69],
      !   [66, 70], [67, 72], [68, 75], [69, 80]
      ! ]);
     
      GoogleChart::SetChartGadgetAttribute(#LineChart, GoogleChart::#ChartGadgetData, ChartData)
     
    EndProcedure
     
    ; Gauge-Example
     
    Procedure GaugeWindowTimerEvent()
     
      Protected ChartData
     
      Protected RandomMemoryValue  = Random(100, 0)
      Protected RandomCpuValue     = Random(100, 0)
      Protected RandomNetworkValue = Random(100, 0)
     
      ! v_chartdata = google.visualization.arrayToDataTable([
      !   ['Label', 'Value'],
      !   ['Memory',  v_randommemoryvalue],
      !   ['CPU',     v_randomcpuvalue],
      !   ['Network', v_randomnetworkvalue]
      ! ]);
     
      GoogleChart::SetChartGadgetAttribute(#Gauge, GoogleChart::#ChartGadgetData, ChartData)
     
    EndProcedure
     
    Procedure DrawGaugeExample()
     
      ; ------------------------------------
      ; Gauge
      ; https://google-developers.appspot.com/chart/interactive/docs/gallery/gauge
      ; ------------------------------------
     
      OpenWindow(#GaugeWindow, 520, 40, 590, 230, "Gauge", #PB_Window_SizeGadget)
     
      BindEvent(#PB_Event_SizeWindow, @WindowSizeEvent(), #GaugeWindow)
     
      GoogleChart::Gadget(#Gauge, 0, 0, WindowWidth(#GaugeWindow), WindowHeight(#GaugeWindow), GoogleChart::#ChartTypeGauge, GoogleChart::#PB_Border)
     
      ; Set Options
     
      Protected ChartOptions
     
      ! v_chartoptions = {
      !    redFrom: 90,
      !    redTo: 100,
      !    yellowFrom: 75,
      !    yellowTo: 90,
      !    minorTicks: 10
      !   };
     
      GoogleChart::SetChartGadgetAttribute(#Gauge, GoogleChart::#ChartGadgetOptions, ChartOptions)
     
      ; Set Data
     
      Protected ChartData
     
      ! v_chartdata = google.visualization.arrayToDataTable([
      !   ['Label', 'Value'],
      !   ['Memory', 80],
      !   ['CPU', 55],
      !   ['Network', 68]
      ! ]);
     
      GoogleChart::SetChartGadgetAttribute(#Gauge, GoogleChart::#ChartGadgetData, ChartData)
     
      ; Set a timer for updating Gauge-Values
     
      AddWindowTimer(#GaugeWindow, #GaugeWindowTimer, 500)
      BindEvent(#PB_Event_Timer, @GaugeWindowTimerEvent(), #GaugeWindow, #GaugeWindowTimer)
     
    EndProcedure
     
    ; GeoChart-Example
     
    Procedure DrawGeoChartExample()
     
      ; ------------------------------------
      ; GeoChart
      ; https://google-developers.appspot.com/chart/interactive/docs/gallery/geochart
      ; ------------------------------------
     
      OpenWindow(#GeoChartWindow, 50, 400, 650, 450, "GeoChart", #PB_Window_SizeGadget)
     
      BindEvent(#PB_Event_SizeWindow, @WindowSizeEvent(), #GeoChartWindow)
     
      GoogleChart::Gadget(#GeoChart, 0, 0, WindowWidth(#GeoChartWindow), WindowHeight(#GeoChartWindow), GoogleChart::#ChartTypeGeo, GoogleChart::#PB_Border)
     
      ; Set Options
     
      Protected ChartOptions
     
      ! v_chartoptions = {};
     
      GoogleChart::SetChartGadgetAttribute(#GeoChart, GoogleChart::#ChartGadgetOptions, ChartOptions)
     
      ; Set Data
     
      Protected ChartData
     
      ! v_chartdata = google.visualization.arrayToDataTable([
      !   ['Country', 'Popularity'],
      !   ['Germany', 200],
      !   ['United States', 300],
      !   ['Brazil', 400],
      !   ['Canada', 500],
      !   ['France', 600],
      !   ['RU', 700]
      ! ]);
      !
     
      GoogleChart::SetChartGadgetAttribute(#GeoChart, GoogleChart::#ChartGadgetData, ChartData)
     
    EndProcedure
     
    ; Main
     
    Procedure Main()
     
      DrawPieChartExample()
      DrawLineChartExample()
      DrawGaugeExample()
      DrawGeoChartExample()
     
    EndProcedure
     
    GoogleChart::Init(@Main())
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

Discussions similaires

  1. Problème de jeux avec MSN
    Par Eloelo dans le forum Messagerie instantanée
    Réponses: 2
    Dernier message: 25/04/2007, 16h09
  2. [LIVRE] [CD] 10 jeux avec flash MX
    Par Invité(e) dans le forum Flash
    Réponses: 1
    Dernier message: 01/07/2006, 21h20
  3. Quelques questions pour débuter avec FOP
    Par lr dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 08/04/2006, 14h09
  4. quelques problemes de debutant avec count
    Par shirya dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/09/2005, 23h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo