Nokioteca [Nokia] Forum: Divertiamoci A Creare Pacman - Nokioteca [Nokia] Forum

Salta al contenuto

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

Divertiamoci A Creare Pacman Per tutti belli e brutti.....

#1 L   lento 

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

Inviato 03 febbraio 2010 - 15:36

Poteva mancare Pacman in mShell? Cerrto che poteva mancare!.
Mi dispiace deludervi in questa prima fase, ma devo spiegare di che cosa si tratta:
In varie riprese tenterò si spiegare passo-passo come realizzare il gioco con l'intento di rendere tutti capaci di scriverlo,
capirne la logica, modificarlo e perchè no! Divertirsi a giocare . :thumbs:

Per evitare delusioni premetto che chi scrive (sulla scala evolutiva) corrisponde ad un zoticone dell'informatica.
Perciò non prendetevela con mè ma con chi è capace di scrivere programmi migliori ma se ne stà per i fattacci suoi.

Detto questo devo rimandare la prima parte a domenica....
0

#2 L   6587gianluca 

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

Inviato 03 febbraio 2010 - 17:49

Visualizza Messaggilento, il 03/02/2010 - 15:36, ha scritto:

Detto questo devo rimandare la prima parte a domenica....


Ciao lento, come al solito hai sempre delle idee che stimolano molto, pac man è veramente una "cosina" particolare e che solo tu potresti realizzare.
Io lo so, tu dici che lo vorresti realizzare ma nel tuo cervello già funziona perfettamente....e per te trasportare un'idea dal cervello ad mShell è un gioco da ragazzi.
Dai, continua cosi, che sei un grande.
Ciao.-
0

#3 L   lento 

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

Inviato 07 febbraio 2010 - 16:26

Come promesso...ecchime!
Devo ammettere che stavolta lo sparata grossa! Pensavo fosse un pochetto più facile ste giochino......
Comunque per ora vi posto il programma e il suo modulo.
Non spaventatevi!! (lo sò lo sò è scritto male) ma sinceramente col poco tempo a mia disposizione non sono riuscito a raffinare più di così le mie idee caotiche. (per ora!.)
Download file  pacman01.txt (5,52K)
Numero di downloads: 30 da rinominare in pacman01.m
e il modulo Download file  pacd01.txt (13,1K)
Numero di downloads: 24 Da rinominare in pacd.mm
(Piu in là nella discussione ora trovate la versione completa..e forse ancora più in là le migliorie.)
Attenzione! servono tutti e due i programmi per far funzionare il gioco!. quindi scaricate sia: pacman01.txt che pacd01.txt.
Lo scopo era di scrivere un programmino che potessero provare tutti.
Per far questo ho utilizzato la risoluzione di schermo 176x208 che garantisce a tutti di visualizzare
il gioco e giocarci.
Allego immagine
Download file  pac.png (1,48K)
Numero di downloads: 5
Come si vede in alto a sinistra cè il contatore dei punti al centro il livello del gioco e a destra le vite di pacman.
Ci sono pure le pillole che valgono 5 punti Lento il solito tirchio!
i semini valgono 1 punto
I frutti che saranno casuali al centro schermo valgono 20 punti.
I fantasmini mangiati varranno 20 il primo 40 il secondo 80 il terzo 160 il quarto.

Per rendere uguale a tutti i cellulari il gioco anche i numeri sono ottenuti da immagini.
Il tutto può essere inglobato in un unico programma oppure tenerlo in due parti come qui
riportato.
In qualsiasi caso chiunque può giocarci (non si richiedono permessi speciali)
Quindi se qualcuno vuol farsi un xxx.sis da dare ad amici può farlo senza obbligarli a fare
registrazioni o attivazioni di permessi.
Così pure l'uso delle directory è limitato a quelle previste dalla Nokia (quindi nessun rischio!.)

Pacman lo si comanda con il tasto del Joystick (su-giu-destra sinistra).
Premendo il tasto 0 o "q" (per quelli della tastiera alfanumerica tipo E71) termina il gioco.
(Per ora in modo brutale!).

Il gioco non è completo attualmente potete far girovagare pacman che si mangia tutto quello che trova
sullo scenari. (i fantasmini per ora non danno punti.).
Quando avete mangiato tutto termina il programma.

Le spiegazioni del funzionamento in seguito.

Per ora voglio solo dire che:
Tutto lo scenario è modificabile con estrema facilità da chiunque.
L'immagine grafica è ottenuta da tante piastrelline accostate una al'altra.
Queste piastrelline riportano il disegno di:
1) la piastrellina del muro.
2) la piastrellina dei fantasmi
3) la piastrellina dei semini
4) la piastrellina delle pillole
5) la piastrellina dei frutti
ecc.ecc.
Anche questi colori e disegni sono modificabili con estrema facilità.
Ognuno potra crearsi la scena e i personaggi che vuole.

E' previsto di poter ingrandire le piastrelline (ora 10x10 pixel) direttamente dal programma
in modo da avere una scena più accettabile su schermi più grandi.
(Anche se personalmente ritengo migliore il riscriversela per il proprio schermo.)
Riscriverla è semplice basta aumentare le righe e colonne di quello che io chiamo pagina
a quadretti. (mentre per ora è previsto di ingrandire le piastrelline vedi funzione in pacd.mm)
Come vedrete il programma principale pacman.m ed anche il modulo ragiona sempre in righe e colonne
semplificando le difficoltà di ragionare in pixel di varie dimensioni e gli errori che comportano.

Per ora mi fermo non voglio annoiarvi più di tanto.
Hoooo! Hoooo! era ora!

Ha dimenticavo La logica della pagina a quadretti (Ne parleremo più in là) permette di creare
un infinità di giochi semplici o complessi chiedetelo ad Alter......
Lui passa giornate intere a disegnare su fogli a quadretti....

Messaggio modificato da lento il 10 febbraio 2010 - 20:58

0

#4 L   6587gianluca 

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

Inviato 08 febbraio 2010 - 08:50

Visualizza Messaggilento, il 07/02/2010 - 16:26, ha scritto:

Come promesso...ecchime!
Devo ammettere che stavolta lo sparata grossa! Pensavo fosse un pochetto più facile ste giochino......
Comunque per ora vi posto il programma e il suo modulo.


Ciao lento, lo devo ancora provare........però devo dire che non ho parole per complimentarmi con te e con il tuo alter che passa giuornate a disegnare sui fogli, la spiegazione è impeccabile. Nel pomeriggio lo provo e poi sicuramente continuerò a riempirti di complimenti.
Ciao e grazie per l'ennesima volta.-
0

#5 L   lento 

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

Inviato 08 febbraio 2010 - 23:31

Visualizza Messaggi6587gianluca, il 08/02/2010 - 08:50, ha scritto:

Ciao lento, lo devo ancora provare........però devo dire che non ho parole per complimentarmi con te e con il tuo alter che passa giuornate a disegnare sui fogli, la spiegazione è impeccabile. Nel pomeriggio lo provo e poi sicuramente continuerò a riempirti di complimenti.
Ciao e grazie per l'ennesima volta.-

Attenzione! il gioco non è ancora completo!.
Devo aggiungere la logica di movimento dei fantasmini e (se riesci amangiarti tutti i semini) il passaggio a successivi livelli.
(E magari anche qualche bib! bib!).

Più che altro fatemi sapere se è troppo lento sui vostri cell. Io lò provato solo su un E71 (che di sicuro non è lento!).

Messaggio modificato da lento il 08 febbraio 2010 - 23:31

0

#6 L   lento 

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

Inviato 08 febbraio 2010 - 23:45

Dimenticavo.....Se qualcuno vuol partecipare ridisegnando le piastrelline sarò ben lieto di metterle nel programma.
Chesso! magari ridisegnando i numeri oppure la piastrellina del muro! quello che più vi aggrada,
Se non sapete dove metter mano per modificare quelle piastrelline portate pazienza ne parleremo domenica....

L'invito vale anche a eventuali programmatori...se ci date una mano a sgarbugliare il programma sembre ben lieto di aggiungere....
Anche se non vi considerate sufficientemente esperti per modificare la logica, potreste trovare dei nomi di variabili un pò più incisivi di quelli che ho utilizzato chesso! al posto di pacri e pacco....qualcosa che renda meglio la loro funzione...( preferibilmente nomi concisi.)
0

#7 L   6587gianluca 

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

Inviato 09 febbraio 2010 - 08:24

Visualizza Messaggilento, il 08/02/2010 - 23:31, ha scritto:

Più che altro fatemi sapere se è troppo lento sui vostri cell. Io lò provato solo su un E71 (che di sicuro non è lento!).


Ciao, l'ho provato anche io sull'E71 e devo dire che la velocità iniziale è giusta, poi eventualmente man mano che si va avanti con i quadri si potrebbe incrementare di poco in poco; il gioco è carino e sinceramente mi sono stampati i sorgenti e devo dire la verità .....non ci ho capito niente.............comunque complimenti, sei veramente forte.
0

#8 L   masmil1988 

  • Millennium Member
  • Gruppo: Developer
  • Messaggi: 1576
  • Iscritto: 03 dicembre 2005
  • Località:Alcamo (TP)
  • Cellulare:Nokia 5800
  • Firmware:51.0.006

Inviato 10 febbraio 2010 - 00:14

Oilà lento, sto provando il gioco :wub:
Dallo screenshot però pare già molto bello :)

Mi dispiace soltanto di non aver potuto contribuire, ma ho dato due esami tra la settimana scorsa e questa e quindi puoi capire il perchè della mia assenza (cosa che in questo periodo dell'anno purtroppo c'è sempre).
Ho ancora altri due esami da sostenere e spero vadano bene come i primi due, e poi finalmente si torna un po' a programmare per divertimento! :wub:

Provo il gioco :wub:
0

#9 L   lento 

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

Inviato 10 febbraio 2010 - 18:40

Visualizza Messaggimasmil1988, il 10/02/2010 - 00:14, ha scritto:


Mi raccomando non spaventarti per come è scritto...io non sono un programmatore! :thumbs:
0

#10 L   lento 

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

Inviato 10 febbraio 2010 - 18:56

A Riecchime!
Ora il giochino è giocabile...vanno ancora sistemate alcune cosine....
Ecco la nuova versione:
Download file  pacman02.txt (13,59K)
Numero di downloads: 21
Download file  pacd02.txt (13,54K)
Numero di downloads: 19
I punti più salienti sono:
1) Sostituiti i tasti 0 e "q" per uscire si usa il tasto centrale del Joystick (che tutti i cellulari hanno anche quelli senza tastiera.)
2) Aggiunta la capacità di muoversi ai fantasmini ora vi inseguono è alla grande! ^_^ .
La loro velocità aumenta con i livelli.
Date le ridotte dimensioni dello schermo mi sono limitato a 3 fantasmini.
Quando pac mangia la pillola scappano sempre alla grande!
I fantasmini non sono in grado di valicare la porta.

3) Se li mangi una specie di suono ( a voi migliorare i suoni) abbellisce il tutto idem se loro ti mangiano!.
4) Ora anche i frutti appaiono in un luogo fisso e in modo casuale rimangono per un certo tempo poi scompaiono.
6) Attivata la possibilità di passare a livelli gioco superiori.
Compresa la possibilità di cambiare completamente il disegno del labirinto per ogni livello.
(Questo lo consiglio, dato che mShell e il mio programma non potranno mai essere estremamente veloci conviene puntare di più sul labirinto e ventualmente sul'aumento dei fantasmini.)
Sinceramente non ho avuto tempo per creare scenari...


Per la programmazione ho applicato il metodo....Una toppa quì..... :lol: Unatoppa là.... :P
Detto anche metodo Alter....Toppa Down.

Non spaventatevi per la possibile presenza di variabili inutili,ridondanti e algoritmi da capogiro.. :wacko:
eventuali ragnatele su certe funzioni inutilizzate ecc.. ecc..

Ma comunque quando giochi qualcosa si muove! Miracolo!!! :thumbs:
E la mia posizione (in fondo al barile) mi rende invulnerabile a qualsiasi critica :shifty:

Purtroppo i miei clienti hanno riaperto lo strappo spaziotemporale... e j2me sta tentando di risucchiarmi.....Aiutoooo! :o
Mannaggia,Sto Lento.... più lo spingo giù nel vortice spazio temporale più me ritorna sù!....e datemi na mano! che forse ce ne liberiamo! :thumbs:

Messaggio modificato da lento il 11 febbraio 2010 - 20:53

0

#11 L   Nick_7 

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

Inviato 10 febbraio 2010 - 19:08

Wow è incredibile cosa si riesce a fare con questo stupendo linguaggio di programmazione! :thumbs: Anche se ho il touch screen lo posso comunque provare con il tastierino virtuale :shifty: Io non riuscirei a fare qualcosa del genere neanche a pagarmi... :thumbs:

Messaggio modificato da Nick_7 il 10 febbraio 2010 - 19:10

0

#12 L   lento 

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

Inviato 13 febbraio 2010 - 15:31

Visualizza MessaggiNick_7, il 10/02/2010 - 19:08, ha scritto:

Io non riuscirei a fare qualcosa del genere neanche a pagarmi...

He! He! He! Nick! ci sei cascato! :mumble:
Quando ritieni il programma troppo complesso per tè dimentichi che io sono uno sprogrammatore!

( Sprogrammatore: termine indicante personaggio incapace di programmare che però si cimenta nella realizzazione di programmi estremamente complessi, capace di creare sorgenti caotici e dalla parvenza utile. Mettendo a dura prova la pazienza e le menti dei più esperti. )

Ed a quanto pare sono riuscito a farti sembrare estremamente complesso ste programma!.

Ora guarda questo stralcio e poi dimmi:
g.size(176,208); // imposto dimensione schermo grafico
g.full(true);	// a tutto schermo
ui.keys(false); // attivo lettura eventi tastiera non bloccante (non legge pressione e rilascio)
NuovoRound(0); // predispone tutto per il primo round
do

  do
	// leggo eventi di tastiera ogni 8 millisecondi e se il tasto muove pac
	//  ne tiene memoria per quando pac esce dalla fase di attesa.
	tasto=TastoPac(ui.cmd(8)); 
	if PacAction() then Collisione(); end;  // e' ora di dar vita a pac? ce' una collisione?
	if FantaAction() then Collisione(); end; // e' ora di muovere fantasmini? ce' collisione?
	Fruttolo();   // verifica azioni sul frutto
  until tasto=ui.gokey or nsemi=1 or nvitepac<0;

  if nsemi=1 then  NuovoRound(livello+1);  end;   // si riparte a livello superiore!
until tasto=ui.gokey  or nvitepac<0;	// esco se premuto gokey

Che ha di difficile?

Esiste un ciclo interno do ...until che fa quanto indicato nei commenti:
Detta in parole povere:
Impostato lo schermo grafico,
Disegno e imposto tutte le variabili globali inizia il gioco: NuovoRound(0);
Poi comincio un ciclo di ripetizioni delle funzioni:

TastoPac()
PacAction()
Collisione()
FantaAction()
Collisione()
Fruttolo()

Finché non premi il tasto centrale del joytick o pac non ha più vite o hai mangiato tutti i semi.

Quello che fanno le sopra citate funzioni mi sembra chiaro?
TastoPac() controlla se si sta premendo un tasto e se è valido se ne ricorda.

PacAction() Cosa vuoi che faccia?
Decrementa il contatore che lo tiene in pausa di uno se il tempo di pausa è scaduto
si muove in base al'ultimo tasto valido che hai premuto e che TastoPac() ha avuto l'accortezza di
ricordarselo.
Pac tenterà di muoversi in su giù destra sinistra sempre PacAction()
verificha se può muoversi e che cosa succede
1) se dove deve andare cè un muro non si muove.
2) se ce' un semino lo mangia e accumula punti.
3) se ce' una pillola accumula punti e parte il contatore di fantasma spaventato
4) se è una porta rientra dalla parte opposta
5) se ce' un fantasma questa verifica non viene fatta ci penserà la funzione che viene dopo Collisione()
6) Se ce' un frutto se lo mangia e prende punti
7) se è una piastrellina vuota semplicemente ci si sposta sopra.
PacAction() rende vero o falso vero vuol dire che pac ha agito falso vuol dire che pac è in pausa e attende che termini il tempo di attesa.

Collisione() si attiva solo se PacAction() rende true.
Verifica se ce' stata una collisione tra pac e i fantasmini e in base allo stato agisce di conseguenza.

FantaAction() si comporta come PacAction() ma riferita ai fantasmini.
Al suo interno una funzione decide in che direzione si dovranno muovere a seconda del loro stato
Paura o Aggressivi.
Anche i fantasmini hanno un ciclo di ritardo che diventa sempre più breve col salire dei livelli.
se i fantasmini si son mossi si esegue di nuovo Collisione() essendo lo scenario cambiato.

Fruttolo() si interessa di far apparire ad un tempo casuale il frutto, lo tiene visibile
per un certo tempo poi lo toglie.
E ricomincia da capo con un tempo di attesa prima di far apparire di nuovo il frutto.

Il ciclo ripetitivo più esterno verifica se terminare o passarti al livello superiore.
do
hai mangiato tutti i semi? passa al livello successivo NuovoRound(N.livello);
until

Ora partendo da qui, se analizzi il contenuto delle singole funzioni sopra citate
( e magari mi dai una mano a sistemarle) vedrai che non è poi tanto difficile ste programmino...

Premetto che non ho copiato da nessun sorgente l'o immaginato e scritto da zero.
Per questo è ancora caotico.
Un programmatore serio applica il Top Down perchè in mente (o per esperienza precedente ) ha già
tutta la logica del gioco.

A volte è più divertente buttarsi alla cieca in vaghe idee e cercare di sgarbugliarle poi.
Tieni presente che facendo così puoi finire in un vicolo cieco e dover rifare tutto.
Ma a volte ti vengono in mente idee nuove....... :mumble:
0

#13 L   Nick_7 

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

Inviato 13 febbraio 2010 - 18:33

Effettivamente non è poi così impossibile... :P grazie mille per la spiegazione ^_^
Purtroppo non possiedo più il mio vecchio 6630 altrimenti mi metterei subito a fare delle modifiche da sprogrammatore... ;)
p.s.: appena posso faccio un bel rosone e lo posto :D
Grazie ancora e a presto! :angel:
0

#14 L   lento 

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

Inviato 13 febbraio 2010 - 19:25

Visualizza MessaggiNick_7, il 13/02/2010 - 18:33, ha scritto:

p.s.: appena posso faccio un bel rosone e lo posto ;)
Grazie ancora e a presto! :ph34r:

HUrca! B) stai usando turtle! B)
Sono veramente felice che apprezzi la logica della tartarughina!...Per giunta stai sfruttando tutto l'enorme schermo che ti ritrovi!

E le possibilità geometriche che puoi realizzare sono veramente notevoli!.
Alter ne sarà felicissimo......è stato lui ad insistere per quel programma.......
0

#15 L   lento 

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

Inviato 14 febbraio 2010 - 18:27

Ultima Spiegazione:
Per chi vuole divertirsi a modificare scenari e personaggi senza conoscere un tubo della programmazione.
Nel file "pacd.mm" sono contenuti tutti i disegni necessari a creare il gioco.
Partiamo da quella che è l'anima del gioco:
Lo scenario.
In questa immagine ho rappresentato come su in foglio a quadretti parte della scena da me realizzata e che magari vorreste modificare, o aggiungere scenari diversi per ogni livello.
Download file  Labirinto.png (7,38K)
Numero di downloads: 5 Ingrandire cliccandoci sopra Please!
Come vedete lo scenario è composto da 17 colonne e 19 righe.
Se non sapete programmare non modificate questi due valori (tenetevi le 17 colonne per 19 righe)
Ora ogni elemento dello scenario ha un numero
1= per ottenere i semi
2= per ottenere il muro
3= per ottenere le pillole
0= per ottenere delle zone vuote dove pac può camminarci ma non ottiene punti.
Tutti questi numeretti li potete modificare come posizione e numero a vostro piacimento

Non importa quanti semini mettete ci pensa poi il programma a contarli.

Mentre:
7= porta destra
6= porta sinistra
vanno posti: 7 ultima colonna a destra 6 prima colonna a sinistra.
In oltre devono essere sulla stessa riga (non importa quale riga decidete di utilizzare)
Ma se scegliete la riga N.6 dovete usare detta riga per la porta destra e sinistra.
(Questo è un limite che può essere superato aggiustando il programma.)

Altra accortezza dove vedete le frecce sono caselle prefissate dal programma.
Le tre caselline più in alto servono per i fantasmini
quella più in basso serve a pacman e la intermedia al frutto (nella casella del frutto va posto sempre uno 0)

Lo sò lo sò si poteva fare una funzione che ricavasse in automatico dove si trova pac e i fantasmini
e passare tutti i valori tramite una matrice....Ma il tempo era poco per far tutto.

Ok! hanno capito! ma ste numerini dove li mettono!
Ops! hai ragione Alter!
/*-------------------------------------------
  Funzione che crea matrice gioco
  -------------------------------------------*/
function Levell(n)
  // if n=0 then
  return [
  [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ],
  [ 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,3,2 ],
  [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
  [ 2,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2 ],
  [ 2,1,2,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
  [ 2,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2 ],
  [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
  [ 2,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,2 ],
  [ 2,2,2,1,2,1,2,2,1,2,2,1,2,1,2,2,2 ],
  [ 6,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,7 ],
  [ 2,2,2,1,2,1,1,1,1,1,1,1,2,1,2,2,2 ],
  [ 2,1,1,1,2,1,2,2,1,2,2,1,2,1,1,1,2 ],
  [ 2,1,2,1,2,1,1,1,0,1,1,1,2,1,2,1,2 ],
  [ 2,1,1,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
  [ 2,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2 ],
  [ 2,1,2,1,2,1,2,1,1,1,2,1,2,1,1,1,2 ],
  [ 2,1,2,1,2,1,2,2,1,2,2,1,2,2,2,1,2 ],
  [ 2,3,1,1,2,1,1,1,1,1,1,1,1,1,1,3,2 ],
  [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ]
  ];
  // elsif n=1 then
  // elseif n=2 then
  //end; //if
end;

Qui dovete modificare i numerini che vedete in questa funzione. (solo i numeri mi raccomando!)
Se oltre al primo scenario ne volete altri fate così.
/*-------------------------------------------
  Funzione che crea matrice gioco
  -------------------------------------------*/
function Levell(n)
 if n=0 then
   return [
   [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ],
   [ 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,3,2 ],
   [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
   [ 2,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2 ],
   [ 2,1,2,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,2 ],
   [ 2,2,2,1,2,1,2,2,1,2,2,1,2,1,2,2,2 ],
   [ 6,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,7 ],
   [ 2,2,2,1,2,1,1,1,1,1,1,1,2,1,2,2,2 ],
   [ 2,1,1,1,2,1,2,2,1,2,2,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,1,1,1,0,1,1,1,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
   [ 2,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2 ],
   [ 2,1,2,1,2,1,2,1,1,1,2,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,1,2,2,1,2,2,1,2,2,2,1,2 ],
   [ 2,3,1,1,2,1,1,1,1,1,1,1,1,1,1,3,2 ],
   [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ]
   ];
  elsif n=1 then
   return [
   [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ],
   [ 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,3,2 ],
   [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
   [ 2,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2 ],
   [ 2,1,2,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,2 ],
   [ 2,2,2,1,2,1,2,2,1,2,2,1,2,1,2,2,2 ],
   [ 6,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,7 ],
   [ 2,2,2,1,2,1,1,1,1,1,1,1,2,1,2,2,2 ],
   [ 2,1,1,1,2,1,2,2,1,2,2,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,1,1,1,0,1,1,1,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
   [ 2,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2 ],
   [ 2,1,2,1,2,1,2,1,1,1,2,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,1,2,2,1,2,2,1,2,2,2,1,2 ],
   [ 2,3,1,1,2,1,1,1,1,1,1,1,1,1,1,3,2 ],
   [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ]
   ];
  else
   return [
   [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ],
   [ 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,3,2 ],
   [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
   [ 2,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2 ],
   [ 2,1,2,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,2 ],
   [ 2,2,2,1,2,1,2,2,1,2,2,1,2,1,2,2,2 ],
   [ 6,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,7 ],
   [ 2,2,2,1,2,1,1,1,1,1,1,1,2,1,2,2,2 ],
   [ 2,1,1,1,2,1,2,2,1,2,2,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,1,1,1,0,1,1,1,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
   [ 2,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2 ],
   [ 2,1,2,1,2,1,2,1,1,1,2,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,1,2,2,1,2,2,1,2,2,2,1,2 ],
   [ 2,3,1,1,2,1,1,1,1,1,1,1,1,1,1,3,2 ],
   [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ]
   ];
  end; //if
end;

Qui è presente un primo scenario n=0 un secondo senario per il livello 1 n=1 e un terzo scenario
per tutti i livelli a venire.
se dopo il livello numero 1 volete aggiungere lo scenario per livelli 2,3,4 ecc..
aggiungete questo pezzo di codice alla riga prima dell' else
  elsif n=1 then
   return [
   [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ],
   [ 2,3,1,1,1,1,1,1,2,1,1,1,1,1,1,3,2 ],
   [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
   [ 2,1,2,1,1,1,1,1,1,1,1,1,1,1,2,1,2 ],
   [ 2,1,2,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,1,1,2,1,1,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,2,2,1,2,1,2,2,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,2 ],
   [ 2,2,2,1,2,1,2,2,1,2,2,1,2,1,2,2,2 ],
   [ 6,1,1,1,1,1,2,1,1,1,2,1,1,1,1,1,7 ],
   [ 2,2,2,1,2,1,1,1,1,1,1,1,2,1,2,2,2 ],
   [ 2,1,1,1,2,1,2,2,1,2,2,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,1,1,1,0,1,1,1,2,1,2,1,2 ],
   [ 2,1,1,1,2,1,2,2,2,2,2,1,2,1,2,1,2 ],
   [ 2,1,2,1,1,1,1,1,2,1,1,1,1,1,2,1,2 ],
   [ 2,1,2,1,2,1,2,1,1,1,2,1,2,1,1,1,2 ],
   [ 2,1,2,1,2,1,2,2,1,2,2,1,2,2,2,1,2 ],
   [ 2,3,1,1,2,1,1,1,1,1,1,1,1,1,1,3,2 ],
   [ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ]
   ];

e sostituite in elsif n=1 then il numero del livello dove volete che appaia.
------------------------------------------------------------------------------------------------
Piastrelline!
------------------------------------------------------------------------------------------------
Questo è nu pochetto più difficile per chi non ha mai programmato ma si può fare.
Sempre in quel modulo ci sono i disegni che creano pacman, frutti,semini,numeri,fantasmini.
Qui riporto la pagina a quadretti che ho usato per il gioco. (ingradirli cliccandoci sopra please!)
Download file  Piastrelline.png (8,36K)
Numero di downloads: 2
Download file  numeri.png (1,99K)
Numero di downloads: 1
Questi personaggi li trovate in pezzi di codice come questo:
o=g.black;   // colore nero del fondo
x=g.white;  // colore del fantasma
fanta[0]=g.icon([
	[o,o,o,o,o,o,o,o,o,o],
	[o,o,o,x,x,x,o,o,o,o],
	[o,o,x,x,x,x,x,x,o,o],
	[o,o,x,o,x,x,o,x,o,o],
	[o,x,x,o,x,x,o,x,x,o],
	[o,x,x,x,x,x,x,x,x,o],
	[o,x,x,x,x,x,x,x,x,o],
	[o,x,x,x,x,x,x,x,x,o],
	[o,x,o,o,x,o,o,x,x,o],
	[o,o,o,o,o,o,o,o,o,o]
]);

La griglia che vedete contiene delle lettere "o" e "x" queste stanno ad indicare che colore
deve avere quel quadrettino.
Perciò senza dilungarmi troppo: modificando la disposizione si cambia il disegno, modificando il contenuto delle variabili si cambiano i colori.
I colori da assegnare sono come quelli che si usano nelle pagine HTLM.
Nel web dovreste trovare delle tabelle con il colore e il suo valore corrispondente.
Nero da tabella HTML ="#000000" togliete le vorgolette e il # (cancelletto) aggiungete 0x ad inizio e ; a fine numero e il gioco è fatto avrete una miriade di colori da usare.
o=0xffffff; // colore white
X=0x000000; // colore black

Se volete usare più colori nella stessa piastrellina prima della griglia aggiungete la lettere che
li rappresenta in questo modo:
z=0xff7f50;  // colore corallo
e=0xa0522d;  // colore terra di Siena
o=g.black;   // colore nero del fondo
x=g.white;  // colore del fantasma
fanta[0]=g.icon([
	[e,e,e,e,e,e,e,e,e,e],
	[e,o,o,x,x,x,o,o,o,e],
	[e,o,x,x,x,x,x,x,o,e],
	[e,o,x,z,x,x,z,x,o,e],
	[e,x,x,z,x,x,z,x,x,e],
	[e,x,x,x,x,x,x,x,x,e],
	[e,x,x,x,x,x,x,x,x,e],
	[e,x,x,x,x,x,x,x,x,e],
	[e,x,o,o,x,o,o,x,x,e],
	[e,e,e,e,e,e,e,e,e,e]
]);

In questo caso il fantasmino sarà bianco con fondo nero e avrà gli occhi color corallo ed attorno
una cornice color terra di seiena.
( se a volte vedete delle griglie che non anno variabili ricordate che valgono quelle delle righe
precedenti.)
Per i più capaci potete caricare delle immagini salvate nel cellulare e assegnarle alle matrici.
(Già spiegato altrove cercare Please!..)
Fine Fine Fine di Pacman non ne voglio più sentir parlare....

Messaggio modificato da lento il 14 febbraio 2010 - 20:01

0

#16 L   lento 

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

Inviato 15 febbraio 2010 - 12:56

Visualizza Messaggilento, il 14/02/2010 - 18:27, ha scritto:

Fine Fine Fine di Pacman non ne voglio più sentir parlare....

Non preoccupatevi, ha solo fatto indigestione di semini.....Ora gli ho fatto ingurgitare una potente purga a base di VisualBasic,Python,J2me, un pizzico di assembler, e due foglioline di Cobol
Vedrete che tra un attimo sarà in grado di continuare con Pacman.....
Parola di Alter....

0

#17 L   6587gianluca 

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

Inviato 16 febbraio 2010 - 08:28

Ciao lento,innazitutto buongiorno e di nuovo complimenti per Pac Man che mi sembra veramente ben fatto e studiato.
......ho una miriade di domande da farti su Pac Man e voglio inziare con una in particolare in quanto mi servirebbe capirla al fine di applicarla anche in altri mini giochini.....
mi interessa capire come si fa a fare in modo che quando pac man incontra il muro rimane fermo, quindi ti chiedo se potresti indicarmi le parti del tuo sorgente ove viene gestita questa cosa.
Ti ringrazio, ciao.-
0

#18 L   lento 

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

Inviato 16 febbraio 2010 - 09:38

Visualizza Messaggi6587gianluca, il 16/02/2010 - 08:28, ha scritto:

Ciao lento,innazitutto buongiorno.......

Buongiorno anche a te...e complimenti per la tua volontà di voler capire questo gioco.
Nel sorgente pacman02.m devi cercare la funzione function PacAction() al suo interno troverai queste righe:
	  cosace=d.pag[.pacri][.pacco];
	 if cosace=d.pmuro then  // non muove
	   .pacco=.opacco; .pacri=.opacri; DisPac(.ipac);

d.pag[riga][colonna] è una matrice definita nel modulo pacd.mm
e contiene tutti i numeretti che servono per creare lo scenario, ogni quadrettino dello scenario corrisponde
a parità di riga e colonna ad un numeretto in questa matrice.
Soltanto pacman e i fantasmini non vengono rappresentati nella matrice.
Con la matrice d.pag[riga][colonna] si posso fare due cose
1) ottebere il contenuto di quel quadratino in questo modo variabile=d.pag[riga][colonna]
2) modificare il contenuto della matrice in questaltro modo d.pag[riga][colonna]=numero
cosace=d.pag[.pacri][.pacco]; assegno alla variabile locale cosace il numero contenuto nella posizione
dove vorrei muovere pacman.
.pacri e .pacco sono la riga e colonna dove vorrei spostare pacman, quindi
in if cosace=d.pmuro verifico se il numero contenuto in cosace corrisponde al numeretto che identifica il muro
d.pmuro è una variabile che contiene il numero 2 (valore indicante muro).

Se cè il muro semplicemente non muovo riassegnando il vecchio valore di riga e colonna che pacman aveva e che ho avuto
la premura di salvare in .opacco e .opaccri (abbreviazione di OldPacmanColonna OldPacmanRiga).

Nota anche le verifiche successive se in d.pag[.pacri][.pacco]; trova il valore 1 (semino) lo mangia e sostituisce il contenuto della
matrice d.pag[.pacri][.pacco]; con 0 (avrei dovuto scrivere d.pvuota) per chiarezza.
Anche con pillola fa lo stesso.
0

#19 L   6587gianluca 

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

Inviato 16 febbraio 2010 - 22:40

Visualizza Messaggilento, il 16/02/2010 - 09:38, ha scritto:

Buongiorno anche a te...e complimenti per la tua volontà di voler capire questo gioco.


Ciao lento, ti ringrazio per l'immediata risposta. Stò scrivendo solo ora in quanto da questa mattina mi sono riletto completamente "aiuto per un giochino, "far rotolare un barile", tutto ciò che è stato scritto per "Donkey Kong" e svariati altri post e devo dirti la verità rileggendo e rileggendo ho aggiunto un piccolo pezzo al puzzle.
Ti prego di non smettere di scrivere sorgenti....e se tu oppure il tuo alter avete intenzione di postare qualche altro giochino (semplice per favore) noi samo qui, pronti a leggere e pronti ad installare sui nostri cell.
Ciao e grazie.-
0

#20 L   lento 

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

Inviato 17 febbraio 2010 - 10:53

Visualizza Messaggi6587gianluca, il 16/02/2010 - 22:40, ha scritto:

Ti prego di non smettere di scrivere sorgenti....e se tu oppure il tuo alter avete intenzione di postare qualche altro giochino (semplice per favore) noi samo qui, pronti a leggere e pronti ad installare sui nostri cell.
Ciao e grazie.-

Se le cose vanno come sembra....non credo di poter accontentarti.
Purtroppo si deve sempre fare i conti con la realtà....ed essendo uno sprogramatore ho bisogno di imparare.
mShell da questo punto di vista può essere visto come un vicolo chiuso, poca gente che mette a disposizione sorgenti.
Sembra più un linguaggio di comodo per programmatori esperti.

J2me è troppo vincolato da limiti d'uso ed è un linguaggio semplice per programmatori c++, non certo per neofiti.
In oltre è estremamente complesso per ottenere un eseguibile (vedi necessita di compilarlo su PC).
In compenso è estremamente ricco di esempi da cui imparare e documentazione professionale.

Python (soprattutto ora che sembra funzionar bene.) è forse la via di mezzo giusta per le mie possibilità.
Molti libri in italiano gratuiti e no! molti esempi dal semplice al complesso, possibilità di utilizzare tutte le funzioni del telefono...
ora anche Symbian 5ht!.
Portabilità esiste sia su PC windows Linux Mac e cellulari Symbian, Iphone, WindowsMobile......
In somma se non sei un professionista e puoi dedicare tempo solo ad una cosa....credo che sia la soluzione giusta per mè.
Sempre se come spero, riuscirò a far funzionare due programmini in contemporanea ( e magari farli diventare dei xxx.sis)

Comunque (se volete provare) Python è anche alla vostra portata....lo si può programmare in modo molto simile a mShell, anche qui potete caricare i sorgenti nel cellulare e eseguirli.
In più avrete il vantaggio di usarlo anche sul PC e leggere e imparare da persone esperte, ci sono molti professori che sul web rilasciano della documentazione. Come ci sono molti programmatori (capaci!) che scrivono da semplici giochetti a cose complesse.
(Esiste persino un libro PDF per insegnarlo ai bambini!)
Credo che se imparate ste linguaggio per anni ed anni lo potrete utilizzare, è troppo radicato nella comunità informatica,
ci sarà sempre qualcuno che adatterà questo linguaggio per qualsiasi dispositivo fisico vogliate usare.
0

Condividi questa discussione:


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