Jump to content
Nokioteca Forum

[mshell] Far Rotolare Il Barile


lento
 Share

Recommended Posts

Ora che vedo la logica che c'e' alla base del codice inizio a sentirmi male... :thumbs: ( senza offesa eh!? )

Ad occhio e croce direi che sei partito dal codice ed hai cercato di rattoppare qua e la per riuscire a far funzionare il tutto...

In realta', per la realizzazione dei programmi bisognerebbe fare il processo inverso, partire da uno schema logico a livello macroscopico per poi arrivare ad ottenere il codice sorgente.

P.S.

probabilmente mi consideri eccessivamente critico, ma credimi, sto gia' cercando di contenermi. :mumble:

No no, non ti considero affatto eccessivamente critico, la critica è necessaria.

In effetti hai ragione ho fatto di tutto per rattoppare, infatti non riesco a capire il perche facendo diminuire il vb aumenta la velocità del barile.....però funziona.

Ora mi stò chiedendo, con il mio sorgente, secondo Voi, c'è la possibilità di far scendere più barili oppure mi devo accontentare di un solo barile ???? Ci ho provato ma senza riuscirci !!!!!!

Link to comment
Share on other sites

  • Replies 114
  • Created
  • Last Reply

Top Posters In This Topic

Nota che il controllo

if (b<284) then

e' sempre verificato, perche' in quei punti del codice b assumera' sempre un valore < 284.

quindi si puo' eliminare il check...

Se si sale la scala solo fino a meta e poi ci si sposta a dx o sx, che succede?!? :)

Edited by Il.Socio
Link to comment
Share on other sites

Recchime! certo che a incasinarti sei veramente bravo! (anche Alter concorda).

Sai spesso faccio la stessa cosa, quando non riesco a inquadrare bene come risolvere la faccenda comincio a scrivere il programma finché vado in palla e non riesco più ad andare avanti!.

Però finito di giocare nel caos del programma viene il momento di mettere via i giocattoli, e per metterli via nell'armadio devo fare ordine.

Puoi benissimo partire dal tuo programma e cercare di fare ordine, faremo una specie di "bottom-up".

Ti dirò che fatico a seguire il tuo programma e capire cosa fanno le varie parti, devo cercare di semplificare e crearmi uno schema!.

Come ti avevo detto "Al diavolo le funzioni!" ma se vuoi venircene fuori è l'unico sistema.

Non pensare che le funzioni i moduli, la programmazione ad oggetti siano la creazione di narcisiti.

Ti garantiscono che la loro creazione è una necessità per poter gestire programmi sempre più complessi.

Immagina di dimenticarti il tuo programmino per una quindicina di giorni e poi riprendilo in mano.

Ti garantisco "sarai incapace di capire cosa è. Vai a vedere ad inizio discussione

/*============ MAIN ===========*/
for a=0 to 1 do
 scendi(piano5,piano4,adestra);
 trasla(asinistra,piano4);
 scendi(piano4,piano3,asinistra);
 trasla(adestra,piano3);
 scendi(piano3,piano2,adestra);
 trasla(asinistra,piano2);
 scendi(piano2,piano1,asinistra);
 trasla(adestra,piano1);
 scendi(piano1,piano0,adestra);
 trasla(asinistra,piano0);
end
/*===========END MAIN==========*/

I programmi per quanto possibile si devono spiegare da soli!.

Dal caos alla ragione! prossimamente su questi schermi.

1) Scrivi sempre le variabili globali ad inizio programma e commentale!

2) Identazione come ti ha chiesto 'Il.Socio' identa il programma ti aiuta a capire cosa contengono le istruzioni di ciclo le IF..TEHN..END e le funzioni.

I programmi te li metto per esteso così son sicuro che li vedi bene.

use graph as g,ui;

g.size(240,320);
g.full(true);

sfondo=g.icon("e:\\Images\\donkeysfondo.png");
mariod=g.icon("e:\\Images\\mario1.png",0x000000);
marios=g.icon("e:\\Images\\mario2.png",0x000000);
bariled=g.icon("e:\\Images\\barilep1.png");
bariles=g.icon("e:\\Images\\barilep1.png");
life=g.icon("e:\\Images\\mlife1.png");
a=30;  // coordinate Mario lato corto 0-240
b=284; // coordinate Mario lato lungo 0-320
y=0;   // coordinate barile lato lungo 0-320
x=0;  // coordinate barile lato corto 0-240
score=0;  // <---completa tu i commenti
lives=3; // vite disponibili a Mario
vb=30; // velocita barile
p=0;   //
piano=0;
dir=0;
do
for y=97 to 292 do // ripeti finche il barile non è in fondo
 if (y=169) or (y=251) then // se sono i piani spostati a sinistra
  for x=23 to 214 do
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();
 sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then dir=1; a=a+10; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88) and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;

if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end;
g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();
g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
  end;
 end; 

 if (y=128) or (y=209) or (y=292) then // se sono i piani spostati a destra
  for x=214 to 23 by-1 do
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then a=a+10; dir=1; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88)and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;

if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end; 

g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();

g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
  end;
 end;
end;

until lives=0;

3) Raggruppare le istruzioni in blocchi a volte aiuta molto di più di un uso esagerato dell'identazione.

4) Ora cerca di trovare questi blocchi di programma che puoi isolare.

use graph as g,ui;

g.size(240,320);
g.full(true);

sfondo=g.icon("e:\\Images\\donkeysfondo.png");
mariod=g.icon("e:\\Images\\mario1.png",0x000000);
marios=g.icon("e:\\Images\\mario2.png",0x000000);
bariled=g.icon("e:\\Images\\barilep1.png");
bariles=g.icon("e:\\Images\\barilep1.png");
life=g.icon("e:\\Images\\mlife1.png");
a=30;  // coordinate Mario lato corto 0-240
b=284; // coordinate Mario lato lungo 0-320
y=0;   // coordinate barile lato lungo 0-320
x=0;   // coordinate barile lato corto 0-240
score=0;  //
lives=3; // vite disponibili a Mario
vb=30; // velocita barile
p=0;   //
piano=0;
dir=0;

do
for y=97 to 292 do // ripeti finche il barile non è in fondo
 if (y=169) or (y=251) then // se sono i piani spostati a sinistra
  //---------------------primo blocco------------------
  for x=23 to 214 do 
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();
 sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then dir=1; a=a+10; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88) and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;

if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end;
g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();
g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
  end; // for
 //---------------------------end primo blocco-------------------------
 end;  // if

 if (y=128) or (y=209) or (y=292) then // se sono i piani spostati a destra
  //--------------------------secondo blocco---------------------------
  for x=214 to 23 by-1 do
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then a=a+10; dir=1; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88)and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;
if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end; 

g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();

g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
  end; // for
  // ------------------------end secondo blocco-----------------------
 end; // if
end; // for ciclo barile

until lives=0;

5) crea delle funzioni che contengano questi blocchi

Se fai fatica a capirle usa solo variabili globali (nel programma lascio a tè il compito di metterci il puntino davanti)

Ti ricordi come si fà a passare una variabile globale alla funzione?.

Guarda che caso! qui ci sono due blocchi differenziati solo da tipo di piano a cui ti riferisci.

i piano più spostati a destra e quelli più spostati a sinistra.

trasformali in due funzioni!.

use graph as g,ui;

g.size(240,320);
g.full(true);

sfondo=g.icon("e:\\Images\\donkeysfondo.png");
mariod=g.icon("e:\\Images\\mario1.png",0x000000);
marios=g.icon("e:\\Images\\mario2.png",0x000000);
bariled=g.icon("e:\\Images\\barilep1.png");
bariles=g.icon("e:\\Images\\barilep1.png");
life=g.icon("e:\\Images\\mlife1.png");
a=30;  // coordinate Mario lato corto 0-240
b=284; // coordinate Mario lato lungo 0-320
y=0;   // coordinate barile lato lungo 0-320
x=0;   // coordinate barile lato corto 0-240
score=0;  //
lives=3; // vite disponibili a Mario
vb=30; // velocita barile
p=0;   //

/*-------------------------------------
  >>>>>>>>>>FUNZIONI<<<<<<<<<<<<<<<
 -----------------------------------*/
/*==================
 PRIMA FUNZIONE
 ==================*/
function GiocoAsinistra()
  //---------------------primo blocco------------------
  for x=23 to 214 do 
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();
 sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then dir=1; a=a+10; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88) and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;

if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end;
g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();
g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
  end; // for
 //---------------------------end primo blocco------------------------- 
end; // funzione

/*==================
 SECONDA FUNZIONE
 ==================*/
function GiocoAdestra()
  //--------------------------secondo blocco---------------------------
  for x=214 to 23 by-1 do
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then a=a+10; dir=1; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88)and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;
if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end; 

g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();

g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
  end; // for
  // ------------------------end secondo blocco-----------------------
end;
/*-------------------------------------
  >>>>>>>>>>END FUNZIONI<<<<<<<<<<<<
 -------------------------------------*/


//=====================MAIN=========================
do
for y=97 to 292 do // ripeti finche il barile non è in fondo
  if (y=169) or (y=251) then GiocoAsinistra(); end; // se sono i piani spostati a sinistra
  if (y=128) or (y=209) or (y=292) then GiocoAdestra(); end; // se sono i piani spostati a destra
end; // for ciclo barile
until lives=0; 
//===================END MAIN ======================

6) ora vedi se ci sono blocchi (gruppi di istruzioni) che si ripetono più volte nel programma e in modo

sempre identico o quasi.

Cosa vedono i miei occhi!!!! due programmi uguali!!!!!! nelle due funzioni appena create!!!!.

function GiocoAsinistra()
  for x=23 to 214 do 
  // ----------------------->>>>>>>UGUALE!!! a GiocoAdestra
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();
 sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then dir=1; a=a+10; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88) and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;

if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end;
g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();
g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
//--------------------------------->>>>>>>>>>>>>>
  end; // for
end; // funzione

function GiocoAdestra()
  for x=214 to 23 by-1 do
  //-------------------------------->>>>>>>>>>>>>UGULAE! a GiocoAsinistra
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then a=a+10; dir=1; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88)and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;
if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end; 

g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();

g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
//--------------------------------->>>>>>>>>>>>>>
  end; // for
end; // funzione

Trasformala subito in un unica funzione accorciando e semplificando la comprensione del programma.

use graph as g,ui;

g.size(240,320);
g.full(true);

sfondo=g.icon("e:\\Images\\donkeysfondo.png");
mariod=g.icon("e:\\Images\\mario1.png",0x000000);
marios=g.icon("e:\\Images\\mario2.png",0x000000);
bariled=g.icon("e:\\Images\\barilep1.png");
bariles=g.icon("e:\\Images\\barilep1.png");
life=g.icon("e:\\Images\\mlife1.png");
a=30;  // coordinate Mario lato corto 0-240
b=284; // coordinate Mario lato lungo 0-320
y=0;   // coordinate barile lato lungo 0-320
x=0;   // coordinate barile lato corto 0-240
score=0;  //
lives=3; // vite disponibili a Mario
vb=30; // velocita barile
p=0;   //
piano=0;
dir=0;

/*-------------------------------------
  >>>>>>>>>>FUNZIONI<<<<<<<<<<<<<<<
 -----------------------------------*/
/*==================
 PRIMA FUNZIONE
 ==================*/
function Gioco()
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then
 a=a+10;dir=1;
 b=b-10;
 g.put(a,b,mariod);
 g.show();
 sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end;
end;

if Key=49 then
 a=a-10;dir=-1;
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end;
end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then dir=1; a=a+10; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88) and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;

if b=54 then
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end;
g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();
g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
end; // funzione

/*-------------------------------------
  >>>>>>>>>>END FUNZIONI<<<<<<<<<<<<
 -------------------------------------*/


//=====================MAIN=========================
do
// ripeti finche il barile non è in fondo
for y=97 to 292 do

  // se sono i piani spostati a sinistra
  if (y=169) or (y=251) then
for x=23 to 214 do Gioco();  end;
  end;

  // se sono i piani spostati a destra
  if (y=128) or (y=209) or (y=292) then
 for x=214 to 23 by-1 do Gioco(); end;
  end;

end; // ciclo barile
until lives=0; 
//===================END MAIN ======================

7) continua a semplificare finché ti diventa facile seguire la logica del gioco.

Come vedi dentro la funzione Gioco() ci sono due blocchi identici trasformali in un unica funzione

	if Key=51 then
 a=a+10;dir=1; //<-------------nuova funzione
 b=b-10;
 g.put(a,b,mariod);
 g.show();
 sleep(100);
 if (b<284) then
  a=a+10;
  b=b+10;
  g.put(a,b,mariod);
  g.show();
 end; //<--------------------------
end;

if Key=49 then
 a=a-10;dir=-1; //<------------nuova funzione
 b=b-10;
 g.put(a,b,marios);
 g.show();
 sleep(100);
 if (b<284) then
  a=a-10;
  b=b+10;
  g.put(a,b,marios);
  g.show();
 end; //<----------------------
end;

==========================DIVENTA COSI=============================
function MarioSalta(ia)
// ia= incremeto della globale ".a" ricorda che ia non è globale
 .a=.a+ia;.dir=1;
 .b=.b+ia;
 g.put(.a,.b,.mariod);
 g.show();
 sleep(100);
 if (.b<284) then
  .a=.a+ia;
  .b=.b+10;
  g.put(.a,.b,.mariod);
  g.show();
 end;
end;

if Key=51 then MarioSalta( 10); end;
if Key=49 then MarioSalta(-10); end;
====================================================================

Continua così finché ti diventa facile seguire il tuo programma.

use graph as g,ui;

g.size(240,320);
g.full(true);

sfondo=g.icon("e:\\Images\\donkeysfondo.png");
mariod=g.icon("e:\\Images\\mario1.png",0x000000);
marios=g.icon("e:\\Images\\mario2.png",0x000000);
bariled=g.icon("e:\\Images\\barilep1.png");
bariles=g.icon("e:\\Images\\barilep1.png");
life=g.icon("e:\\Images\\mlife1.png");
a=30;  // coordinate Mario lato corto 0-240
b=284; // coordinate Mario lato lungo 0-320
y=0;   // coordinate barile lato lungo 0-320
x=0;   // coordinate barile lato corto 0-240
score=0;  //
lives=3; // vite disponibili a Mario
vb=30; // velocita barile
p=0;   //
piano=0;
dir=0;

/*-------------------------------------
  >>>>>>>>>>FUNZIONI<<<<<<<<<<<<<<<
 -----------------------------------*/
/*==================
  FUNZIONE Mario Salta
 ==================*/
function MarioSalta(ia)
// ia= incremeto della globale ".a" ricorda che ia non è globale
.a=.a+ia;.dir=1;
.b=.b+ia;
g.put(.a,.b,.mariod);
g.show();
sleep(100);
if (.b<284) then
 .a=.a+ia;
 .b=.b+10;
 g.put(.a,.b,.mariod);
 g.show();
end;
end;

/*==================
  FUNZIONE Gioco
 ==================*/
function Gioco()
ui.keys(false,false);
Key=ui.cmd(vb);

if Key=51 then MarioSalta( 10); end;
if Key=49 then MarioSalta(-10); end;

if Key=52 then a=a-10; dir=-1; end;
if Key=54 then dir=1; a=a+10; end;
if Key=50 and (a=180) and (b>242) then b=b-2; piano=0; end;
if Key=50 and (a=60) and (b>203) then b=b-2; piano=1; end;
if Key=50 and (a=170) and (b>160) then b=b-2; piano=2; end;
if Key=50 and (a=70) and (b>120) then b=b-2; piano=3; end;
if Key=50 and (a=180) and (b>88) and(piano>1) then b=b-2; end;
if Key=50 and (a=140) and (b>55) then b=b-2; piano=5; end;

if b=54 then  // arrivato dalla bella!.
 p=p+10;vb=vb-2;
 g.text(100,170,"PIU' VELOCE......");
 g.show();sleep(900);
 a=30;b=284;
end;

g.put(0,0,sfondo);
g.put(x,y,bariled);
if dir=-1 then g.put(a,b,marios); else g.put(a,b,mariod); end;
for z=1 to lives do g.put(z*15+165,25,life); end;
g.show();
g.pen(0xff0000); g.text(160,15,"score");g.text(205,15,p);
g.show();
end; // funzione

/*-------------------------------------
  >>>>>>>>>>END FUNZIONI<<<<<<<<<<<<
 -------------------------------------*/


//=====================MAIN=========================
do
// ripeti finche il barile non è in fondo
for y=97 to 292 do

  // se sono i piani spostati a sinistra
  if (y=169) or (y=251) then
for x=23 to 214 do Gioco();  end;
  end;

  // se sono i piani spostati a destra
  if (y=128) or (y=209) or (y=292) then
 for x=214 to 23 by-1 do Gioco(); end;
  end;

end; // ciclo barile
until lives=0; 
//===================END MAIN ======================

Magari alla fine ti accorgerai che lo devi riscrivere tutto! per gestire più barili.

(guarda la prima versione che ti ho scritto per far rotolare un barile e quella dove rotolano più barili) è tutta un altra storia.

Quando le idee sono chiare e avrai capito cosa fare di sicuro applicherai la soluzione: top-down (Dall'alto verso il basso) nel scrivere il tuo programma.

In questa ricerca del funzionamento vedrai anche buona parte degli errori fatti, e potrai porre rimedio ai difetti del tuo gioco.

(compreso il fatto che Mario scappa fuori dallo schermo!, o che può salire al piano superiore anche dove non ci sono scale!)

Un ultima cosa: mi pare che gli Array (Matrici) non li conosci molto, o sbaglio?. Devi deciderti a leggere un libro sulla programmazione!!!!!!!!.

Comunque continua a fare e divertiti!! "Adattarsi, Improvvisare, Raggiungere lo scopo".

Lascio a tè il compito di perfezionare il tuo gioco.

Edited by lento
Link to comment
Share on other sites

Mi chiedi se mi può interessare ??????????????????

MA CERTOOOOOOOOO !!!!!!! scusa per l'entusiasmo ad alta voce, ma io sbavo per queste cose.

Attendo che Alter pubblichi il tutto.

Guarda che questa è l'ultima aggiunta che faccio. Qui. Al massimo qualche risposta veloce in futuro.

Sai Sto tentando con JaveME e il tempo è poco (Bella scusa!).

Ha ragione Alter in realtà quando smetto di utilizzare un linguaggio, in breve tempo dimentico le sue funzioni e il suo uso e rischierei di far solo danni.

Ma può anche darsi che torni ad utilizzarlo!. Comunque eccoti dei sorgenti con la pallina rimbalzante.

ti ricordi quanto scritto sopra?.

----------------------------------------------------------------------------------------------

Qui si riscopre un altro arcano:

avete notato che le pareti A e B non fanno altro che invertire il valore della x?

e che le pareti C e D non fanno altro che invertire il valore della y?.

( Spunto per migliorare il programma in futuro.)

----------------------------------------------------------------------------------------------

Ebbene il programma che avevo allegato era studiato per permettere modifiche migliorative. Ci sono troppi if....then..... ecco un esempio ottimizzato.

// Palla rimbalzante V0.2 2009/05/08 Ore 13.23
use graph as g, ui;

x=4;
y=104;
iy=-2;
ix=2;

g.size(240,320);
g.full(true);
ui.keys(true);
g.bg(g.white);
g.clear();
g.pen(g.blue); g.brush(g.blue); g.circle(2,2,15);
g.show(); sleep(20); palla=g.screen(0,0,19,19);
g.clear();


do
 x=x+ix;  y=y+iy;
 if x<0 or x>305 then ix= -ix; end;
 if y<0 or y>225 then iy= -iy; end;

 g.put(y,x,palla);
 g.show(); sleep(5);
 tasto=ui.cmd(0);

until tasto=48;

(Ho volutamente eliminato gli utili commenti dal programma per far vedere come si è accorciato e semplificato rispetto al precedente.)

Come vedi cè solo un immagine di palla formata da un rettangolo un pò più grande (contorno di 2 pixel bianco) questo

svolge la funzione di cancellare la precedente immagine.

In oltre iy e ix sono gli incrementi da sommare a x e y e saranno pisitivi o negativi.ball1.txt

Continua a fare esperimenti su ciò che conosci.

In questo altro esempio la pallina ogni volta che colpisce una parete cambia colore, in oltre non utilizzo più immagini ma la disegno direttamenteball2.txt

Ed ecco quanto ha fatto Alter La pallina rimbalzante con la paletta.

Per spostare la paletta usa il joystik destra sinistra.ball4.txt

Ora quando la sbagli chiude il programma.

Prova in vece a far si che gestisca un punteggio con N. numeri di palline.

Dato che mShell con la grafica non è eccessivamente veloce (Almeno sul mio E71) per rendere il gioco emozionante potresti

far abbassare di 10 pixel il lato superiore ogni tot. pixel percorsi dalla pallina.

(Non come ha fatto Alter che si era fatto una paletta larga più di metà dello schermo!!.)

												   |
+----------------------------+					 v
|							|   +--------------------------+
|							|   |	 scende riducendo	 |
|			o			   |   |	 l'area di gioco!	 |
|							|   |						  |
|							|   |			 o			|
|							|   |						  |
|		 _____			  |   |	  ____				|
+----------------------------+   +--------------------------+

Ecco il sorgente da completare.ball4.txt

Edited by lento
Link to comment
Share on other sites

Bravo! mi complimento per il programma...

Ciao, ti ringrazio per i complimenti, per me è importante avere un apprezzamento per il mio lavoro, naturalmente mi rendoi conto che è come dire bravo ad un bambino di 7 anni che scrive bene il suo nome su di un foglio, comunque è sempre importante.

Per quanto riguarda Il.Socio, mi rendo conto che lui se critica lo fa naturalmente nel senso buono al fine di far crescere l'interesse alla programmazione, anche se poi non è che lui per questa discussione abbia scritto niente di valido, comunque.....

Link to comment
Share on other sites

Recchime! certo che a incasinarti sei veramente bravo! (anche Alter concorda).

Sai spesso faccio la stessa cosa, quando non riesco a inquadrare bene come risolvere la faccenda comincio a scrivere il programma finché vado in palla e non riesco più ad andare avanti!........................

Ciao lento, ciò che hai scritto in questo post è a dir poco....meraviglioso, sei veramente un grande.

Credimi che il modo in cui hai organizzato quanto ha scritto mi hai fatto capire (sinceramente) come si passa da delle righe di programma ad una funzione.

E' bellissimo ciò che hai scritto......forse riuscirò anche io a scrivere una funzione un giorno e ti garantisco che farò sempre riferimento a quanto tu hai scritto e sarà grazie a te se ci riuscirò

Grazie, grazie mille.

Il mio Alter ringrazia il tuo per il programma della pallina con la paletta.

Link to comment
Share on other sites

Mi rendoi conto che è come dire bravo ad un bambino di 7 anni che scrive bene il suo nome su di un foglio.

Per quanto riguarda Il.Socio......, anche se poi non è che lui per questa discussione abbia scritto niente di valido, comunque.....

No! non è un complimento per bambino di 7 anni, credimi...E' un sincero e vero complimento per il fatto che non hai mollato e il programma l'ai scritto!.

L'hai scritto nel miglior modo possibile con i mezzi che conosci. (Mi complimento ancora credimi).

Il.Socio deve gestire il forum, e secondo mè fa già tanto.

Semmai cè carenza di altri interlocutori che magari ci postino un 6 righe, una funzione, tipo pitagora(cateto1,cateto2,ipotenusa)

........(Nciò tempo!) è vero! questo è un bel problema!.

Come ti ho scritto sopra ho lo stesso problema! mShell e bellissimo ma come tanti linguaggi che ho imparato rischia di sparire appena Nokia aggiornerà i cellulari.

Sarebbe bello poter continuare con javaME e magari altri parteciperebbero più volentieri.

Link to comment
Share on other sites

Il mio Alter ringrazia il tuo per il programma della pallina con la paletta.

Visto che in questo programma ho evitato accuratamente l'uso di cose che non conosci.

Trasformalo in un gioco completo e in barba a tutti Postalo!.

Link to comment
Share on other sites

'6587gianluca'

Garda nel forum e cerca Tank Guerra tra cararmati.

Prima di mollare mShell mi sembrava doveroso darti almeno un sorgente completo.

Comunque se te la senti di passare a JavaME.....

Grazie "lento", l'ho sempre detto che tu ed il tuo Alter siete dei grandi.

Ora tra poco devo uscire, ma ti giuro che già non stò nella pelle....e non vedo l'ora di tornare oggi per caricare il sorgente sul cellulare. Addirittura ci hai messo i vari suoni.......

Grazie e buona domenica.......

dai.....gianluuu, non usciamo, ma che cosa dobbiamo fare fuori.......

stà zitto!!!!

Link to comment
Share on other sites

Facendo riferimento al mio sorgente sono riuscito a fare in modo che :

1) se mario non salta il barile viene decrementata una vita e mario riprende la sua posizione originale in fondo al palazzo;

2) se mario riesce saltare il barile il punteggio viene incrementato.

Appena ho finito posto nuovamente il sorgente.

Ciao.-

Edited by 6587gianluca
Link to comment
Share on other sites

Facendo riferimento al mio sorgente sono riuscito a fare in modo che :

1) se mario non salta il barile viene decrementata una vita e mario riprende la sua posizione originale in fondo al palazzo;

2) se mario riesce saltare il barile il punteggio viene incrementato.

Appena ho finito posto nuovamente il sorgente.

Ciao.-

Di seguito allego il sorgente, approposito, ho inserito anche qualche piccolo effetto sonoro.

Donkey_5_1.txt

Link to comment
Share on other sites

Di seguito allego il sorgente, approposito, ho inserito anche qualche piccolo effetto sonoro.

if Key=52 then
a=a-10;
dir=-1;audio.beep(580, 10);
end;

Forse qui potevi tentare di identare.... o è chiedere troppo?....in oltre se tieni premuto il tasto 4 continuativamente il programma và in tilt.

Leggiti cosa dice la "Miniguida per Iniziare" di 'masmil1988' http://www.nokioteca.net/home/forum/index....showtopic=38298

rispetto alla voce audio.beep().

mariod=g.icon("e:\\Images\\mario1.png",0x000000); mi spieghi che funzione ha ,0x000000 ?

Grazie.....

Edited by lento
Link to comment
Share on other sites

if Key=52 then
a=a-10;
dir=-1;audio.beep(580, 10);
end;

Forse qui potevi tentare di identare.... o è chiedere troppo?...............

mariod=g.icon("e:\\Images\\mario1.png",0x000000); mi spieghi che funzione ha ,0x000000 ?

Grazie.....

No, no, non è assolutamente troppo chiedere di indentare, hai ragione ma ho allegato velocemente il file che avevo modificato sul cellulare ed era tuto scritto in maniera lineare senza indentature.

Per ciò che mi chiedi in riferimento al significato di 0x000000, presumo che non serva a niente in questo giochino, quindi si può anche togliere. E' rimasto lì in quanto lo avevo usato precedentemente in una occasione in cui creai una specie di giochino con sfondo bianco, occasione in cui avevo un png da far muovere sullo schermo che aveva lo sfondo nero, quindi con quel 0x000000 lo sfondo del png veniva modificato ed acquisiva lo sfondo bianco.

Approposito ho cliccato sul link della guida ma mi viene in risposta che la pagina non esiste più, comunque dandovi un occhiata accedendovi da altra parte presumo che basta diminuire il secondo numero (il tempo) ed il gioco non si bloccherà più. Speriamo !!!!!

Link to comment
Share on other sites

Ooops! scusa cè stato un errore di trascrizione riprova ora a cliccare.

No il problema non è ridurre il tempo del suono leggi quel articolo poi ne parliamo.

Comunque ho notato dei nuovi miglioramenti nel tuo programma come la lettura continua della tastiera, il suono , il punteggio

che incrementa quando mario salta il barile.

Ma comunque il gioco che vuoi fare è ancora molto più complesso!.

Forse ti conviene continuare a svilupparlo ma dedica tempo anche agli altri esempi che trovi nel sito.

Imparando un pò quì imparando un pò là vedrai che ce la si fà. :crying_anim02:

Per via dei 0x000000 era una domanda per capire se ne conoscevi l'uso! :lol:

Dai che si è fatto vivo anche 'masmil1988' forse il numero degli adoratori di mshell aumenta!

Edited by lento
Link to comment
Share on other sites

'6587gianluca' un ultima cosa.....forse ho capito perché insisti tanto con sto programma....

Perché non completi ball4.txt poi te lo puoi girare tranquillamente su altri siti che frequenti.

Alla fine il gioco lo fai tù e devi presentarlo come tuo.

Io ti dò solo dei consigli, una mano dove posso. Ok!...

Anche tank se aggiungi del tuo lo puoi postare dove vuoi senza far riferimento a dove ai preso l'dea.

Certo se cambi solo le immagini dei cararmati (io non mi lamento) ma altri che per caso capitano su questo sito possono pensare

"bè poteva almeno dire".... "ho migliorato uno spunto preso da"....

Uè se ciò tempo vedrai quanti scopiazzamenti te posto io!

Link to comment
Share on other sites

'6587gianluca' un ultima cosa.....forse ho capito perché insisti tanto con sto programma....

Perché non completi ball4.txt poi te lo puoi girare tranquillamente su altri siti che frequenti.

Alla fine il gioco lo fai tù e devi presentarlo come tuo.

Io ti dò solo dei consigli, una mano dove posso. Ok!...

Anche tank se aggiungi del tuo lo puoi postare dove vuoi senza far riferimento a dove ai preso l'dea.

Certo se cambi solo le immagini dei cararmati (io non mi lamento) ma altri che per caso capitano su questo sito possono pensare

"bè poteva almeno dire".... "ho migliorato uno spunto preso da"....

Uè se ciò tempo vedrai quanti scopiazzamenti te posto io!

Scusami "lento", intuisco nel tuo messaggio qualcosa di poco chiaro ma ti garantisco che non ho assolutamente capito che cosa vuoi dire. Siccome non vorrei che si pensasse qualcosa di non vero, ti prego di essere più chiaro e diretto.

Tu dici di aver capito perchè insisto con sto programma.....dimmelo perfavore, in quanto insisto solo perchè è un gioco che mi ha fatto sempre impazzire ed è per me una soddisfazione aver creato, grazie al tuo aiuto, qualcosa di carino.

Poi mi dici che posso completare ball4 per poi farlo girare su altri siti che frequento !!!!! Non capisco assolutamente a cosa alludi, anche perchè lunge da me prendere qualcosa da qui e postarlo altrove spacciandomi per creatore. Lunge da me.

E per quanto riguarda tank ???? che cosa vuoi dire ?????

Cioè, mi stai accusando di cose inesistenti, ecco perchè ti chiedo di essere chiaro, in quanto se altri leggono la tua accusa chissà cosa possono pensare di me.

Io ho chiesto a Voi in pura fede e vi ho sempre ringraziati e non ho postato alcunchè su latri siti.

Edited by 6587gianluca
Link to comment
Share on other sites

'6587gianluca' è esattamente il contrario di quanto sospetti!.

Io dico che devi prendere i sorgenti fatti da altri, aggiungere qualcosina di tuo e postarli dove ti pare come tue creazioni!.

Pensavo che il problema fosse proprio questo. Il non voler usare spunti di altri.

E che questo ti forzasse a continuare a sviluppare solo Bros.!

Ricorda che anchio posterò molti esempi presi da altri! e se sarò capace aggiungerò del mio.

Link to comment
Share on other sites

Ciao amici miei, posto una piccola modifica a ball4.txt postato e creato dall'origine da "lento".

In questa modifica ho fatto in modo che la paletta sulla quale far rimbalzare la pallina non sia solo sulla parte bassa del dispaly ma anche sulla parte alta. Al fine di facilitare il movimento delle palette ho fatto in modo che la paletta sul lato inferiore del dispaly si comandi con i tasti 4 e 6 mentre quella che si trova nella parte superiore si può comandare con i tasti 1 e 3.

In oltre ad ogni rimablzo viene incrementato un punteggio al fine di contare quanto rimbalzi riusciamo a fare.

In olotre ancora se la pallina non colpisce la paletta, il punteggio non viene incrementato ed ilo gioco invece di terminare continua facendo partire la pallina in senso contrario al fine di fare in modo che l'avversario abbia la possibilità di incremntare il suo punteggio a danno di colui che non è riuscito a colpire la pallina.......giocateci, è più facile capirlo sul campo che mediante il racconto. Quanto sei difficile, postalo e basta !!!!!!!

ball4_1.txt

Link to comment
Share on other sites

Ciao amici miei, posto una piccola modifica a ball4.txt postato e creato dall'origine da "lento".

Grande! :thumbs:

Sono rimasto stupito nel leggere il sorgente di quanto hai appreso!

Secondo il mio parere ti conviene aprire un post nuovo! e non scrivere che è una piccola modifica!

In realtà ai trasormato il gioco in roba tua!.

Postalo perchè anche 'Nick_7' sta tentando di realzzare una roba simile.

Personalmente appena sei sicuro che funziona bene ne farei un xxx.sis in modo che chiunque abbia un cellulare S3rd può usarlo.

Ho non ti dimenticare di dare un occhiata al discorso del audio.beep() può farti comodo in questo gioco.

:ph34r: hai anche IDENTATO il programma!.

Guarda anche in Tank.m li dentro cè una funzione acaso() che si potrebbe modificare per far prtire la pallina

in punti diversi (solo come lato corto dello schermo ovviamente).

Te lo dicevo che in tre mesi mi facevi mangiare la polvere!!

Forte! adesso ste intontito de lento cià parecchio da fà ma appena se ferma teposto novi spunti de giochi va!

Comunque non sentirti obbligato a modificarli tutti, solo quelli che ti andrà.

Ciao......Ricordati quando ai letto come si usa il suono posta cosa è secondo tè l'errore che blocca Bros.

(Mi riprometto di analizzare ball4_1.txt con più calma domani.)

Link to comment
Share on other sites

Altra piccola modifica a ball.txt di "lento", in questo nuovo sorgente se non viene colpita la palla dalla paletta la palla ora riparte dal centro dello schermo ed in oltre sia nel caso che la palla viene colpita dalla paletta sia nel caso in cui non venga colpita si sente un effetto sonoro diverso l'ubno dall'altro.

Da provare.....è simpatico......ci sono già altre modifiche nella mia mente.....e nell'arco di questi giorni verranno postate....

ball4_2.txt

Link to comment
Share on other sites

Altra piccola modifica a ball.txt di "lento"

Guarda che ball4_2.txt ne manca un pezzo! comunque lò ricostruito e te lo allego.ball4_2.txt

Direi che è ulteriormente migliorato.

'6587gianluca' e 'Nick_7' Io insisto aprite una discussione vostra relativa al progetto che state portando avanti

assieme o anche separate (questo ha poca importanza) e chiedete consigli nel forum o commenti.

E non riportate sempre il mio riferimento (io vi ringrazio di riconoscermi d' aver fatto qualcosa di utile) tenete presente

che nella programmazione è così che si impara:

Si guardano i sorgenti scritti da altri si cerca di capirli e poi si inizia a modificarli con piccole o grandi modifiche

Credetemi hanno fatto tutti così! anche quelli che si atteggiano a super geni dell'informatica.

E' che so mpò stro... voiono sempre fà vedè de essere i professò davè la conoscenza nfusa! ste pecorari

Un ultima cosa..... '6587gianluca' per via del audio.beep() apro una nuovo discussione dove spiego come si usa.

Appena posso vi posto un altro gioco sempre da completare e migliorare :mumble:

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share


×
×
  • Create New...

Important Information

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy