realbasic-nug.it
[Top] [All Lists]

Budino

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Budino
From: Lucio Liberi <lucioing at tin dot it>
Date: Fri, 8 Jul 2005 19:44:16 +0200
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
Qualche giorno fa, ho trovato una rivista del 1983 dove si faceva la prova su strada dello Spectrum Sinclair... Voi direte: 'chi se ne frega'
Giusto! Infatti anche io ero dello stesso avviso...
Poi il demonio ci ha messo lo zampino. In un riquadro facevano vedere le 'strabilianti' capacita' grafiche della macchina...
Un programmino Basic con tanto di listato che realizzava un 'budino'.
La didascalia riportava il tempo di esecuzione: 3 ore!!!
A questo punto voi cosa avreste fatto? Mbe' pure io!!!

Con fare da super uomo, ho preso il mio BP G4, e vai con RealBasic...
Questa e' la prima stesura, dicioamo copiata pari-pari. Ho preso un canvas della stessa risoluzione dello Spectrum 256 x 192 e in un bottone ho scritto:

  dim i, j, k, r, x, y, v, z As integer

  Canvas1.Graphics.ClearRect 1,1, 254,190

  r=Slider1.Value
  StaticText1.text=str(r)


  for x=-126 to 126
    j=0
    k=1
    v=r+Floor(Sqrt((15876)-x*x)/r)
    StaticText5.text="v:"+str(v)

    for y=v downto -v step r
      z=Floor(80+Fx(sqrt(x*x+y*y))-0.707*y)
      if z<j Then
        GoTo Label   <-------------------
        'else
      end if
      j=z
      Canvas1.Graphics.Pixel(x+127, z)=RGB(0,0,0)
      k=0
      'end if
      Label:
    next y
  next x


Pero' il fatto di usare il goto... Dio che orrore... Vediamo se si puo' fare di meglio... E allora il drago (io) si e' messo in azione.
Con scatto felino la mia fulgida mente ha partorito il seguente listato:

  dim i, j, k, r, x, y, v, z As integer

  Canvas1.Graphics.ClearRect 1,1, 254,190

  r=Slider1.Value
  StaticText1.text=str(r)


  for x=-126 to 126
    j=0
    k=1
    v=r+Floor(Sqrt((15876)-x*x)/r)
    StaticText5.text="v:"+str(v)

    for y=v downto -v step r
      z=Floor(80+Fx(sqrt(x*x+y*y))-0.707*y)
      if z<j Then
        exit            <-----------------------------
      else
        j=z
        Canvas1.Graphics.Pixel(x+127, z)=RGB(0,0,0)
        k=0
      end if
    next y
  next x

Bello ed elegante, non c'e' che dire... Ma a che cazzo serve quel K?...Non lo so. Io ce lo metto... hai visto mai che si offende... Sembra uguale, vero, ma non disegnano la stessa figura. La mia paura e' che lo statement EXIT non funzioni a dovere. Secondo me dovrebbe farmi uscire dal If then else... insomma l'equivalente del goto...
Ma vi garantisco che generano due figure diverse.

Adesso, siccome devo lavorare ed ho gia' speso il tempo che mi ero accantonato per fare sesso, vi chiedo aiuto, anche perche' se non lo faccio (sesso) la mia fanciulla mi 'bobbizza' (ricordate Mr Bobbit?)...

Scusate se faccio il cretino... Ma come si fa ad essere seri su stupidaggini del genere?

Ciao e grazie


lucio

<Prev in Thread] Current Thread [Next in Thread>