Nokioteca [Nokia] Forum: [mshell] Submarine - Nokioteca [Nokia] Forum

Salta al contenuto

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

[mshell] Submarine Ennesimo spunto per giochini...

#1 L   lento 

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

Inviato 07 giugno 2009 - 08:53

A riecchime....
Prima di cominciare una domanda......
Ho notato un calo di presenze in questa parte del sito.... non vorrei fosse a causa mia.....
Se è così gentilmente avvisatemi di cosa non và...sinceramente sono nuovo a questo tipo di cose ed essendo 'lento' posso sbagliare (in buona fede credetemi).

Ed ora a noi....
Ennesimo giochino ancora più complesso dei precedenti.
Si tratta di una nave che lancia bombe a dei sommergibili che infestano quelle acque.
Joytick sinistra-destra muove la nave pressione tasto centrale sgancia bombe.

Notate che non ci possono essere più di 10 bombe a video (e sono già tantissime!)
I sommergibili entrano casualmente sia come tempi che come profondità (mai più di 8).
Come al solito non lò completato.... lascio a voi il piacere di finirlo e di farlo circolare. Idem per possibili miglioramenti ed errori presenti.

Per chi non mi sopporta più... buone notizie! questo è l'ultimo gioco che presento.

Come vedete continuando per questa strada diventano sempre più complessi e difficili.....inoltre le mie intenzioni non erano di fare giochi.
Posterò ogni tanto microgiochi che rendano facile capirne la logica ed il loro riutilizzo in altri più complessi (o almeno ci provo! va!).

In questo gioco ho inserito uno dei tanti sistemi per gestire le immagini senza avere sparsi per il cellulare files tipo: immagine.png ecc..

Dateci un occhiatina... sfrutta le matrici per disegnare le figure
qui riporto lo schema della bomba da cui ho ricavato la matrice che trovate nel programma.
Download file  sub1.png (443bytes)
Numero di downloads: 6
Con questo sistema si possono usare molti colori e modificare le immagini nel corso del programma senza che nessuno possa metterci mano!.

Ok! (mi sono ancorato sul fondo del barile.....) ora sparate contro il sottoscritto senza pietà.....

Questo è il sorgente: Download file  sub0_1.txt (6,68K)
Numero di downloads: 31

Messaggio modificato da lento il 07 giugno 2009 - 10:29

0

#2 L   Nick_7 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 339
  • Iscritto: 20 novembre 2008
  • Località:Luna
  • Cellulare:Omnia HD
  • Firmware:I8910XXJB1

Inviato 07 giugno 2009 - 11:22

Quote

questo è l'ultimo gioco che presento.
Stai scherzando vero? Senza i tuoi minigiochini il mio apprendimento di mShell terminerebbe inesorabilmente al livello della pallina...se c'è una persona che rende ancora viva questa sezione quello è 'lento'
Proverò a dare un'occhiata anche a questo giochino, anche se prima mi tocca ridimensionarlo per il mio 6630... :thumbsup_anim:
0

#3 L   lento 

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

Inviato 07 giugno 2009 - 13:52

Visualizza MessaggiNick_7, il 07/06/2009 - 12:22, ha scritto:

Stai scherzando vero? Senza i tuoi minigiochini il mio apprendimento di mShell terminerebbe inesorabilmente al livello della pallina...se c'è una persona che rende ancora viva questa sezione quello è 'lento'
Proverò a dare un'occhiata anche a questo giochino, anche se prima mi tocca ridimensionarlo per il mio 6630... :crying_anim02:

Scusa... questo è un problema che non avevo previsto... se non ci riesci dimmelo che vedo di trasformartelo.

Una domanda quali sono i formati schermo più diffusi nei Nokia?.
Ciao...
0

#4 L   N73 DDF 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 236
  • Iscritto: 04 gennaio 2009
  • Località:città sant'angeloPE
  • Cellulare:Un WM
  • Firmware:6.1 professional

  Inviato 07 giugno 2009 - 14:11

Nokia Symbian S60 176x208 =

3230 - 3250 - 3650 - 3660 - 6260 - 6600 - 6620 - 6630 - 6670 - 6680 - 6681 - 6682 - 7610 - 7650 - N70 - N72 - N91 - N-Gage - N-Gage QD

________________________________________________________________________________



Nokia Symbian S60 240x320 =

5320 XpressMusic - 5630 XpressMusic - 5700 XpressMusic - 6110 Navigator - 6290 - 6210 Navigator - 6220 Classic - 6710 Navigator - 6720 Classic 6650 - N71 - N73 - N75 - N76 - N77 - N78 - N79 - N81 - N82 - N85 - N86 8mp - N92 - N93 - N93i - N95 - N96 - E50 - E51 - E65 - E90

________________________________________________________________________________



Nokia Symbian S60 352x416 =

N80 - N90 - E60 - E70

________________________________________________________________________________



Nokia Symbian S60 320x240 =

E61 - E61i - E62 - E63 - E71

________________________________________________________________________________



Nokia Symbian S60 208x208 =

5500 Sport

________________________________________________________________________________


Nokia Symbian S60 800x352 =

E90 Communicator

________________________________________________________________________________


Nokia Symbian S60 640x360 =

5800 XpressMusic - N97

________________________________________________________________________________
:rolleyes:
:crying_anim02:
0

#5 L   lento 

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

Inviato 07 giugno 2009 - 14:33

Grazie 'N73 DDF' visto che devo adattare i giochi a tutti questi schermi... :rolleyes: ....ADDIO! ...me ne vado....Ho scoperto la mia vera vocazione....
Vivere nella giungla primitiva e divertirmi con un sano scambio di randellate con altri primati.

A parte gli scherzi se faccio due versioni 176x208 e 240x320 tutti gli altri sono in grado di visualizzarli (in forma ridotta ma li vedono.)
Ne terrò presente in futuro e se posso anche per il passato.

Ora capite perchè è importante segnalare errori o cose che non vanno?
Sin ora solo i posessori di cell 240x320 hanno dovuto sopportarmi.....ora posso dare il tormento a molte più persone!!. :crying_anim02:
Grazie di nuovo dell'aiuto 'N73 DDF'
0

#6 L   Nick_7 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 339
  • Iscritto: 20 novembre 2008
  • Località:Luna
  • Cellulare:Omnia HD
  • Firmware:I8910XXJB1

Inviato 07 giugno 2009 - 15:00

Sì sì se rieci a ridimensionarmelo anche per il mio 6630 mi faresti un grandissimo favore :crying_anim02:
0

#7 L   6587gianluca 

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

Inviato 07 giugno 2009 - 15:39

No "lento" non ci lasciare, ma che ci vuoi far sentir male !!!!......
Il giochino lo devo ancora provare, sono tornato da poco da lavoro ed ho dovuto combattere tutta la mattina con i tifosi facinorosi......comunque da come è scritto ci capisco ben poco ma sono sicuro che è una meraviglia...apenna ho due minuti nel pomeriggio lo metto sul cell e lo provo......sei un grande "lento"......ti ammiro....
0

#8 L   lento 

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

Inviato 07 giugno 2009 - 15:51

Visualizza MessaggiNick_7, il 07/06/2009 - 16:00, ha scritto:

Sì sì se rieci a ridimensionarmelo anche per il mio 6630 mi faresti un grandissimo favore :incazzato:

Prova questo e dimmi. Download file  sub176x208V0_1.txt (6,69K)
Numero di downloads: 15
0

#9 L   N73 DDF 

  • Advanced Member
  • PuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 236
  • Iscritto: 04 gennaio 2009
  • Località:città sant'angeloPE
  • Cellulare:Un WM
  • Firmware:6.1 professional

  Inviato 07 giugno 2009 - 16:01

Visualizza Messaggilento, il 07/06/2009 - 15:33, ha scritto:

Grazie 'N73 DDF'

:incazzato: :incazzato:
0

#10 L   6587gianluca 

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

Inviato 07 giugno 2009 - 18:33

Complimenti "lento" provato.......è una meraviglia, molto fluido, non è scattoso, si possono lanciare quanti missili si vuole e la meraviglia è che compaiono in continuazione sommergibili ed un altra cosa bellissima è che i sommergibili scorrono veramente bene.....che dire.........eccellente, come ho già detto sopra ti ammiro con sincerità. Penso che essere in grado di creare una cosa del genere è veramente gratificante. Chissà se un giorno anche io riuscirò a pensare di realizzare una cosa e portarla a fine. Io ci stò provando, ma trovo degli ostacoli non facilmente superabili, comunque leggo e rileggo tutto ciò che scrivi. Complimenti e grazie.-
0

#11 L   memoryn70 

  • Millennium Member
  • Gruppo: Developer
  • Messaggi: 2112
  • Iscritto: 02 maggio 2007
  • Cellulare:Nokia N70
  • Firmware:5.0609.2.0.1

Inviato 07 giugno 2009 - 19:49

Molto carino :)
0

#12 L   lento 

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

Inviato 07 giugno 2009 - 20:29

Visualizza Messaggi6587gianluca, il 07/06/2009 - 19:33, ha scritto:

Complimenti "lento" provato.......è una meraviglia, molto fluido, non è scattoso, si possono lanciare quanti missili si vuole e la meraviglia è che compaiono in continuazione sommergibili ed un altra cosa bellissima è che i sommergibili scorrono veramente bene.....che dire.........eccellente, come ho già detto sopra ti ammiro con sincerità. Penso che essere in grado di creare una cosa del genere è veramente gratificante. Chissà se un giorno anche io riuscirò a pensare di realizzare una cosa e portarla a fine. Io ci stò provando, ma trovo degli ostacoli non facilmente superabili, comunque leggo e rileggo tutto ciò che scrivi. Complimenti e grazie.-

E che problema cè........ Facci sa pè cosa non hai capito e vedemo che se pò fa! quello che manca in questa parte del forum è un interscambio di informazioni....

Anche di cose minime....tipo: Mi sono accorto che il ciclo :
for c=0 to 0 do
   print c;
end;
print"fine ciclo"; print c;
> 0
> fine ciclo
> 1

esegue almeno una volta il suo contenuto anche se c è già uguale a 0......e che la print c; dopo il ciclo mi stampa 1 come mai?

Se 'Nick_7' non mi avvisava del problema schermo 176x208 'lento' come sono come potevo accorgermene?

Non sò gli altri ma io imparo molto da piccoli esempi e non ho da difendere reputazioni tipo... SuperMago del compiuter....
mi diverto...a grufolare :) tra i sorgenti e sbagliando imparo.

Perciò Animo! spara la domanda?

Messaggio modificato da lento il 07 giugno 2009 - 22:12

0

#13 L   6587gianluca 

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

Inviato 07 giugno 2009 - 21:06

Visualizza Messaggilento, il 07/06/2009 - 21:29, ha scritto:

E che problema cè........ Facci sa pè cosa non hai capito e vedemo che se pò fa! quello che manca in questa parte del forum è un interscambio di informazioni....

Perciò Animo! spara la domanda?


Allora, cominciamo a sparà domande !!!, io capisco poco ma il mio alter meno di me, ecco l'ha detta grossa, non capisce un ca...volo e dà la colpa a me...comunque vabbè..

bomby=[0,0,0,0,0,0,0,0,0,0,0]; // coordinate profondità bomba
bombx=[0,0,0,0,0,0,0,0,0,0,0]; // coordinate lato corto schermo x bombe

Che cosa sono gli zeri nelle parentesi quadre ???
Perchè ci sono 11 zeri ???? Ce ne potrebbero anche essere di meno o di più ????

La funzione collisioni non poteva essere gestita effettuando il controllo dei colori come nel caso di westernsoda, cioè se il colore della bomba è differente da cyan vuol dire che ha incontrato un sotomarino ??? Oppure no ??? Sai perchè ti dico ciò perchè la gestione così come fatta per westernsoda l'ho capita, il controllo che effettui con co e cu non sono riuscito a capirla.
Ora basta sennò ti ci manda !!!!!

Un altra domanda "lento", tu nel sorgente scrivi :
function bombfuori()
//----------------------
// verifica se delle bombe sono fuori schermo in tal caso
// le toglie dal vettore e lo riordina e aggiorna nbombe
nume=0;
for co=1 to .nbombe do // verifica se fuori schermo
if .bomby[co]<220 then
nume=nume+1; .bombx[nume]=.bombx[co]; .bomby[nume]=.bomby[co];
end;
end;
.nbombe=nume;
end;


....allora mi chiedo .bomby[co], che valore assume, cioè che cosa è il valore chiuso nelle parentesi quandre ? a cosa serve ????
tu scrivi se .bomby[co]<220, quindi .bomby[co] è un numero....ma che numero assume ?????
Quanto appena domandato vale anche per .bombx[nume]=.bombx[co]; .bomby[nume]=.bomby[co];...
scusa "lento", lo so che sono molto indietro, ma senza le mie domande e senza il tuo aiuto continuerei a rimanere indietro.....grazie.-

Messaggio modificato da 6587gianluca il 08 giugno 2009 - 20:40

0

#14 L   Nick_7 

  • Senior Member
  • PuntoPuntoPuntoPuntoPunto
  • Gruppo: Utente
  • Messaggi: 339
  • Iscritto: 20 novembre 2008
  • Località:Luna
  • Cellulare:Omnia HD
  • Firmware:I8910XXJB1

Inviato 08 giugno 2009 - 12:31

grazie lento ora la risoluzione é perfetta
0

#15 L   lento 

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

Inviato 08 giugno 2009 - 21:16

Visualizza Messaggimemoryn70, il 07/06/2009 - 20:49, ha scritto:

Molto carino :crying_anim02:

Anche il tuo cel. è un 176x208? se così WesternSoda e Tank non hai potuto provarli?... manco MarioBros?...

Qualche consiglio?.....Tieni presente che sono volutamente incompleti....con l'intento didattico...
0

#16 L   6587gianluca 

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

Inviato 09 giugno 2009 - 14:51

Visualizza Messaggi6587gianluca, il 07/06/2009 - 22:06, ha scritto:

Allora, cominciamo a sparà domande !!!, io capisco poco ma il mio alter meno di me, ecco l'ha detta grossa, non capisce un ca...volo e dà la colpa a me...comunque vabbè..

bomby=[0,0,0,0,0,0,0,0,0,0,0]; // coordinate profondità bomba
bombx=[0,0,0,0,0,0,0,0,0,0,0]; // coordinate lato corto schermo x bombe

Che cosa sono gli zeri nelle parentesi quadre ???
Perchè ci sono 11 zeri ???? Ce ne potrebbero anche essere di meno o di più ????

La funzione collisioni non poteva essere gestita effettuando il controllo dei colori come nel caso di westernsoda, cioè se il colore della bomba è differente da cyan vuol dire che ha incontrato un sotomarino ??? Oppure no ??? Sai perchè ti dico ciò perchè la gestione così come fatta per westernsoda l'ho capita, il controllo che effettui con co e cu non sono riuscito a capirla.
Ora basta sennò ti ci manda !!!!!

Un altra domanda "lento", tu nel sorgente scrivi :
function bombfuori()
//----------------------
// verifica se delle bombe sono fuori schermo in tal caso
// le toglie dal vettore e lo riordina e aggiorna nbombe
nume=0;
for co=1 to .nbombe do // verifica se fuori schermo
if .bomby[co]<220 then
nume=nume+1; .bombx[nume]=.bombx[co]; .bomby[nume]=.bomby[co];
end;
end;
.nbombe=nume;
end;


....allora mi chiedo .bomby[co], che valore assume, cioè che cosa è il valore chiuso nelle parentesi quandre ? a cosa serve ????
tu scrivi se .bomby[co]<220, quindi .bomby[co] è un numero....ma che numero assume ?????
Quanto appena domandato vale anche per .bombx[nume]=.bombx[co]; .bomby[nume]=.bomby[co];...
scusa "lento", lo so che sono molto indietro, ma senza le mie domande e senza il tuo aiuto continuerei a rimanere indietro.....grazie.-



Te l'ho detto Giallù,.....hai fatto troppe domande e mo t'attacchi !!!!!!!!!!!!
0

#17 L   lento 

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

Inviato 09 giugno 2009 - 19:37

Visualizza Messaggi6587gianluca, il 09/06/2009 - 15:51, ha scritto:

Te l'ho detto Giallù,.....hai fatto troppe domande e mo t'attacchi !!!!!!!!!!!!

'6587gianluca' Porta pazienza....Ricordati che se va bene....ho tempo Sabato e Domenica.

Riprendendo un precedente motto! A grande richiesta di popolo!: Gli Array.
Vi ricordate la mia visione onirica delle variabili a questo post:
Per visualizzare questo link registrati o esegui il log in.


Qui riporto l'immagine della memoria da ingrandire cliccandoci sopra.Download file  mem1.png (15,33K)
Numero di downloads: 7 Le variabili dovreste conoscerle.....

saluto="HELLO" in questo modo abbiamo assegnato alla variabile saluto un valore sotto forma di stringa che mShell memorizza nella memoria del computer come già spiegato.

Spostandoci a ritroso nel tempo....quando l'uomo viveva nelle caverne...si programmavano i computer :thumbs: con l'unico linguaggio noto "Il linguaggio macchina" dove praticamente il programmatore doveva arrangiarsi a far tutto. Per mettere in memoria la parola "HELLO" doveva dire al computer... prendi la lettera H ponila alla locazione di memoria 0807 poi prendi la lettera E poi ponila nella locazione di memoria 0808 e cosi via fino all'ultima lettera.

Noi abbiamo la fortuna che tutto questo lo fa mShell con il comando:saluto="HELLO"; manco ci accorgiamo che deve prendere una lettera per volta e depositarla in memoria!.
La stessa cosa avviene con il comando print saluto; che stamperà a video:
> HELLO

L'omino preistorico non l'aveva il comando print e doveva dire al processore del computer..prendi la lettera H alla locazione di memoria 0807 e depositala nella memoria video poi prendi la lettera E alla locazione 0808 e depositala nella memoria video vicino alla H ecc.. ecc..

print saluto; manco ce ne accorgiamo che in realtà mShell prende una lettera per volta e le mette in fila sullo schermo! Fa proprio così.
Siamo fortunati! pensa a tutto mShell! è vero ma non del tutto....

Il nostro antenato informatico a volte si divertiva a fare cose del genere...
Prendeva l'ultima lettera della parola HELLO e la stampava a video poi prendeva la penultima e la stampava a video e continuava così finché non terminava la stringa.
Cosa si vedeva sullo schermo?? Questo!
> OLLEH
Altre volte si divertiva a prendere le due maiuscole "LL" e le sostituiva con le minuscole "ll" e stampava il tutto
> HEllO
Altre volte con stringhe tipo "ottima giornata oggi" si divertiva a contare quante "o" ci sono nella stringa e altre volte le sostituiva con delle "u" e stampava...
uttima giurnata uggi.

E' così non vale! lui va a mettere le mani nella memoria del computer e noi non lo possiamo fare! mShell ci semplifica la vita da una parte e ci stoppa da un altra!

Questo è un problema che tutti i linguaggi di programmazione nati per semplificare la vita hanno dovuto affrontare.
MShell per permetterci di andare a modificare le singole caselle di memoria usa una variabile speciale chiamata Array.
Che cosa ha di diverso Array da una semplice variabile? questo:
saluto="HELLO"; <-----variabile normale
saluto=['H','E','L','L','O']; <------array

Praticamente racchiudendo tra parentesi quadre [] la parola HELLO e separando le singole lettere con la virgola avvisiamo mShell che da adesso in poi la variabile saluto deve avere la capacità di accedere alle singole lettere e non le deve più vedere come una stringa unica.

Perfetto! e mò come faccio a stampare la 'E' a video?
Eggià come facciamo? non posso dire a mShell dammi la lettera che hai messo alla locazione di memoria 0808 ? anche perché non sò dove diavolo là messa nella memoria?.

Ho fatto sta domanda a mShell e sapete cosa mi ha risposto? (Oddio ora parlo pure con i programmi!)
Facciamo così: tu mi dici che variabile ti interessa, saluto poi conti le lettere da sinistra verso destra partendo col numero 0 e mi dici a che numero corrisponde
la lettera che vuoi, metti il numero tra parentesi quadre appiccicato alla variabile e io te la dò Va bene...

Allora....
saluto=['H','E','L','L','O'];
Allora la E è al numero 1 ok!...
print saluto[1];
> E
Funziona!!!
Allora basta che ti scriva il nome della variabile ( tra parentesi quadre) a quale numero di casella mi riferisco e tu puoi rendermela o modificarla giusto?
Giusto!.
Perciò per invertire la scritta basta fare così:
saluto=['H','E','L','L','O'];
print saluto[4] + saluto[3] + saluto[2] + saluto[1] + saluto[0];
> OLLEH
// oppure
print saluto[4]; print saluto[3]; print saluto[2]; print saluto[1]; print saluto[0];
> O
> L
> L
> E
> H
// oppure
for c=4 to 0 by -1 do
print saluto[c];
end;
> O
> L
> L
> E
> H
Perciò posso anche alterare le singole lettere in questo modo:
saluto=['H','E','L','L','O'];
saluto[2]='l';
saluto[3]='l';

print saluto[0] + saluto[1] + saluto[2] + saluto[3] + saluto[4];
> HEllO

Allora se voglio contare le 'o' e sostituirle con le u basta fare..attenzione questa volta l'array ha un numero maggiore di caselle 20 (0-19)
frase=['o','t','t','i','m','a',' ','g','i','o','r','n','a','t','a',' ','o','g','g','i']
ndio=0;
nuovafrase="";

for c=0 to len(frase)-1 do
  if frase[c]='o' then ndio=ndio+1; frase[c]='u';  end;
  nuovafrase=nuovafrase + frase[c];
end;

print " ci sono ", ndio, " lettere o";
print nuovafrase;

>  ci sono 3 lettere o
> uttima giurnata uggi

Come vedi gli Array possono avere lunghezza di caselle differente e ci sono vari modi per determinare quante caselle debba avere.
Il più semplice e tramite l'assegnazione letterale (E' quella che ai visto sin ora.)
Praticamente nel creare l'Array determini anche quante caselle ha.
Durante l'uso si può aggiungere altre caselle con il comando append
E tramite la libreria Array manipolarli in modo più complesso.
Vabbè ma è tutta qua ste grande vantaggio degli array??? se voglio faccio la stessa cosa con substr() index() ....
Bravo! prova allora ad invertirmi questo....
numeri=[0,1,2,3,4,5,6,7,8,9,128];
Eggià perché gli Array possono fare quello che si fa sulle lettere anche con i numeri.
Non Solo...
Un altro nome utilizzato per gli Array è variabile indicizzata.....Immaginate di avere una serie di nomi di vostri amici.

Mario
Piero
Valerio
Paolo
Saverio
Luca
Gino
Antonio
Matteo

su questa serie di nomi volete compiere varie operazioni tipo:
stampare la lista cosi come è poi in senso inverso poi stamparne uno si uno nò ecc.
Se ogni nome fosse associato ad una variabile per fare quanto qui esposto vi servirebbero molte pagine di codice. Ma se lo vediamo come un Array....

0 Mario
1 Piero
2 Valerio
3 Paolo
4 Saverio
5 Luca
6 Gino
7 Antonio
8 Matteo

Si chiama anche variabile indicizzata perchè è come se ogni nome abbia un indice numerico, per stamapre l'elenco basta fare così.
amici=["Mario","Piero","Valerio","Paolo","Saverio","Luca","Gino","Antonio","Matteo"];

for c=0 to 8 do
 print amici[c];
end;

> Mario
> Piero
> Valerio
> Paolo
> Saverio
> Luca
> Gino
> Antonio
> Matteo

per stamparla in inverso così.
amici=["Mario","Piero","Valerio","Paolo","Saverio","Luca","Gino","Antonio","Matteo"];

for c=8 to 0 by -1 do
 print amici[c];
end;

> Matteo
> Antonio
> Gino
> Luca
> Saverio
> Paolo
> Valerio
> Piero
> Mario

Così stampa solo i nomi pari.
amici=["Mario","Piero","Valerio","Paolo","Saverio","Luca","Gino","Antonio","Matteo"];

for c=0 to 8 do
 if c%2=0 then print amici[c]; else print; end;
end;

> Matteo
> 
> Valerio
> 
> Saverio
> 
> Gino
> 
> Matteo

Più in là vedrete che con gli Array potrete ordinare alfabeticamente questi nomi cosa praticamente quasi impossibile con le sole variabili semplici.

Avete notato che stavolta l'Array amici[] non contiene una lettera sola ma addirittura una stringa?
ecchelelà lo sapevo lento se rintronato!!
In parte è vero nel tentativo di farvela semplice ho barato un pochino...
Più in là vedrete che gli Array possono contenere non solo sequenze congrue di numeri o di lettere ma si può mescolare stringhe e numeri e le singole caselle possono contenere altri Array e funzioni ecc.

Quando un Array contiene altri Array (e solo Array) li si chiama matrici o Array a più dimensioni.

In submarine per memorizzare le immagini si è fatto uso di un Array a più dimensioni.
Per ora conviene fermarsi qui e prendere confidenza con quelli più semplici.

Spero di potervi postare dei semplici esempi come qui riportato per prender pratica nel loro uso.
0

#18 L   lento 

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

Inviato 09 giugno 2009 - 21:17

Visualizza Messaggi6587gianluca, il 07/06/2009 - 22:06, ha scritto:

La funzione collisioni non poteva essere gestita effettuando il controllo dei colori come nel caso di westernsoda, cioè se il colore della bomba è differente da cyan vuol dire che ha incontrato un sotomarino ??? Oppure no ??? Sai perchè ti dico ciò perchè la gestione così come fatta per westernsoda l'ho capita, il controllo che effettui con co e cu non sono riuscito a capirla.


No. qui non si può sfruttare quella tecnica per il semplice motivo che la nave si sposta avanti e indietro ed anche i sommergibili si posizionano casualmente.
Perciò col sistemma della lettura del colore puoi sapere se una bomba ha colpito un sommergibile ma non puoi sapere che sommergibile ai colpito?.

l'unico sistema è conoscere istante per istante tutte le coordinate x e y sia delle bombe che dei sottomarini e applicando la tecnica già sfruttata in altri giochi
verificare se il rettangolo che racchiude il sottomarino si svrappone a quello della bomba.
0

#19 L   lento 

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

Inviato 09 giugno 2009 - 21:40

Visualizza Messaggi6587gianluca, il 07/06/2009 - 22:06, ha scritto:

bomby=[0,0,0,0,0,0,0,0,0,0,0]; // coordinate profondità bomba
bombx=[0,0,0,0,0,0,0,0,0,0,0]; // coordinate lato corto schermo x bombe

Che cosa sono gli zeri nelle parentesi quadre ???
Perchè ci sono 11 zeri ???? Ce ne potrebbero anche essere di meno o di più ????


Sopra ti ho dato un idea degli array ad una dimensione che sono quelli qui utilizzati e appena prima ti ho spiegato che devo poter conoscere le coordinate
x e y sia delle bombe che dei sommergibili.

In questo caso bombx e bomby sono due array composti da 11 caselle numerate da 0 a 10 nel crearle le ho anche impostate con tutti valori uguali a zero.(è solo una comodità per dire che mi serve un array numerico.)
Le bombe previste sono 10 mentre considero 11 caselle perchè la prima,
quella che userebbe lo 0 non la utilizzo per facilitarvi la comprensione dei cicli for.....to...do.

print bomby[2], bombx[2]
15 40
<----indica a che coordinate stampo l'immagine della bomba idem per incrementare la profondita per fare scendere la bomba devo incrementare bomby[2] in questo modo:
bomby[2]=bomby[2] +1;
questa operazione va ripetuta per tutte le bombe attualmente presenti sul video il cui numero è contenuto nella variabile nbombe
Se fossero presenti 6 bombe a schermo nbombe sarebbe uguale a 6 perciò per far avanzare tutte e sei le bombe di 1 pixel basta fare così:
for c=1 to nbombe do
  bomby[c]=bomby[c] +1;
end;


il resto te lo spiego appena posso......Se ci riesco Domenica ti posto Snake è molto facile e vi permetterà di trasformarlo in tantissimi altri giochi.
0

#20 L   6587gianluca 

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

Inviato 10 giugno 2009 - 07:39

Non ho parole "lento", .....che posso dire....grazie mille.
0

Condividi questa discussione:


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