Jump to content
Nokioteca Forum

[mshell] - Aiuto Per Un Giochino


6587gianluca
 Share

Recommended Posts

Ciao ragazzi, stavo cercando di realizzare un piccolo giochino ed in particolare donkey kong.

Ho inizaiato con il disegnare sul dispaly lo schermo iniziale del gioco ed ho proseguito nel creare i cicli per far rotolare il barile dai diversi piani del palazzo dall'alto verso il basso.

Il problema grande è che ho completato i cicli, quindi il barile rotola dai diversi piani dall'alto verso il basso, quando però il barire rotola sull'ultimo piano non riesco a far iniziare da capo il ciclo e cioè a far ripartire il barile dalla parte più alta. Ci stò impazzendo, aiutatemi per favore.

Vi allego delle piccole immagini .png da copiare nella memory card direttamente nella galleria immagini ed in oltre vi allego lo script.

Provatelo per favore e fatemi sapere.

use graph as g,ui;

g.size(240,320);

g.full(true);

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

mariod=g.icon("e:\\Images\\mario1.png",0x000000);

bariled=g.icon("e:\\Images\\barilep1.png");

for y=97 to 128 do

g.put(0,0,sfondo);

g.put(214,y,bariled);

g.put(30,284,mariod);

g.show(); sleep(10);

if y=128 then

for x=214 to 23 by-1 do

g.put(0,0,sfondo);

g.put(x,128,bariled);

g.put(30,284,mariod);

g.show(); sleep(10);

if x=23 then

for y=128 to 169 do

g.put(0,0,sfondo);

g.put(23,y,bariled);

g.put(30,284,mariod);

g.show(); sleep(10);

if y=169 then

for x=23 to 214 do

g.put(0,0,sfondo);

g.put(x,169, bariled);

g.put(30,284, mariod);

g.show();sleep(10);

if x=214 then

for y=169 to 209 do

g.put(0,0,sfondo);

g.put(214,y, bariled);

g.put(30,284, mariod);

g.show();sleep(10);

if y=209 then

for x=214 to 23 by-1 do

g.put(0,0,sfondo);

g.put(x,209, bariled);

g.put(30,284, mariod);

g.show();sleep(10);

if x=23 then

for y=209 to 251 do

g.put(0,0,sfondo);

g.put(23,y, bariled);

g.put(30,284, mariod);

g.show();sleep(10);

if y=251 then

for x=23 to 214 do

g.put(0,0,sfondo);

g.put(x,251, bariled);

g.put(30,284, mariod);

g.show();sleep(10);

if x=214 then

for y=251 to 292 do

g.put(0,0,sfondo);

g.put(214,y, bariled);

g.put(30,284, mariod);

g.show();sleep(10);

if y=292 then

for x=214 to 10 by -1 do

g.put(0,0,sfondo);

g.put(x,292, bariled);

g.put(30,284, mariod);

g.show();sleep(10);

end;end;end;end;end;end;end;end;end;end;end;

end;end;end;end;end;end;end;end;

barilep1.png

donkeysfondo.png

mario1.png

Link to comment
Condividi su altri siti

Purtroppo non so come aiutarti dato che uso il nokia 5800, però ho visto che non hai fatto uso delle classi, che nel caso di giochi o situazioni del genere si rivelano parecchio utili...

Potresti ad esempio creare una classe Barile, con le variabili interne x, y, immagine e le funzioni rotolaDestra e rotolaSinistra...

Ovviamente è solo un'idea, ma oltre a semplificarti il lavoro ti viene fuori un codice più leggibile ;-)

Link to comment
Condividi su altri siti

Salve '6587gianluca' prova a vedere il tuo programmino con le modifiche che ho fatto.

Per renderti più facile capire la sequenza ho commentato una parte di esso

per il tuo uso elimina tali commenti.

manca un loop principale che ripete la sequenza N. numero di volte

Nel mio caso te lò impostato a due cicli.

Stai attento a non nidificare troppi cicli for.. to e if..then esiste un limite oltre il quale

molto probabilmente mshell va in tilt.

Una domanda perchè cosi tante verifiche if y=.. then ?? con loop nidificati?? ha cosa ti servono??

Bel gioco!! fammi sapere...DonkeyKong.txt

Link to comment
Condividi su altri siti

Rieccomi !! ho trovato un attimo di tempo per sistemare meglio il gioco

questo è solo un mio consiglio...

Per prima cosa ho racchiuso in due funzioni le operazioni che si ripetono

frequentemente in modo da rendere più chiaro lo svolgimento del tuo programma.

Seconda cosa vedrai che i cicli for...to...do che lavorano sulle variabili globali

x e y danno un risultato diverso da quello che tu consideri nelle verifiche

if y=128 then ......

Vedi tu come vuoi modificarlo io mi sono limitato a seguire pedissequamente

la tua impostazionre.

Se è tutto chiaro facci sapè. Ti allego il sorgente Ciao...DonkeyKong1.txt

Modificato da lento
Link to comment
Condividi su altri siti

Rieccomi !! ho trovato un attimo di tempo per sistemare meglio il gioco

questo è solo un mio consiglio...

Per prima cosa ho racchiuso in due funzioni le operazioni che si ripetono

frequentemente in modo da rendere più chiaro lo svolgimento del tuo programma.

Seconda cosa vedrai che i cicli for...to...do che lavorano sulle variabili globali

x e y danno un risultato diverso da quello che tu consideri nelle verifiche

if y=128 then ......

Vedi tu come vuoi modificarlo io mi sono limitato a seguire pedissequamente

la tua impostazionre.

Se è tutto chiaro fatti sapè. Ti allego il sorgente Ciao...DonkeyKong1.txt

Ti ringrazio innanzi tutto per le risposte, per l'interessamento e per il tempo speso per me.

Volevo chiederti, il file DonkeyKong1 lo devo scrivere sul cellulare cosi com'è oppure le due funzioni trasla e scendi le devo scrivere altrove e richiamarle nel MAIN.

Cioè se salvo il file DonkeyKong1 con estensione .m e lo copio nel cell funziona direttamente ????

Ciao e grazie.-

Link to comment
Condividi su altri siti

Volevo chiederti, il file DonkeyKong1 lo devo scrivere sul cellulare cosi com'è oppure le due funzioni trasla e scendi le devo scrivere altrove e richiamarle nel MAIN.

Cioè se salvo il file DonkeyKong1 con estensione .m e lo copio nel cell funziona direttamente ????

Ciao e grazie.-

Si basta che cambi estensione in .m e lo puoi eseguire.

Se guardi il sorgente vedrai che in MAIN vengono chiamate le funzioni sopra citate.

Il ciclo generale di ripetizione serve solo per farti vedere il tutto in funzione, devi decidere tu cosa vuoi farne.

Se qualcosa non ti è chiaro chiedi pure.....a....ri facci sapè Ciao!.

Link to comment
Condividi su altri siti

Si basta che cambi estensione in .m e lo puoi eseguire.

Se guardi il sorgente vedrai che in MAIN vengono chiamate le funzioni sopra citate.

Il ciclo generale di ripetizione serve solo per farti vedere il tutto in funzione, devi decidere tu cosa vuoi farne.

Se qualcosa non ti è chiaro chiedi pure.....a....ri facci sapè Ciao!.

Si ok ho provato e funziona benissimo. Il tuo in confronto al mio è perfetto.

Ora però mi stò chiedendo, in cio che tu hai scritto ho notato delle cose che non ho mai visto utilizzare e cioè :

da,ad,incr,livello - non capisco se sono delle variabili, ma se lo sono non sono state definite da nessuna parte ?????

g.put(0,0,.sfondo); - perchè si scrive .sfondo e non sfondo ???

y=scendi(97,128,214); - tu scrivi 97,128,214 ???? perchè si usano tre valori ???

if y=129 then x=trasla(214,23,-1,128); - e qui perchè si usano 4 valori tra parentesi ???

Ti giuro non avevo mai visto scrivere in mShall così !!!! e sinceramente mi piacerebbe capire. Mi puoi dire se esiste una guida dove posso studiare l'uso di queste nuove metodologie.

Ciao e grazie.-

Link to comment
Condividi su altri siti

Si ok ho provato e funziona benissimo. Il tuo in confronto al mio è perfetto.

Ora però mi stò chiedendo, in cio che tu hai scritto ho notato delle cose che non ho mai visto utilizzare e cioè :

da,ad,incr,livello - non capisco se sono delle variabili, ma se lo sono non sono state definite da nessuna parte ?????

g.put(0,0,.sfondo); - perchè si scrive .sfondo e non sfondo ???

y=scendi(97,128,214); - tu scrivi 97,128,214 ???? perchè si usano tre valori ???

if y=129 then x=trasla(214,23,-1,128); - e qui perchè si usano 4 valori tra parentesi ???

Ti giuro non avevo mai visto scrivere in mShall così !!!! e sinceramente mi piacerebbe capire. Mi puoi dire se esiste una guida dove posso studiare l'uso di queste nuove metodologie.

Ciao e grazie.-

Oooops! scusa '6587gianluca' non era mia intenzione crearti problemi...

Apprezzo la tua richiesta fondata sulla semplice voglia di apprendere.....ma!

Io non sono un insegnante......conosoco qualcosa.....ma molto non so e rischierei di trasmetterti anche qualche concetto sbagliato.

Ma se altri mi danno una mano anche solo sorvegliando l'esattezza di quel che si dice sarei disposto a tentare.

(non abbiate paura a evidenziare i miei errori le ignobili figuracce che mi attendono non mi spaventano! io sono saldamente aggrappato al fondo del barile!)

Se ti interessa, fammi sapere.

Nel caso: mi permetti di usare l'idea del gioco (solo la parte fin qui da tè ideata) e le immagini che hai allegato.

Lo scopo è di spiegare alcuni concetti risolvendo il problema del barile che scende.

Forse varrebbe la pena di aprire una nuova discussione che dici...si potrebbe chiamarla "[mshell] Far rotolare il barile" 'Semplici concetti per divertirsi programmando'.

In modo che si possa completare il tutto in più puntate (tempo tiranno!!).

Link to comment
Condividi su altri siti

Oooops! scusa '6587gianluca' non era mia intenzione crearti problemi...

Apprezzo la tua richiesta fondata sulla semplice voglia di apprendere.....ma!

Io non sono un insegnante......conosoco qualcosa.....ma molto non so e rischierei di trasmetterti anche qualche concetto sbagliato.

Ma se altri mi danno una mano anche solo sorvegliando l'esattezza di quel che si dice sarei disposto a tentare.

(non abbiate paura a evidenziare i miei errori le ignobili figuracce che mi attendono non mi spaventano! io sono saldamente aggrappato al fondo del barile!)

Se ti interessa, fammi sapere.

Nel caso: mi permetti di usare l'idea del gioco (solo la parte fin qui da tè ideata) e le immagini che hai allegato.

Lo scopo è di spiegare alcuni concetti risolvendo il problema del barile che scende.

Forse varrebbe la pena di aprire una nuova discussione che dici...si potrebbe chiamarla "[mshell] Far rotolare il barile" 'Semplici concetti per divertirsi programmando'.

In modo che si possa completare il tutto in più puntate (tempo tiranno!!).

____________________________________________-

Sono lusingatissimo di permetterti di usare l'idea del gioco e le immagini e ti ringrazio nuovamente per la tua disponibilità.

Va benissimo il fatto di aprire una nuova discussione con la denominazione da te individuata.

Fammi sapere appena hai aperto la nuova discussione e sarò li attentissimo allo sviluppo delle puntate.

Ciao e grazie, attendo con ansia .

Link to comment
Condividi su altri siti

Lo scopo è di spiegare alcuni concetti risolvendo il problema del barile che scende.

Forse varrebbe la pena di aprire una nuova discussione che dici...si potrebbe chiamarla "[mshell] Far rotolare il barile" 'Semplici concetti per divertirsi programmando'.

A questo scopo, nel caso in cui decidiate di ricominciare lo sviluppo da zero del giochino, suggerisco di usare un approccio maggiormente flessibile per la sua realizzazione e che puo' essere facilmente adattato a piu' giochi differenti... Ovvero...

Trasformare i controlli da coordinate assolute ad una logica basata sul concetto di "tile" o casella che dir si voglia...

Scomponendo il livello in tante caselle che saranno utilizzate per determinare se in quella particolare area di schermo e' presente:

- una area vuota (a cui si attribuisce ad es. il valore 0)

- un piano orizzontale (valore 1)

- una scala (valore 2)

Ciascun livello non sara' altro che un array bidimensionale:

0020200000

0020211100

0020200200

0020200200

1111111110

0000000020

0111111111

0020000000

0020000000

1111111111

La grafica non sara' una unica immagine, ma composta da tante immagini (una per ciascuna tile) che saranno stampate a video in base all'array del livello.

E la logica del gioco con i suoi vari controlli non dovranno piu' basarsi su coordinate fisse ed assolute, ma su questo array rappresentativo del livello attuale.

Il vantaggio di tutto cio' e' che puo' essere facilmente adattato a diversi tipi di giochi, inoltre, per creare nuovi livelli del medesimo gioco non bisognera' fare alcuna modifica alla parte logica, ma bastera' creare un nuovo array di valori (eventualmente presi da un file di testo)

Dopo aver scritto tutte ste righe, mi rendo conto che mi sono lasciato trasportare un po' troppo! :sleeping_03anim: E probabilmente, e' meglio lasciare il tutto cosi' com'e' con l'unico obiettivo di vedere rotolare il barilotto giu' per la scala :) Se poi in futuro si vorra' arrivare a farlo diventare un giochino, l'utilizzo delle tile diventera' una scelta pressoche' obbligata...

Modificato da Il.Socio
Link to comment
Condividi su altri siti

A questo scopo, nel caso in cui decidiate di ricominciare lo sviluppo da zero del giochino, suggerisco di usare un approccio maggiormente flessibile per la sua realizzazione e che puo' essere facilmente adattato a piu' giochi differenti... Ovvero...

Trasformare i controlli da coordinate assolute ad una logica basata sul concetto di "tile" o casella che dir si voglia...

Scomponendo il livello in tante caselle che saranno utilizzate per determinare se in quella particolare area di schermo e' presente:

- una area vuota (a cui si attribuisce ad es. il valore 0)

- un piano orizzontale (valore 1)

- una scala (valore 2)

Ciascun livello non sara' altro che un array bidimensionale:

0020200000

0020211100

0020200200

0020200200

1111111110

0000000020

0111111111

0020000000

0020000000

1111111111

La grafica non sara' una unica immagine, ma composta da tante immagini (una per ciascuna tile) che saranno stampate a video in base all'array del livello.

E la logica del gioco con i suoi vari controlli non dovranno piu' basarsi su coordinate fisse ed assolute, ma su questo array rappresentativo del livello attuale.

Il vantaggio di tutto cio' e' che puo' essere facilmente adattato a diversi tipi di giochi, inoltre, per creare nuovi livelli del medesimo gioco non bisognera' fare alcuna modifica alla parte logica, ma bastera' creare un nuovo array di valori (eventualmente presi da un file di testo)

Dopo aver scritto tutte ste righe, mi rendo conto che mi sono lasciato trasportare un po' troppo! :sleeping_03anim: E probabilmente, e' meglio lasciare il tutto cosi' com'e' con l'unico obiettivo di vedere rotolare il barilotto giu' per la scala :) Se poi in futuro si vorra' arrivare a farlo diventare un giochino, l'utilizzo delle tile diventera' una scelta pressoche' obbligata...

Mi rendo conto della tua professionalità e sicuramente la tua proposta è validissima, per quanto mi riguarda al momento mi farebbe più comodo la spiegazione passo passo di "lento" per capire delle cose come funzionano....è come dire di voler far guidare la ferrari ad un ragazzo che stà facendfo scuola guida e che sa appena dov'è ilo pomello delle marce......

Però voglio dire, se lento intanto butta giù la sua proposta e tu metti giù qualcosa di tuo.....credo che non facciamo danni a nessuno, anzi in vari potranno trarne vantaggi.

Ciao, siete dei grandi.-

Link to comment
Condividi su altri siti

Ragazzi credetemi......tanta è la voglia di vedere scritto qualcosa da parte vostra, mi riferisco a lento ed a il.Socio, che da stamani mattina sarò entrato in questa discussione almeno 50 volte.

Mi raccomando non abbandonate questo post, sono assetatissimo di nozioni......vi ammiro in quanto voi avete delle nozioni di grajn lunga superiori alle mie e mi piacerebbe accumulare un po di informazioni.

Ciao.-

Link to comment
Condividi su altri siti

Ragazzi credetemi......tanta è la voglia di vedere scritto qualcosa da parte vostra, mi riferisco a lento ed a il.Socio, che da stamani mattina sarò entrato in questa discussione almeno 50 volte.

Mi raccomando non abbandonate questo post, sono assetatissimo di nozioni......vi ammiro in quanto voi avete delle nozioni di grajn lunga superiori alle mie e mi piacerebbe accumulare un po di informazioni.

Ciao.-

'6587gianluca' non ti mollo! non preoccuparti.....

Come ai ben detto voglio spiegare quello che si dà per scontato le basi per poter sfruttare velocemente i linguaggi

di programmazione (non a oggetti).

Devo evitare di essere noioso, nozionista o scrivere tanto da poter rilegare il tutto in comodi 10 Volumi.

Non è facile essere semplici, concisi, e lasciare una struttura mentale, sufficientemente completa per scrivere quell che si vuole.

Per non parlare del mio italiano:(Sapeste che voti che ho preso in italiano....)

Ho pensato di esporre il tutto come un racconto, parto dal voler realizzare un animazione semplice,

scrivo un programma effettivamente semplice ma esposto in maniera pazzescamente contorta e incomprensibile,

e man mano, spinti da necessità lo si trasforma in un programma sempre più, ben strutturato che dà piacere a programmare.

@'Il.Socio'

Và benissimo se ognuno spiegasse un piccolo tassello alla fine la nostra conoscenza sarebbe enorme.

(Personalmente ho necessità di imparare su quanto tu ai accennato.)

Domani ho tempo...e la cosa mi pesa parecchio, (paura di sbagliare!!)

Link to comment
Condividi su altri siti

Ho pensato di esporre il tutto come un racconto, parto dal voler realizzare un animazione semplice,

scrivo un programma effettivamente semplice ma esposto in maniera pazzescamente contorta e incomprensibile,

e man mano, spinti da necessità lo si trasforma in un programma sempre più, ben strutturato che dà piacere a programmare.

Mi garba un sacco l'approccio per raffinamenti successivi... si evolvera' pian piano con il passare del tempo... :axehead:

Link to comment
Condividi su altri siti

Non vedo l'ora che cominci....sono inpazientissimo.

Grazie.-

'6587gianluca' ti rispondo sul tuo post grazie della visita a "Far rotolare il barile".

Per dirti che domani concludo la seconda parte. in essa saranno esposti i due sorgenti che tu conosci (un po semplificati).

Con la seconda parte si conclude la breve l'esposizione diciamo... da libro?.

Dopo di essa inizia una fase totalmente nuova dove risponderò a eventuali domande poste.

Mi auguro che altri partecipino a rispondere come è l'indole del forum.

Ora però mi stò chiedendo, in cio che tu hai scritto ho notato delle cose che non ho mai visto utilizzare e cioè :

da,ad,incr,livello - non capisco se sono delle variabili, ma se lo sono non sono state definite da nessuna parte ?????

g.put(0,0,.sfondo); - perchè si scrive .sfondo e non sfondo ???

y=scendi(97,128,214); - tu scrivi 97,128,214 ???? perché si usano tre valori ???

if y=129 then x=trasla(214,23,-1,128); - e qui perché si usano 4 valori tra parentesi ???

Queste saranno le prime a ricevere risposta.

Dovevo rendere pubblico il sorgente e cosa si prefigge di fare, nella speranza che altri chiedano spiegazioni e altri partecipino a rispondere.

Porta pazienza ancora un giorno e poi bombarda di domande.....

Quelle qui elencate riceveranno risposta subito dopo la seconda puntata.

A presto

Link to comment
Condividi su altri siti

Ciao, io sicuramente ti bombarderò di domande in quanto ho veramente voglia di imparare bene e di essere più padrone del linguaggio.

E' troppo bello il fatto che quando pensi a qualcosa sai dentro di te che in qualche modo puoi riuscirlo a realizzare....ad è a ciò che mi piacerebbe arrivare.

Grazie, attendo la seconda puntata e stai sicuro che riceverai svariate domande.....

Ciao.-

Link to comment
Condividi su altri siti

  • 1 mese dopo...

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

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