Rpg²S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Vai al contenuto

Rpg²S Forum uses cookies. Read the Privacy Policy for more info. To remove this message, please click the button to the right:    I accept the use of cookies

Screen Contest #90

Kamikun






  • Si prega di effettuare il log in prima di rispondere
Alcune delucidazioni

    Blaze Razgriz
  • Nuovo Arrivato

  • Utenti
  • Rens: 5
  • 0
  • Stelletta
  • 24 messaggi
  • Abilità:Novizio

#1 Inviato 21 July 2008 - 14:08 PM

ok, come da topic, necessito di alcune delucidazioni,

il comando return so che viene utilizzato per uscire da un metodo, e quello che viene scritto dopo return è il valore che viene dato a quel metodo, quindi se abbiamo il seguente metodo

def boh(larghezza,altezza)
a = larghezza*altezza
return a
end

praticamente il return, non solo interrompe il metodo, ma dà il valore di "a" a Boh, sbaglio?


in un metodo, è possibile usare variabili di classe come argomenti? se per esempio

class Palloncini
@colore=6
@brillantezza=7
def Tipodipalloncino(@colore,@brillantezza)
unless @brillantezza<=@colore
@brillantezza +=1
print "diventa più brillante!"
else
print "è brillante abbastanza"
return (e qui, cosa potrei scriverci? e perchè?)
end

sto return mi dà un sacco di problemi di comprensione, so a cosa serve ma in alcuni casi non so proprio cosa fare.

grazie in anticipo. ^^

    Sleeping Leonhart
  • Animatore

  • Utenti
  • Rens: 316
  • 0
  • StellettaStellettaStellettaStelletta
  • 579 messaggi
  • Sesso:Maschio
  • Provenienza:Roma
  • Abilità:Esperto

#2 Inviato 21 July 2008 - 15:27 PM

Mi piace che tu stia imparando ad usare gli script quindi ti voglio aiutare ^^
Allora 1: return come dici tu ritorna uno ed un solo valore(sempre se vuoi altrimenti puoi non mettercelo e non ti ritorna nulla) questo valore viene restituito quando richiami il metodo.
se per esempio io adesso facessi a = boh(5,4) dentro ad a andrebbe a finire 20

2)Il passaggio di parametri va fatto con variabili locali, altrimenti che senso avrebbe passargliele se gia le può leggere da se?
cerca di non usare troppe variabili d'istanza(quelle con la @) a meno che non ti servano per tutta la classe.
Il return non va messo per forza, lo devi mettere solo se ti serve il ritorno di un valore o se vuoi uscire prima dal metodo, che ne so faccio un esempio stupido:

def divisione(n,d)
if d == n
return 1
end
return n/d
end

In questo caso se io chiamassi divisione(5,5) il metodo mi restituirebbe direttamente 1 senza neanche farmi l'operazione (ovviamente è molto più comodo fargli fare l'operazione e basta ma era un esempio)

invece un esempio di return per uscire dal metodo anticipatamente può essere

def prova(a,b)
if a == b
return
end
a = a-b
a = a*a
end

in questo caso se a e b sono uguali il metodo finisce anticipatamente e ti ritorna il nulla
altrimenti continua e fa le sue operazioni

Mi rendo conto che spiego male però se non capisci qualcosa o hai altri dubbi chiedi io ti rispondo ^^
( non subito perchè ho problemi con il pc :( )

Immagine inserita
Scarica la Demo!
Tutti i miei script(o quasi) li trovi Qui!


    Blaze Razgriz
  • Nuovo Arrivato

  • Utenti
  • Rens: 5
  • 0
  • Stelletta
  • 24 messaggi
  • Abilità:Novizio

#3 Inviato 21 July 2008 - 16:22 PM

nono ho capito tutto, GRAZIE! :D
sto facendo esercizi riguardanti le classi, del tipo

class Umano
def initialize(capelli,occhi,mani,piedi)
@arti = mani+piedi
@capelli = capelli
@occhi = occhi
@dita = (mani+piedi)*5
end

def arti
return @arti
end
def capelli
return @capelli
end
def occhi
return @occhi
end
def dita
return @dita
end
end


paolo=Umano.new("Neri","Castani",2,2)
francesco=Umano.new("Castani","Celesti",2,2)
paolo.arti
paolo.capelli
paolo.occhi
paolo.dita
francesco.arti
francesco.capelli
francesco.occhi
francesco.dita
print paolo.capelli
print paolo.occhi
print francesco.capelli
print francesco.occhi

il print l'ho messo come auto verifica, ho notato che se io, cerco di printare direttamente una variabile di istanza che ne so, @capelli, mi dà nil, invece (come è logico che sia) quando printo l'istanza relativa al metodo capelli (print palo.capelli) mi dà la risposta esatta, cioè Neri, questo ovviamente perchè ho ritornato il risultato della variabile al metodo capelli. ho capito tutto il meccanismo, ma vorrei un ulteriore delucidazione sul perchè, perchè quel nil, ci sono vicino ma mi sfugge... attendo risposta :D grazie in anticipo.

    Sleeping Leonhart
  • Animatore

  • Utenti
  • Rens: 316
  • 0
  • StellettaStellettaStellettaStelletta
  • 579 messaggi
  • Sesso:Maschio
  • Provenienza:Roma
  • Abilità:Esperto

#4 Inviato 21 July 2008 - 23:34 PM

be se fai print @capelli fuori dalla classe ( cio dopo class Umano ) è ovvio che ti da nil ( nulla, vuoto o come la vuoi interpretare tu ) poichè le variabili d'istanza sono globali solo per quella classe se invece vuoi un variabile globale che tutti possono leggere indiscriminatamente devi sostituire @ con $.
Mi piace che tu ti cimenti in questa impresa, hai già studiato qualche linguaggio di programmazione?
Se si stai un passo vanti in quanto alla fine si somigliano tutti, se invece fai come me che te lo impari dal nulla è un po più difficile ma si può comunque fare XD

Se hai altri problemi esponili pure mi raccomando ^^

Immagine inserita
Scarica la Demo!
Tutti i miei script(o quasi) li trovi Qui!


    shuuchan
  • Alex (Rm2k)

  • Utenti
  • Rens: 65
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 929 messaggi
  • Sesso:Maschio
  • Provenienza:un villaggio nei pressi di Bergamoburg
  • Abilità:Apprendista

#5 Inviato 22 July 2008 - 08:44 AM

Scusate se m'intrometto, ma visto che mi sembrate tutti e due piuttosto ferrati, e siccome ho un paio di dubbi da chiarire, vorrei evitare di aprire un nuovo topic... spero che a Blaze non dispiaccia. ^^

Usando l'RGSS2:
1) è possibile utilizzare ovunque le contrazioni tipo questa (riprendo la classe "divisione" di Sleeping Leonhart):

def divisione(n,d)
return ( n == d ? 1 : n/d)
end

Io le ho viste usate solo per chiamare dei metodi, ma se fosse possibile usarle ovunque sarebbe mooolto utile...

2) è possibile usare la ricorsione all'interno di un metodo? Per esempio una cosa del genere può funzionare?

def prova (a)
if a > 1
return (prova(a-1))
else
return 1
end
end

Questo perché sebbene i cicli for, while, ecc. siano molto comodi, ho notato che sono anche molto "pesanti", specie se nidificati. Se fosse possibile sarebbe utile poter usare le ricorsioni al loro posto...

3) Ho letto che Sleeping Leonhart dice di evitare di usare le variabili d'istanza @. Come mai? Io le ho sempre trovate molto comode, usando quelle si può evitare di passare i valori tramite metodo.

Scusate se vi ho scassato, sono un po' ignorante in materia... :biggrin:

Screen Contest (by Sakura & Shuuchan):Immagine inserita Immagine inserita Immagine inserita

Immagine inserita
Bacheca Premi
Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita


Spoiler

Immagine inserita
Scarica la demo ver. 0.2:
RTP non incluse (19 MB) - richiede RMVX ver. 1.02 - Download
Versione completa (52 MB) - Download


    Nemius Loireag
  • Nuovo Arrivato

  • Utenti
  • Rens: 2
  • 0
  • Stelletta
  • 59 messaggi
  • Sesso:Maschio
  • Provenienza:Mystland
  • Abilità:Novizio

#6 Inviato 22 July 2008 - 09:18 AM

Se a Sleeping Leonhart non dispiace posso rispondere io ad alcune domande di shuuchan...

1) Le contrazioni si possono usare ovunque c'è da ricordare però che contrazioni di quel tipo sono limitate a una sola istruzione (quella che hai postato è un "If compresso") e non possono quindi essere usate per gestire blocchi di istruzioni più complessi

2)Nessuno vieta la ricorsione dove è possibile, è questione di scelta ricorda però che se con i cicli hai un problema di lentezza con la ricorsione presenti un problema di memoria che dipende direttamente dal numero di volte che effettui la ricorsione

3)Spero di non fare una gaff nella risposta a questo punto, variabili di istanza (o di classe) restano vive finchè esiste l'istanza della classe e va quindi a occupare memoria. Se si abusa delle variabili di istanza si finisce per occupare memoria inutilmente (andando ad appesantire l'esecuzione del programma (o del gioco in questo caso) per evitare ciò è spesso più utile utilizzare variabili temporanee di metodo che esistono solo per il breve momento di esecuzione del metodo.
per l'uso delle variabili c'è da tenere conto di questi piccoli accorgimenti:

- Variabile Globale (da usare il meno possibile) solo se deve essere accessibile ovunque nel programma
- Variabile di Classe solo se strettamente necessario per la definizione della classe stessa (solitamente sono quelle variabili che vanno a definire la classe)
- Variabili temporanee sono utilizzabili ovunque e hanno vita molto breve (si usano spesso all'interno di metodi per i calcoli al volo)

Spero che sia tutto chiaro (e se sbaglio correggetemi)

Modificato da Nemius Loireag, 22 July 2008 - 13:53 PM.

Immagine inserita
Progetto in preparazione:
Dead God Tales
Tool: RPG Maker VX
Post del Progetto: Dead God Tales
Demo: Demo - Dead God Tales
Screenshot: Nel Post del Progetto

    Blaze Razgriz
  • Nuovo Arrivato

  • Utenti
  • Rens: 5
  • 0
  • Stelletta
  • 24 messaggi
  • Abilità:Novizio

#7 Inviato 22 July 2008 - 10:50 AM

umh ho capito il perchè ora, cmq Sleeping Leonhart, sono nella tua stessa barca, in quanto nn conosco altri linguaggi di programmazzione :D, piano piano mi sto esercitando e fidati, che avere qualcuno a cui chiedere (voi) è veramente una manna dal cielo, cmq shuuchan non preoccuparti :D tanto sempre di ruby si parla ^^ anzi dai tuoi dubbi e dalle risposte di nemius ne ho ricavato altro sapere :D grazie ragazzi ^^

    shuuchan
  • Alex (Rm2k)

  • Utenti
  • Rens: 65
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 929 messaggi
  • Sesso:Maschio
  • Provenienza:un villaggio nei pressi di Bergamoburg
  • Abilità:Apprendista

#8 Inviato 22 July 2008 - 15:12 PM

Grazie a voi! ^^
Ci vorrebe un bel topic in cui si parla SOLO ed esclusivamente di problemi tipo questi: altro che tutorial, si imparerebbero un sacco di cose nel giro di 4 o 5 post...

@Nemius: ma allora sei davvero un Signor Scripter!! ^^
Allora ne approfitto: riprendendo la mia domanda n° 2), a questo punto ho un altro dubbio --> se con i cicli ho problemi di di lentezza e con le ricorsioni di memoria, cosa conviene usare? Da quel che ho capito RPGVX usa un bel po' di risorse (sia a livello di processore che di memoria)...
Altra cosa riguardo le variabili: è possibile nell'RGSS2 assegnare delle variabili "a riferimento"? (non so se mi sono spiegato: intendo delle variabili in cui non venga "inserito" un determinato valore, ma che facciano "riferimento" ad un valore in memoria, con una specie di "puntatore", dimodoché se modifico quel valore in memoria, modifico anche il contenuto della variabile che vi fa riferimento... oddio, che casino, :wink: spero che si riesca a capire cosa intendo...).

Screen Contest (by Sakura & Shuuchan):Immagine inserita Immagine inserita Immagine inserita

Immagine inserita
Bacheca Premi
Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita


Spoiler

Immagine inserita
Scarica la demo ver. 0.2:
RTP non incluse (19 MB) - richiede RMVX ver. 1.02 - Download
Versione completa (52 MB) - Download


    Nemius Loireag
  • Nuovo Arrivato

  • Utenti
  • Rens: 2
  • 0
  • Stelletta
  • 59 messaggi
  • Sesso:Maschio
  • Provenienza:Mystland
  • Abilità:Novizio

#9 Inviato 23 July 2008 - 09:46 AM

Beh non mi definisco uno scripter anche perchè Ruby non lo conosco così bene (mi ci sto avvicinando da poco) però sono un programmatore che sa sviluppare in Java e altri linguaggi, per questo ti so rispondere....

2) Il fatto se usare o meno un ciclo o una ricorsione dipende unicamente dal numero di volte che devi eseguire quelle istruzioni...
di base se è sempre un numero limitato (e piccolo) di volte (e quindi di cicli) meglio usare la ricorsione per maggiore velocità
se il numero di cicli è fisso in base al fatto se è un numero di cicli piccoli o meno puoi decidere a scelta di usare ricorsione o cicli (meglio i For)
se il numero di cicli è variabile e imprecisato di solito è meglio usare cicli while volendo nessuno vieta, in caso di cicli nidificati, di fare un mix di ricorsione e di cicli tenendo conto di quando si usa uno e quando l'altro...

Sinceramente non conosco così bene Ruby per risponderti sui puntatori, però trattandosi di programmazione ad oggetti di solito i puntatori non si usano proprio..
Immagine inserita
Progetto in preparazione:
Dead God Tales
Tool: RPG Maker VX
Post del Progetto: Dead God Tales
Demo: Demo - Dead God Tales
Screenshot: Nel Post del Progetto

    shuuchan
  • Alex (Rm2k)

  • Utenti
  • Rens: 65
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 929 messaggi
  • Sesso:Maschio
  • Provenienza:un villaggio nei pressi di Bergamoburg
  • Abilità:Apprendista

#10 Inviato 23 July 2008 - 10:58 AM

Sinceramente non conosco così bene Ruby per risponderti sui puntatori, però trattandosi di programmazione ad oggetti di solito i puntatori non si usano proprio..


Grazie comunque, anche per le risposte sulla ricorsione! ^^
É bello poter contare su qualcuno che conosce anche altri linguaggi...
Ancora, grazie mille.

Screen Contest (by Sakura & Shuuchan):Immagine inserita Immagine inserita Immagine inserita

Immagine inserita
Bacheca Premi
Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita


Spoiler

Immagine inserita
Scarica la demo ver. 0.2:
RTP non incluse (19 MB) - richiede RMVX ver. 1.02 - Download
Versione completa (52 MB) - Download


    Blaze Razgriz
  • Nuovo Arrivato

  • Utenti
  • Rens: 5
  • 0
  • Stelletta
  • 24 messaggi
  • Abilità:Novizio

#11 Inviato 23 July 2008 - 12:48 PM

ho trovato in altri "posti" esercizi da fare per imparare il ruby, ne conoscete qualcuno? magari facendo pratica si impara :p

    shuuchan
  • Alex (Rm2k)

  • Utenti
  • Rens: 65
  • 0
  • StellettaStellettaStellettaStellettaStelletta
  • 929 messaggi
  • Sesso:Maschio
  • Provenienza:un villaggio nei pressi di Bergamoburg
  • Abilità:Apprendista

#12 Inviato 23 July 2008 - 13:20 PM

Mi spiace, non ne ho la più pallida idea... -_- ...forse gli altri lo sanno.

Screen Contest (by Sakura & Shuuchan):Immagine inserita Immagine inserita Immagine inserita

Immagine inserita
Bacheca Premi
Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita Immagine inserita


Spoiler

Immagine inserita
Scarica la demo ver. 0.2:
RTP non incluse (19 MB) - richiede RMVX ver. 1.02 - Download
Versione completa (52 MB) - Download


    marigno
  • Erunamo è il mio amoVe :*.

  • Utenti Speciali
  • Rens: 146
  • 0
  • StellettaStellettaStellettaStellettaStellettaStelletta
  • 2589 messaggi
  • Sesso:Maschio
  • Provenienza:Parma
  • Abilità:Adepto

#13 Inviato 23 July 2008 - 15:16 PM

Sempre nella sezione RGSS - Campus, no?
Comunque se proprio vuoi fare esperienza, modifica script già esistenti, magari migliorandoli.




  • Feed RSS