Qu'est-ce qu'un PurePunch ?
C'est un concours dont le but est de coder avec PureBasic une démo, un jeu ou une application, dans une limite de lignes de code (les premiers concours étaient limités à 10 lignes de code).

Je me suis dit que ça pouvait être intéressant d'essayer d'adapter certains PurePunch avec SpiderBasic, et voici donc mon premier essai :

http://comtois.developpez.com/spiderbasic/dots.html

Démo issue du PurePunch No2

Et voici le code SpiderBasic

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
;*****************************************************************************
;*
;* Name   : Dots
;* Author : Petr Vavrin (peterb)
;* Date   : 15.06.09
;* Notes  :
;*
;* Adaptation SpiderBasic Comtois , le 28/02/16
;*****************************************************************************
Macro SinCos(a,b)
  (Sin(a)+Cos(b))
EndMacro
 
#p=#PI/180
#n=0.001
 
Global Dim x(k)
Global Dim y(k)
Global Dim v.f(k)
Global Dim w(k)
Global Size=400
InitSprite()
OpenWindow(0,0,0,Size,Size,"",$C80001)
 
 
OpenWindowedScreen(WindowID(0),0,0,Size,Size,1,0,0)
CreateSprite(0,Size,Size)
 
Nb=1
l=30
While l
  m=0
  While m<360
    LoadSprite(Nb, "Data/78-32x32x32.png",#PB_Sprite_AlphaBlending)
    nb + 1
    m+60
  Wend
  l-1
Wend
 
Procedure RenderFrame()
  Static.f a,b,c,e,f,g,i,s=20
  Static h=99,k=99
 
  If h=k
    e=Random(k)
    f=Random(k)
    g=Random(k)
    i.f=s-Random(50)
    h=0
  EndIf
  h+1
  a.f+#n*e
  b.f+#n*f
  c.f+#n*g
  s-i/k
  x(0)=SinCos(a,b)*30+Size/2
  y(0)=SinCos(b,a)*30+Size/2
  v(0)=c
  w(0)=s
  l=30
  nb=1
  While l
    n=l-1
    x(l)=x(n)
    y(l)=y(n)
    v(l)=v(n)
    w(l)=w(n)
    m=0
    While m<360
      t.f=m*#p+v(l)
      u.f=#p-v
      ZoomSprite(Nb, 25, 25)
      DisplayTransparentSprite(Nb,x(l)+SinCos(t,u)*w(l),y(l)+SinCos(u,t)*w(l),255-(l*8))
      Nb + 1
      m+60
    Wend
    l-1
  Wend
 
  FlipBuffers() ; continue the rendering
EndProcedure
 
FlipBuffers() ; start the rendering
BindEvent(#PB_Event_RenderFrame, @RenderFrame())