Nokioteca [Nokia] Forum: [mshell] Far Rotolare Il Barile - Nokioteca [Nokia] Forum

Salta al contenuto

  • 6 Pagine +
  • 1
  • 2
  • 3
  • Ultimo »
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

[mshell] Far Rotolare Il Barile semplici concetti per divertirsi programmando

#1 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 23 aprile 2009 - 23:43

Premessa:
Apro questa nuova discussione nel tentativo di illustrare dei concetti basilari della programmazione sfruttando l'idea di '6587gianluca' che si stà prodigando a realizzare un gioco. Per sua gentile concessione utilizzo le sue immagini.

Non spiegherò quello che si trova sui manuali di mshell.(devo finire di leggerli pure io...)
Leggete anche l'eccellente "Miniguida per Iniziare" di 'masmil1988'
Per visualizzare questo link registrati o esegui il log in.


Non sono un insegnante...conosco qualcosa...e molto non sò, correrò il rischio di trasmettere anche qualche concetto sbagliato.
Spero che altri verifichino l'esattezza di quel che si dirà intervenendo con correzioni per il bene di tutti, Grazie!.

Nota: si tratta di un colloquio tra me e il mio alter ego che per dipiù è convinto di avere personalità multiple!!.

Per il corretto funzionamento dovete installare nella MemoryCard queste due immagini:
Nella Directory "E:\Images\" immagine donkeysfondo.png Download file  donkeysfondo.png (72,19K)
Numero di downloads: 8e barile.png Download file  barile.png (999bytes)
Numero di downloads: 3

Sono immagini per cellulari con schermo 240x320, per i possessori di cellulari con schermo 320x240
all'inizio dovranno vedere solo 3/4 dell'immagine.

Torniamo a noi:
L'idea è di far cadere e rotolare un barile lungo dei piani. Si pone un barile sul piano più alto, cade, rotola, cade,rotola così percorre tutto lo scenario del gioco "DonkeyKong", quando esce di scena ne riparte un altro. L'immagine dovrebbero essere sufficiente per capire.
Download file  donkeysfond_1.png (124,94K)
Numero di downloads: 4

La prima regola è avere le idee chiare di cosa si vuol realizzare!.
Ovvero conoscere il problema e come si vuol risolverlo (a grandi linee).


Allora il programma sarà così:
  • mostra "donkeysfondo.png" (l'immagine di fondo a pieno schermo)
  • mostra il barile in alto a destra pronto a cadere "barile.png"
    Qui ci sono due azioni che si ripetono parecchie volte una per ogni piano:
  • il barile cade sul piano sottostante
  • il barile rotola sino al lato opposto del piano

  • Ultima cosa, quando il barile giunge all'estremità dell'ultimo piano esce di scena e riappare al punto 1) pronto a ripetere la sequenza.

Tutto chiaro?. Siii!(alter ego).
Ecco il sorgente:
use graph;graph.size(240,320);graph.full(true);sfondo=graph.icon("e:\\Images\\donkeysfondo.png");
barile=graph.icon("e:\\Images\\barile.png");graph.put(0,0,sfondo);graph.put(214,97,barile);graph.show();
sleep(10);graph.put(0,0,sfondo);graph.put(214,98,barile);graph.show();sleep(10);
graph.put(0,0,sfondo);graph.put(214,99,barile);graph.show();sleep(10);graph.put
(0,0,sfondo);graph.put(214,100,barile);graph.show();sleep(10);graph.put(0,0,
sfondo);graph.put(214,101,barile);graph.show();sleep(10);graph.put(0,0,sfondo);
graph.put(214,102,barile);graph.show();sleep(10);graph.put(0,0,sfondo);graph.put
(214,103,barile);graph.show();sleep(10);graph.put(0,0,sfondo);graph.put(214,104,
barile);graph.show();sleep(10);graph.put(0,0,sfondo);graph.put(214,105,barile);
graph.show();sleep(10);graph.put(0,0,sfondo);graph.put(214,106,barile);graph.
show();sleep(10);graph.put(0,0,sfondo);graph.put(214,107,barile);graph.show();
sleep(10);graph.put(0,0,sfondo);graph.put(214,108,barile);graph.show();sleep
(10);graph.put(0,0,sfondo);graph.put(214,109,barile);graph.show();sleep(10);
graph.put(0,0,sfondo);graph.put(214,110,barile);graph.show();sleep(10);graph.
put(0,0,sfondo);graph.put(214,111,barile);graph.show();sleep(10);graph.put(0,0,
sfondo);graph.put(214,112,barile);graph.show();sleep(10);graph.put(0,0,sfondo);
graph.put(214,113,barile);graph.show();sleep(10);graph.put(0,0,sfondo);graph.
put(214,114,barile);graph.show();sleep(10);graph.put(0,0,sfondo);graph.put(214,
115,barile);graph.show();sleep(10);graph.put(0,0,sfondo);graph.put(214,116,
barile);graph.show();sleep(10);graph.put(0,0,sfondo);graph.put(214,117,barile);
graph.show();sleep(10);graph.put(0,0,sfondo);

...... Fermo! fermo!ma cosè sta roba qua?.
Il programma!...ci sono molte altre righe che devo scrivere per completarlo.....
E' PAZZO!...presto chiudete la discussione e chiamate l'ospedale....

Vi assicuro che il sorgente qui riportato salvato in un file testuale con un nome di fantasia e estensione obbligatoria .m viene aperto dall'interprete mShell, lo legge e lo esegue tutto e non si lamenta! si vede il barile cadere per qualche piano, funziona!!.
Download file  Dk0.txt (31,71K)
Numero di downloads: 20
Ma non si capisce niente! e come fa l'interprete mShell a capirci qualcosa?? son tutte parole appiccicate!.

Allora possiamo immaginare che l'interprete quando esegue un programma su file fa quanto segue:
  • Apre il programma da eseguire (Il programma deve essere scritto come testo)
  • Parte dal primo carattere in alto a sinistra legge la prima istruzione,
    verifica che sia scritta correttamente e la esegue, poi legge la seconda e cosi via,
    scorre tutto esattamente come si legge un libro.
    Man mano che compie questa azione interpreta e esegue le istruzioni una dopo l'altra
    fino al termine del file e con esso termina anche il programma.

Anche se non è esattamente così.
Ci sono delle inesattezze usate per facilitare la comprensione di come si svolge il tutto.
mShell è un interprete di P-Code questo significa che prima legge tutto il programma e lo trascrive
in una forma quasi totalmente incomprensibile per noi ma estremamente più veloce per lui da leggere
e eseguire quest'altro lo conserva in memoria.

Diciamo che fa fatica a leggere la nostra calligrafia, e per essere più veloce se lo trascrive nella sua.

Spesso dovremo crearci un illusione mentale di come avvengono certe cose per poterle capire facilmente senza impazzire,
lo dimostra il fatto che nessun programmatore genio che sia si mette
a scrivere nel linguaggio binario, l'unico linguaggio che il microprocessore del vostro
cellulare è in grado di usare.
[color="blue"]
0011110100111110101010001110010
0111001010100001010111010101110
0100101010101011111011110111001
0100111111001010101111010001111 [/color]
E' palese a tutti quel che cé scritto! anche un bambino lo capirebbe!,
non sono molto daccordo sul "00110001000111" ma comunque....


Qui si capisce che siamo noi umani ad avere la necessità di una scrittura del programma che sia in grado
di farci capire cosa compie.
Dobbiamo poter scrivere in un modo tale, che sia il programma stesso a spiegarsi.

Pazzesco!!! mi stai dicendo che quel ammasso alfanumerico può diventare un programma che si spiega??
Vuoi dire che il programma mi insegna come funziona??

Si! Ora te lo riscrivo....

Ok! questo è il sorgente:

use graph;
graph.size(240,320);
graph.full(true);
sfondo=graph.icon("e:\\Images\\donkeysfondo.png");
barile=graph.icon("e:\\Images\\barile.png");
graph.put(0,0,sfondo);
graph.put(214,97,barile);
graph.show();sleep(10);
graph.put(0,0,sfondo);
graph.put(214,98,barile);
graph.show();sleep(10);
graph.put(0,0,sfondo);
graph.put(214,99,barile);
graph.show();sleep(10);
graph.put(0,0,sfondo);
graph.put(214,100,barile);
graph.show();sleep(10);
graph.put(0,0,sfondo);
graph.put(214,101,barile);
graph.show();sleep(10);
graph.put(0,0,sfondo);
graph.put(214,102,barile);
graph.show();sleep(10);
graph.put(0,0,sfondo);
graph.put(214,103,barile);
graph.show();sleep(10);
graph.put(0,0,sfondo);
graph.put(214,104,barile);
graph.show();sleep(10);

Download file  Dk1.txt (33,06K)
Numero di downloads: 12
...... Fermo! fermo!
Ma?..dovevo scrivere ancora 60 centimetri di programma e il barile cade di un piano!
e se aggiungo altri 6 metri di programma vedrai il barile cadere fino in fondo!
e se poi aggiungo altri 6 metri e 60 centimetri rifà un altra volta il tutto!.

Niente da fare...è proprio pazzo, richiama l'ospedale....non vorrai farci scrivere 6 metri e 60 di comandi
per vedere un barile rotolare?


Fine prima puntata...

Messaggio modificato da lento il 23 aprile 2009 - 23:52

0

#2 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 24 aprile 2009 - 07:53

Che ne pensate?
Continuo così o meglio fare botta e rispota? Fatemi sapere se interessa e come procedere
Grazie.
0

#3 L   fabrinokia 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 61
  • Iscritto: 15 aprile 2009
  • Località:Firenze
  • Cellulare:E71
  • Firmware:210.21.006 RM346

Inviato 24 aprile 2009 - 08:24

Bello da 10+!

Ho letto senza metterci troppa testa, ma lo farò presto.. E' sicuramente un bell'howto...

Che dirti; per ora eh :D in attesa di domande che possano sorgere da una lettura più attenta; se non grazie?

GRAZIE!
0

#4 L   loudycloud 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 452
  • Iscritto: 28 settembre 2008
  • Località:nordest
  • Cellulare:Nokia N95
  • Firmware:31.0.017

Inviato 24 aprile 2009 - 08:42

e' bello!

La prima volta che vedo pezzi da teatro mischiati a righe di codice. Interessante, mi sta venendo voglia di far rotolare barili sul mio N95...
... ma la mia giornata e' di 24 ore, tutte gia' prenotate!
Ammiro veramente il tuo approccio, personalmente non potro' seguirlo, purtroppo, non è nelle mie priorità/possibilità. Posso solo farti molti complimenti.
0

#5 L   6587gianluca 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 213
  • Iscritto: 31 dicembre 2006
  • Cellulare:Nokia C7

Inviato 24 aprile 2009 - 16:32

Ciao "lento".....vedo che ti sei messo al lavoro alla grande ed è perfettamente ciò che ti eri prefissato ed esattamente ciò che mi aspettavo.
Spero di leggere tante altre puntate.
Credo che non siano necessarie domande.....credo che tu devi andare diretto al tuo obiettivo e quindi scrivere ciò che avevi detto e cioè cercare di spiegare e far capire come è possibile giungere dal concetto allo script funzionante.
Attendo le tue puntate.
Ciao e grazie per la tua disponibilità.-
0

#6 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 25 aprile 2009 - 16:42

Seconda e ultipa puntata
Effettivamente il secondo listato non si spiega per nulla!. Ecco il listato in forma più comprensibile:
[color="blue"]use graph;
graph.size(240,320);
graph.full(true);

sfondo=graph.icon("e:\\Images\\donkeysfondo.png");
barile=graph.icon("e:\\Images\\barile.png");

for a=0 to 1 do
 for y=97 to 128 do
  graph.put(0,0,sfondo);
  graph.put(214,y,barile);
  graph.show(); sleep(10);
 end;

 for x=214 to 23 by-1 do
  graph.put(0,0,sfondo);
  graph.put(x,128,barile);
  graph.show(); sleep(10);
 end;

 for y=128 to 169 do
  graph.put(0,0,sfondo);
  graph.put(23,y,barile);
  graph.show(); sleep(10);
 end;

 for x=23 to 214 do
  graph.put(0,0,sfondo);
  graph.put(x,169, barile);
  graph.show();sleep(10);
 end;

 for y=169 to 209 do
  graph.put(0,0,sfondo);
  graph.put(214,y, barile);
  graph.show();sleep(10);
 end;

 for x=214 to 23 by-1 do
  graph.put(0,0,sfondo);
  graph.put(x,209, barile);
  graph.show();sleep(10);
 end;

 for y=209 to 251 do
  graph.put(0,0,sfondo);
  graph.put(23,y, barile);
  graph.show();sleep(10);
 end;

 for x=23 to 214 do
  graph.put(0,0,sfondo);
  graph.put(x,251, barile);
  graph.show();sleep(10);
 end;

 for y=251 to 292 do
  graph.put(0,0,sfondo);
  graph.put(214,y, barile);
  graph.show();sleep(10);
 end;

 for x=214 to 10 by -1 do
  graph.put(0,0,sfondo);
  graph.put(x,292, barile);
  graph.show();sleep(10);
 end;
end
[/color]
Va già meglio e?. in somma? alter non ti va mai bene niente!.
Grazie alle istruzioni iterative possiamo ripetere un certo numero di volte un blocco di codice.
Carico comandi grafici graph;
Imposto lo schermo a (240,320);
Uso tutto lo schermo full(true);

Carico immagine sfondo donkeysfondo.png;
Carico immagine barile barile.png;

adestra=-1; asinistra=1;
// coordinate y dei piani
piano0=292; piano1=251;
piano2=209; piano3=169;
piano4=128; piano5=97;

ripeto per 2 volte
 scendi(dal piano5, al piano4, dalla parte destra);
 trasla(asinistra, sul piano4);
 scendi(dal piano4, al 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;
Qui potete scaricare il sorgente finale:Download file  Dk2.txt (1,19K)
Numero di downloads: 6
Aproposito... avevo promesso di darvi la versione per i cellulari 320x240! eccola:Download file  Dk3.txt (1,21K)
Numero di downloads: 4

Propongo di continuare questa discussione col metodo più idoneo per un forum.
A Domanda-Risposta prendendo magari spunto dall'onirica esposizione qui riportata.

'6587gianluca' dal post "[mshell] - Aiuto Per Un Giochino" ha già posto delle domande inerenti certe parti
del programma. Che riporto qui: (Ho solo aggiustato i valori all'programma qui esposto)

1) incr,livello - non capisco se sono delle variabili, ma se lo sono non sono state definite da nessuna parte ?????
2) g.put(0,0,.sfondo); - perchè si scrive .sfondo e non sfondo ???
3) scendi(piano4,piano5,adestra); - tu scrivi piano4,piano5,adestra???? perchè si usano tre valori ???
4) trasla(asinistra,piano4); - e qui perchè si usano 2 valori tra parentesi ???
5) Mi puoi dire se esiste una guida dove posso studiare l'uso di queste nuove metodologie.

Qualcuno gentilmente vuole partecipare a rispondere??
Qualcuno se la sente di farmi vedere come diventa il programma scrivendolo ad oggetti?? (possibilmente in mShell) @'masmil1988' puoi dirci qualcosa?

Spero che altri pongano domande e partecipino a rispondere.
Se la fai lunga! per me è sempre un casino! funzioni? loop? Viva il Forth! Zitto alter...

Download file


Messaggio modificato da lento il 25 aprile 2009 - 19:18

0

#7 L   6587gianluca 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 213
  • Iscritto: 31 dicembre 2006
  • Cellulare:Nokia C7

Inviato 25 aprile 2009 - 17:29

Ciao "lento"....ho visto che hai fatto veramente un bel lavoro. Penso che molti siano interessati a quanto hai scritto in quanto lo ritengo veramente molto interessante.
Sicuramente bisogna avere delle buone basi alle spalle in quanto giungere allo script tuo finale Dk2 non è proprio così intuitivo.
Voglio dire che seguendolo attentamente e rileggendolo in continuazione si riesce a dargli un significato, però io penso che non sarei mai in grado di realizzare qualcosa del genere.
Ti chiedo ancora aiuto e volevo chiederti se potresti rispondermi dettagliatamente alle mie domande ed in oltre ti chiedo un altro grosso sforzo e cioè se potresti riga per riga dello script commentare ciò che il programma svolge.
Ciao lento, sei veramente un grande...anche il tuo alter è corioso....
Grazie.-

aaaaaahhhh!!!......"lento", naturalmente ora dobbiamo dare significato al TUO grande sforzo. Siamo giunti al punto in cui abbiamo a display la schermata di Donkey Kong ed il barile che "MERAVIGLIOSAMENTE" rotola dall'alto al basso di tutti i piani....ora dobbiamo dare vita a Mario.....dobbiamo fare in modo che Mario che si trova sulla parte sinistra del piano terra possa camminare spostandosi a destra ed a sinistra su ogni piano utilizzando i tasti 4-(sinistra) e 6-(destra) e dobbiamo in oltre fare in modo che quando mario si trova nei pressi della scala (e naturamente solo quando si trova sotto alla scala) possa salire utilizzando ad esempio il tasto 2-(sale).......sono sicuro che tu in quattro e quattrotto riesci a risolvere l'arcano.
Allego le 2 immagini di mario1 Download file  mario1.png (766bytes)
Numero di downloads: 2che gurda a destra e mario2 Download file  mario2.png (771bytes)
Numero di downloads: 2che guarda a sinistra.

...poi penseremo anche a fare in modo che quando il barile incontra Mario accada qualcosa ad esempio faremo in modo che Mario riprenda la sua posozione iniziale....

Messaggio modificato da 6587gianluca il 25 aprile 2009 - 18:06

0

#8 L   Il.Socio 

  • Nokioteca Staff
  • Gruppo: Moderatore
  • Messaggi: 7143
  • Iscritto: 02 dicembre 2005
  • Località:Torino
  • Cellulare:N8-00

Inviato 26 aprile 2009 - 02:14

Visualizza Messaggilento, il 25/04/2009 - 17:42, ha scritto:

1) incr,livello - non capisco se sono delle variabili, ma se lo sono non sono state definite da nessuna parte ?????
2) g.put(0,0,.sfondo); - perchè si scrive .sfondo e non sfondo ???
3) scendi(piano4,piano5,adestra); - tu scrivi piano4,piano5,adestra???? perchè si usano tre valori ???
4) trasla(asinistra,piano4); - e qui perchè si usano 2 valori tra parentesi ???
5) Mi puoi dire se esiste una guida dove posso studiare l'uso di queste nuove metodologie.

Alcune di queste posso affrontarle anche io :lmaosmiley:
1) non sono variabili ma sono i parametri di una funzione.
In particolare sono i parametri della funzione trasla (il nome e' arbitrario, poteva chiamarsi anche pippo).
Ad incr e livello sara' assegnato un valore nel momento in cui si richiamera' la funzione all'interno del programma.
es. se nel programma ad un certo punto si inserisce l'istruzione
trasla(1, 10)
si sta richiamando la funzione trasla, ed il parametro incr assumera' il valore 1 mentre il parametro livello assumera' il valore 10

3) la funzione scendi (anche qui, nome arbitrario) e' stata definita per accettare 3 parametri (da,ad,dalato)
inserendo l'istruzione:
scendi(piano4,piano5,adestra)
si sta richiamando la funzione scendi, ed il parametro da assumera' il valore piano4 (128)
il parametro ad assumera' il valore piano5 (97)
e il parametro dalato assumera' il valore adestra (1)

4) stesso discorso, ma la funzione trasla e' stata definita per accettare 2 soli parametri


Visualizza Messaggilento, il 25/04/2009 - 17:42, ha scritto:

Qualcuno se la sente di farmi vedere come diventa il programma scrivendolo ad oggetti?? (possibilmente in mShell) @'masmil1988' puoi dirci qualcosa?

Imho, la comodita' di una trasformazione in un approccio ad oggetti sarebbe leggermente piu' evidente nel caso in cui si debbano gestire piu' barili che cadono....
In tal caso, saresti costretto ad introdurre un un array (grande quanto il massimo numero di barili da dover gestire) per memorizzare le posizioni x + un array per le posizioni y + un array per le direzioni.
Con un approccio ad oggetti invece, ti troveresti a dichiarare "l'oggetto" (termine non corretto, ma poco importa) barile, con le sue proprieta' quali posizione x, posizione y e direzione.
Nel programma avresti un solo array di oggetti di tipo barile e preso un elemento dell'array riusciresti gia' ad identificare un particolare barile, con la sua attuale posizione e direzione.
Ciascun barile, oltre ad essere dotato di proprieta' (x,y,direzione), sara' dotato anche dei metodi trasla e scendi.
Come si rappresenta il tutto in mshell? Boh?!? :lmaosmiley:

Messaggio modificato da Il.Socio il 26 aprile 2009 - 02:17

0

#9 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 26 aprile 2009 - 17:46

Visualizza Messaggi6587gianluca, il 25/04/2009 - 18:29, ha scritto:

Voglio dire che seguendolo attentamente e rileggendolo in continuazione si riesce a dargli un significato, però io penso che non sarei mai in grado di realizzare qualcosa del genere.

Stai scherzando? con la voglia di fare che ti ritrovi mi darai la polvere entro tre mesi !!! Garantito.

Visualizza Messaggi6587gianluca, il 25/04/2009 - 18:29, ha scritto:

Ti chiedo ancora aiuto e volevo chiederti se potresti rispondermi dettagliatamente alle mie domande ed in oltre ti chiedo un altro grosso sforzo e cioè se potresti riga per riga dello script commentare ciò che il programma svolge.

Eccoti accontentato:
1  use graph as g;  // carico adl modulo graph nuovi comandi per gestire la grafica
2  g.size(240,320); // dico a mShell di riservare un area di memoria 240x320 per ospitare
                    // le immagini grafiche. E'come il display del cellulare ma nascosto.    
3  g.full(true);    // ordino di visualizzare a tutto schermo la grafica
4  sfondo=g.icon("e:\\Images\\donkeysfondo.png"); // carica in un area di memoria l'immagine
                                                  // donkeysfondo.png e le assegna il nome sfondo.
5  barile=g.icon("e:\\Images\\barile.png"); // come riga 4.

6  adestra=1;      // creo una variabile globale numerica di valore 1
7  asinistra=-1;   // creo una variabile globale numerica di valore -1
8  piano0=292;     // variabile globale numerica che contiene la posizione del barile come asse y
9  piano1=251;     // idem per 9-10-11-12-13. assegnando questi valori alle variabili si rende
10 piano2=209;     // semplice qualsiasi modifica: per esempio nel programma Dk2.txt per cell. 320x240
11 piano3=169;     // è bastato cambiare questi valori senza modificare nulla del programma per
12 piano4=128;     // adattarlo a quello schermo. Prova a variare a casaccio questi valori e
13 piano5=97;      // buon divertimento a vedere un barile impazzito!!.

                                 // Creo una funzione con il comando 'function' ricordati che le funzioni
                                 // e precisamente da n.14 a n.25 sono come un area riservata, un post-it
                                 // appiccicato sul programma generale. le variabili interne sono locali.
                                 // 'function' creare una funzione di nome 'trasla' che acetta due valori
/*--------------------------     //  in ingresso trasla(1,10) icr e livello sono due variabili locali.
  sposta orizzontalmente         // esistono solo all'interno di 'trasla'. Puoi vederla così:
  --------------------------*/   
14 function trasla(incr,livello) // trasla(1,10)
                                 //  incr=1; livello=10;   <------per farti capire
15  if incr>0 then               //  if incr>0 then           
16   da=23;ad=214;               //    da=23;ad=214; <--(da,ad) sono create e esistono solo nella funzione
17  else                         //  else
18   da=14; ad=23;               //    da=14; ad=23;
19  end;                         //  end;
20  for x=da to ad by incr do    //  for x=da to ad by incr do <--questo lo conosci for x=23 to 214 by 1 do
21  g.put(0,0,.sfondo);          //   g.put(0,0,.sfondo);       --se incr è -1 sarà for x=210 to 23 by -1 do
22  g.put(x,livello,.barile);    //   g.put(x,livello,.barile); 
23   g.show(); sleep(10);        //   g.show(); sleep(10); 
24  end;                         //  end;                      <-- fine ciclo for
25 end                           // end  <--- qui finisce la definizione della funzione.
                                 

/*----------------------------
  Scende verso il basso
  ---------------------------*/  // (da,ad,dalato)da, ad non sono le stesse variabili interne di "trasla"
26 function scendi(da,ad,dalato) // ricordati che vengono distrutte ogni volta che la funzione finisce.
27  if dalato<0 then             // determino che valore assegnare ad x se dalato=-1
28   x=23;                       // x diventa 23 il barile si troverà a sinistra
29  else                         // se dalato vale 1
30   x=214;                      // x diventa 214 il barile apparirà a destra
31  end;                         // fine del costrutto di confronto if...then...else...end.
32  for y=da to ad do            // ripeto il ciclo che fa scorrere il barile N. volte quante indicate in da,ad 
33   g.put(0,0,.sfondo);         //<--- .sfondo il punto davanti a sfondo indica alla funzione che questa non è
                                // una variabile interna(locale) ma si riferisce alla globale definita in riga 4.
                                // idem per .barile il punto funziona come in "use graph;" e viene usato
34   g.put(x,y,.barile);        // quando ci si riferisce a comandi e variabili dell programma attuale Dk2.m. 
35   g.show(); sleep(10);
36  end;
37 end;                          // fine dichiarazione funzione scendi

/*============ MAIN ===========*/
38 for a=0 to 1 do  // loop principale che ripete il tutto 2 volte
39  scendi(piano5,piano4,adestra);    // è come scrivere scendi(97,128,1)
40  trasla(asinistra,piano4);         // e come scrivere trasla(-1,128)
41  scendi(piano4,piano3,asinistra);  // ecc... ecc..
41  trasla(adestra,piano3);
42  scendi(piano3,piano2,adestra);
43  trasla(asinistra,piano2);
44  scendi(piano2,piano1,asinistra);
45  trasla(adestra,piano1);
46  scendi(piano1,piano0,adestra);
47  trasla(asinistra,piano0);
48 end    // fine del loop principale

Per i punti 1-3-4 delle tue precedenti domande ti ha già risposto in modo egregio 'Il.Socio' se qualcosa comunque non ti fosse chiaro,
approfittando del suo interessamento "a ri bombardalo!!!" :)
perl il punto 5:(5) Mi puoi dire se esiste una guida dove posso studiare l'uso di queste nuove metodologie.) ti rispondo subito.
La risposta la trovi sui libri di informatica ci sono vari scritti non legati ad un linguaggio (non credo si possa riportare il titolo e autore.) ma diciamo quando i titoli suonano tipo "Algoritmi e basi della programmazione" o altri che suonano come "Informatica: teoria e programmazione in..." van bene e si applicano a tutti i linguaggi. Sono le famose basi. Altri libri invece sono legati ad un linguaggio specifico. In mShell non ne esistono che io sappia.
Sò noiosi ste libri, na barba!! Ok! alter ho capito...
Puoi cavartela bene anche senza spendere una lira!! tutte le volte che vedi nomi tipo funzioni, loop, variabili globali,locali ecc.. e ai dubbi fai una ricerca su internet con i motori..... Ci sono brevi spiegazioni, o interi manuali che puoi leggere. Sono scritti da persone in gamba! anche Wikipedia!.
L'importante è farlo subito ogni volta che trovi un concetto nuovo! Io faccio così.

Eggia! mica me devo laureà eninformatica per scrive quattro righe!
Per mShell bisogna leggere i tre PDF che ti mette a disposizione li. al punto 2.4 e 2.9 del reference Version3.01 trovi le risposte per le variabili col punto.
Se mi dai un idea di cosa conosci delle variabili ti posso rispondere successivamente. Spiegami con tue parole cosa sono le variabili.

Visualizza Messaggi6587gianluca, il 25/04/2009 - 18:29, ha scritto:

aaaaaahhhh!!!......"lento", naturalmente ora dobbiamo dare significato al TUO grande sforzo. Siamo giunti al punto in cui abbiamo a display la schermata di Donkey Kong ed il barile che "MERAVIGLIOSAMENTE" rotola dall'alto al basso di tutti i piani....ora dobbiamo dare vita a Mario.....dobbiamo fare in modo che Mario che si trova sulla parte sinistra del piano terra possa camminare spostandosi a destra ed a sinistra su ogni piano utilizzando i tasti 4-(sinistra) e 6-(destra) e dobbiamo in oltre fare in modo che quando mario si trova nei pressi della scala (e naturamente solo quando si trova sotto alla scala) possa salire utilizzando ad esempio il tasto 2-(sale).......sono sicuro che tu in quattro e quattrotto riesci a risolvere l'arcano.
Allego le 2 immagini di mario1 Allegato mario1.pngche gurda a destra e mario2 Allegato mario2.pngche guarda a sinistra.

...poi penseremo anche a fare in modo che quando il barile incontra Mario accada qualcosa ad esempio faremo in modo che Mario riprenda la sua posozione iniziale....

Hhhhhhha! adesso ho capito cosa volevi fare!. anche qui "esponi con tue parole passo per passo cosa deve fare il gioco" (Top-down) e vediamo se si riesce a cavare qualcosa. (Ti confesso che sono andato a vedere cosa era DonkeyKong su internet ).!
Facce sapè... a presto.

Messaggio modificato da lento il 26 aprile 2009 - 19:39

0

#10 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 26 aprile 2009 - 18:06

Visualizza MessaggiIl.Socio, il 26/04/2009 - 03:14, ha scritto:



Salve 'Il.Socio' grazie della risposta. Beato tè che hai una conoscenza ormai si può dire naturale della programmazione ad oggetti!.
Non ti nascondo che uno dei motivi per cui mi interesso ad mShell è la possibilità di poter imparare a programmare ad oggetti.

Grazie alla sua semplice implementazione dovrebbe essere facile usarla e capirla sfruttando anche la shell interattiva si può
sperimentare molto dal vivo.
Purtroppo ho un buco temporale mi manca tutto quello che cè tra i linguaggi procedurali e gli attuali linguaggi.
Direttamente dalla preistoria --> a 2001 odissea nello spazio :) . Il risveglio del dinosauro II! :) .
A presto.
0

#11 L   6587gianluca 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 213
  • Iscritto: 31 dicembre 2006
  • Cellulare:Nokia C7

Inviato 26 aprile 2009 - 23:17

Grazie "lento", grazie delle varie risposte e grazie della spiegazione passo passo dello script, lo studierò approfonditamente al fine di capirlo bene e poterlo immagazzinare.
Ho visto che hai dato un occhiata al Donkey Kong originale.....bellino vero ????? ed è quello che mi ero prefissato di realizzare anche perchè quel gioco, tranne che con gli emulatori, non esiste per i Nostri NOKIA, non capisco perchè non l'abbiano mai fatto.
Oggi pomeriggio, scriverò a parole mie, passo passo, cosa vorrei realizzare....o meglio cosa potremmo realizzare....e speriamo che tu continui con il tuo fondamentale ed utilissimo aiuto, perchè senza il tuo aiuto io sarei a zero.
Ciao a presto.
0

#12 L   6587gianluca 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 213
  • Iscritto: 31 dicembre 2006
  • Cellulare:Nokia C7

Inviato 27 aprile 2009 - 07:31

Ciao "lento", prova a dare un occhiata a questo indirizzo, è il giochino Donkey Kong giocabile da tastiera del PC con i tasti direzionali e la barra spaziatrice per saltare :

Per visualizzare questo link registrati o esegui il log in.


Praticamente ciò che io avrei avuto in mente di realizzare è quello, naturalmente il tutto rapportato alla programmazione che è possibile sviluppare, comunque con tutti i limiti possibili immaginabili ecco cosa mi ero prefissato :
1) disegnare sullo sfondo del display del cellulare la schermata principale di Donkey Kong;
2) disegnare nella sua posizione iniziale Mario Bross;
3) Appena inizia il gioco inizia a rotolare il barile, ed a questo ci siamo riusciti, poi penseremo a fare in modo che ad esempio ogni 10 secondi inizi a rotolare un altro barile mentre l'altro ancora rotolaq tra i vari piani;
4) Mario si deve muovere utilizzando i tasti della tastiera del cellulare sia a sinistra utilizzando il tasto 4 sie a destra utilizzando il tasto 6, e si deve potre muovere a sinistra e destra su ogni piano del palazzo;
5) in oltre Mario, al fine di raggiungere la sua bella che si trova incima al palazzo, deve poter salire le scale sparse sul display e quindi bisogna fare in modo che quando Mario e nelle prossimità della scala, oppure sotto alla scala, possa salire utilizzando il tasto 2 del cellulare;
6) bisogna altresi fare in modo che quando e se il barile incontra Mario, Mario deve riprendere la sua posizione iniziale in fondo al display;
7) al fine di fare in modo che il barile incontri sempre Mario bisogna fare in modo che Mario quando si trova nelle immediate vicinanze del barile abbia la possibilità di saltarlo, quindi premendo i tasti 1 e 3 dovrebbe saltare a sinistra oppure a destra.
8) quando e se Mario raggiunge la sua bella, si farà in modo di assegnare un punteggio a Mario, faremmo apparire una scritta sul display del tipo "Love" e poi faremo iniziare il gioco da capo con i barili ad esempio che rotolano un po più veloce.
Attendo le tue impressioni e fammi sapere che ne pensi.
Ciao.-
0

#13 L   fabrinokia 

  • Advanced Member
  • PuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 61
  • Iscritto: 15 aprile 2009
  • Località:Firenze
  • Cellulare:E71
  • Firmware:210.21.006 RM346

Inviato 27 aprile 2009 - 07:50

Incredibile... Manco 2 giorni per un po' di relax, e vedi qui che roba...

Siete GRANDI e in primis LENTO, che ha fatto questo bel lavoro...
0

#14 L   Il.Socio 

  • Nokioteca Staff
  • Gruppo: Moderatore
  • Messaggi: 7143
  • Iscritto: 02 dicembre 2005
  • Località:Torino
  • Cellulare:N8-00

Inviato 27 aprile 2009 - 09:51

per poter realizzare un giochino vero e proprio, e' indispensabile cambiare la logica con cui si e' strutturato il gioco, per consentire l'input dell'utente...
A livello di pseudo codice, ci vorrebbe qualcosa del genere:

finche' il gioco non e' finito:
- rileva input utente (legge quali tasti sono premuti e deve farlo in maniera non bloccante)
- sposta sprites (in base ai tasti premuti aggiorna le posizioni di tutti gli sprites presenti nel gioco, qui dentro ci saranno i controlli sui valori limite piano0, piano1 ecc..)
- disegna sfondo
- disegna sprites (disegna tutti gli sprites del gioco)
- eventuale delay per controllare la giusta velocita' del gioco

Messaggio modificato da Il.Socio il 27 aprile 2009 - 09:52

Per segnalare allo Staff un messaggio non conforme al regolamento è sufficiente premere il bottone "Segnala" posizionato in basso a sinistra di ciascun messaggio.
0

#15 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 27 aprile 2009 - 20:08

Visualizza MessaggiIl.Socio, il 27/04/2009 - 10:51, ha scritto:

finche' il gioco non e' finito:
- rileva input utente (legge quali tasti sono premuti e deve farlo in maniera non bloccante)
- sposta sprites (in base ai tasti premuti aggiorna le posizioni di tutti gli sprites presenti nel gioco, qui dentro ci saranno i controlli sui valori limite piano0, piano1 ecc..)
- disegna sfondo
- disegna sprites (disegna tutti gli sprites del gioco)
- eventuale delay per controllare la giusta velocita' del gioco

ESATTO! ops! sto gridando....
Praticamente hai già fatto il programma!.
Ora si tratta di chiarire con '6587gianluca' due cose, poi si seguirà il tuo schema.
0

#16 L   6587gianluca 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 213
  • Iscritto: 31 dicembre 2006
  • Cellulare:Nokia C7

Inviato 27 aprile 2009 - 20:31

Visualizza Messaggilento, il 27/04/2009 - 21:08, ha scritto:

ESATTO! ops! sto gridando....
Praticamente hai già fatto il programma!.
Ora si tratta di chiarire con '6587gianluca' due cose, poi si seguirà il tuo schema.


Dimmi dimmi "lento", quali sono le due cose.....sono impaziente.....ho necessità di vedere il gioco che che cresce pian piano.
Resto in attesa....
0

#17 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 27 aprile 2009 - 20:37

Visualizza Messaggi6587gianluca, il 27/04/2009 - 08:31, ha scritto:

Ciao "lento", prova a dare un occhiata a questo indirizzo, è il giochino Donkey Kong giocabile da tastiera del PC con i tasti direzionali e la barra spaziatrice per saltare :

Complimenti per l'esposizione del problema direi che è sufficientemente chiaro per poterlo trasformare in uno schema.....
Ma ci ha già pensato 'Il.Socio'!!! Ringrazialo! Te sei salvato per un pelo sennò 'lento' te dava el tormento alter... zitto!
Prova a leggerlo e comincia a trasformarlo in un programma anzi:
Bando di gara...a chiunque interessi scriviamo il ciclo principale in mShell, è quello che gestisce la tastera è anche quello che internamente conterrà il tutto. Lasciamo il resto ancora come frasi in italiano.
Chi se la sente comunque non ce limite a dove fermarsi nel scrivere in mShell.

Però prima devo chiederti una cosa importante: Sei sicuro che la Nintendo permetta di scrivere un qualcosa di simile al suo gioco?
Ovvero non esiste più il diritto di autore? Sei sicuro?.
E le immagini, ora che ho visto da dove provengono sei sicuro di poterle usare liberamente?.
Non è forse meglio chiedere aiuto ai grafici di Nokioteca vedo dei stupendi skin fatti su questo sito.

Ultima cosa il mio lavoro spesso mi rende impossibile rispondere durante la settimana. Sabato,Domenica possono bastare?.
0

#18 L   6587gianluca 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 213
  • Iscritto: 31 dicembre 2006
  • Cellulare:Nokia C7

Inviato 27 aprile 2009 - 21:36

Visualizza Messaggilento, il 27/04/2009 - 21:37, ha scritto:

Complimenti per l'esposizione del problema direi che è sufficientemente chiaro per poterlo trasformare in uno schema.....
Ma ci ha già pensato 'Il.Socio'!!! Ringrazialo! Te sei salvato per un pelo sennò 'lento' te dava el tormento alter... zitto!
Prova a leggerlo e comincia a trasformarlo in un programma anzi:
Bando di gara...a chiunque interessi scriviamo il ciclo principale in mShell, è quello che gestisce la tastera è anche quello che internamente conterrà il tutto. Lasciamo il resto ancora come frasi in italiano.
Chi se la sente comunque non ce limite a dove fermarsi nel scrivere in mShell.

Però prima devo chiederti una cosa importante: Sei sicuro che la Nintendo permetta di scrivere un qualcosa di simile al suo gioco?
Ovvero non esiste più il diritto di autore? Sei sicuro?.
E le immagini, ora che ho visto da dove provengono sei sicuro di poterle usare liberamente?.
Non è forse meglio chiedere aiuto ai grafici di Nokioteca vedo dei stupendi skin fatti su questo sito.

Ultima cosa il mio lavoro spesso mi rende impossibile rispondere durante la settimana. Sabato,Domenica possono bastare?.


La tua presenza è sempre gradita, in qualsiasi momento....mi dispiace poterti veder scrivere solo il sabato e la domenica....ma se cosi deve essere...e cosi sia.
Per quanto riguarda la Nintendo non credo assolutamente ci siano problemi, abbiamo copiato solo parte dello sfondo originale e tutto il resto lo stiamo ricreando noi, quindi non ci siamo appropriati di nessun particolare e cioè se vedi lo sfondo mio è abbastanza diverso da quello del gioco della Nintendo.
Mi affido molto a te per ciò che riguarda il programma in quanto fino ad ora sei stato preciso, veloce, ed hai realizzato script perfettamente funzionanti.
Ciao, spero di rivederti scrivere prestissimo.
0

#19 L   lento 

  • Senior Member
  • PuntoPuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 637
  • Iscritto: 03 settembre 2008
  • Cellulare:E72

Inviato 28 aprile 2009 - 08:01

Visualizza Messaggi6587gianluca, il 27/04/2009 - 22:36, ha scritto:

mi dispiace poterti veder scrivere solo il sabato e la domenica....ma se cosi deve essere...e cosi sia.

Ho detto spesso...non sempre!.Ciao.
0

#20 L   6587gianluca 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 213
  • Iscritto: 31 dicembre 2006
  • Cellulare:Nokia C7

Inviato 28 aprile 2009 - 18:07

Ho iniziato a far muovere Mario sullo schermo....sono arrivato al secondo piano.
0

Condividi questa discussione:


  • 6 Pagine +
  • 1
  • 2
  • 3
  • Ultimo »
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione