Jump to content
Rpg²S Forum

Laboratorio - Grado 2


Alato
 Share

Recommended Posts

Questo laboratorio ? pensato per studenti che abbiano raggiunto il Grado 2 in RGSS, perci? verranno considerate gi? acquisite le conoscenze dei gradi precedenti.

Al lavoro!
I metodi possono essere creati solo all'interno di una classe, e creati scrivendo

def nome_del_metodo

con il nome del vostro metodo al posto di nome_del_metodo.

Come gi? detto in una delle lezioni, i nomi seguono le stesse regole delle variabili con qualche aggiunta:
-non utilizzare lettere maiuscole come prima lettera
-i nomi "main" e "initialize" vengono riconosciuti dallo script editor come metodi particolari, quindi non utilizzarli (a meno che non si voglia creare appunto uno di questi metodi particolari)

All'interno dei metodi sono contenute tutte le espressioni e operazioni degli script. Per "all'interno del metodo" si intende

def metodo

# Qui va il tuo codice

# Qui va il tuo codice

# ecc.

end

cio? un blocco di codice compreso tra la riga in cui viene creato il metodo e quella in cui viene scritto l'end. Nell'esempio ho inserito solamente dei commenti.

I metodi, come ho detto all'inizio, sono sempre inseriti all'interno di una classe.
 

class Nome_Classe



def metodo

# Codice

end



end

Delle classi parleremo in un altro laboratorio, per ora sappiate solo che la sua creazione funziona allo stesso modo dei metodi: un class iniziale con il nome (iniziale sempre maiuscola in questo caso) e un end che indica la fine della classe.
Come vedete il metodo risulta annidato all'interno della classe. Questo esempio rende meglio l'idea di come bisogna "vedere" l'annidamento.

class Nome_Classe

def metodo1
#codice
end

def metodo2
#codice
end

 


Si possono annidare diversi metodi all'interno di una classe, ma non si pu? creare un metodo all'interno di un altro metodo.
Per poter proseguire con la spiegazione, sappiate che una classe deve sempre contenere all'inizio un metodo "initialize" o "main" (o entrambi).

Ora provate a creare una classe, che contenga tre metodi: uno che somma due variabili, uno che le moltiplica e uno che assegna una variabile all'altra.

 

Link to comment
Share on other sites

Aemh, ma Ala esiste già qualcuno di Grado 2? o_

http://www.browsergamer.net/banner/190x60/browsergamer.jpg http://www.medioshopping.com/img/medioshopping_logo_mini.png

 

www.havana24.net

Premi vinti

 

 

http://www.rpg2s.net/gif/GC_bestof1.gif http://www.rpg2s.net/gif/GC_bestoftool1.gif

http://www.rpg2s.net/gif/GC_musica3.gif http://www.rpg2s.net/gif/GC_effettispeciali1.gif http://www.rpg2s.net/gif/GC_effettispeciali1.gif http://www.rpg2s.net/gif/GC_gameplay2.gif http://www.rpg2s.net/gif/GC_mapping1.gif http://www.rpg2s.net/gif/GC_programmazione1.gif http://www.rpg2s.net/gif/GC_programmazione1.gif http://www.rpg2s.net/gif/GC_trama1.gif http://www.rpg2s.net/gif/GC_grafica1.gif http://www.rpg2s.net/gif/GC_grafica1.gif http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_premio3.gif http://www.rpg2s.net/gif/GC_premio1.gif http://www.rpg2s.net/gif/GC_premio1.gif http://www.rpg2s.net/gif/GC_premio1.gif http://www.rpg2s.net/gif/GC_premio1.gif

 

http://www.rpg2s.net/awards/bestgraphic1.jpg http://www.rpg2s.net/awards/bestmaker1.jpg

http://www.rpg2s.net/awards/bestmapper1.jpg http://www.rpg2s.net/awards/bestprogrammer3.jpg

http://rpg2s.net/gif/SCContest1Oct.gif http://i54.tinypic.com/15cikht.gif http://img42.imageshack.us/img42/3015/terzoposto.png

 

 

Link to comment
Share on other sites

  • 3 weeks later...
  • 4 months later...

Sò che la discussione è vecchia, ma ho voglia di esercitarmi. ;O;

 

# ò_
class Esercitazione_con_i_metodi
   def operazione_matematica
	  a = 4 + 8
	  b = 7 - 1
	  a/b
   end
	def risultato
	  a/b == 2
  end
 end

Link to comment
Share on other sites

  • 2 weeks later...

Marigno, a parte il fatto che dovevano essere tre metodi e sono due ci sono alcuni errori che ti faccio notare:

 

- nel primo metodo poni le variabili a e b uguali a due numeri (che vengono calcolati da una somma, ma non importa): non è quello che intendevo, dovresti far sommare due variabili tra di loro (es. c = a + b ); comunque non è errato in sé, a parte il fatto che mettere una somma di due numeri non ha molto senso (insomma potresti mettere direttamente il numero) a meno che tu non sia interessato a mettere in evidenza da dove son venuti fuori quei numeri, per esempio delle coordinate rispetto ai quadrettoni della mappa potrebbero essere scritte come 4*32 o 6*32

 

- sempre nel primo metodo, non ho capito il senso di quel a/b .. messo così non ha alcun effetto: l'editor calcola a/b, non lo assegna a nulla e va oltre, aspetto spiegazioni xD

 

- nel secondo metodo di nuovo c'è un istruzione totalmente inutile: questo a/b (variabile a divisa per la variabile b) ti piace proprio, però non era richiesto .. comunque anche quel "== 2" è un confronto .. per cui l'istruzione vista nel complesso "a/b == 2" sarà equivalente a true o false a seconda del contenuto di a e b (nel tuo caso true) che rimane lì, non assegnato a nulla, né restituito dal metodo a qualcosa .. insomma inutile xD

 

Insomma... non c'è neanche una riga giusta, ma mi sa che non avevi capito cosa intendevo: aspetto chiarimenti ;O;

 

@Khan: tutto ok, per fare il perfezionista potevi pure inizializzare le variabili ma tanto non era richiesto quindi .. approved :sisi:

Link to comment
Share on other sites

Marigno, a parte il fatto che dovevano essere tre metodi e sono due ci sono alcuni errori che ti faccio notare:

 

- nel primo metodo poni le variabili a e b uguali a due numeri (che vengono calcolati da una somma, ma non importa): non è quello che intendevo, dovresti far sommare due variabili tra di loro (es. c = a + b ); comunque non è errato in sé, a parte il fatto che mettere una somma di due numeri non ha molto senso (insomma potresti mettere direttamente il numero) a meno che tu non sia interessato a mettere in evidenza da dove son venuti fuori quei numeri, per esempio delle coordinate rispetto ai quadrettoni della mappa potrebbero essere scritte come 4*32 o 6*32

 

- sempre nel primo metodo, non ho capito il senso di quel a/b .. messo così non ha alcun effetto: l'editor calcola a/b, non lo assegna a nulla e va oltre, aspetto spiegazioni xD

 

- nel secondo metodo di nuovo c'è un istruzione totalmente inutile: questo a/b (variabile a divisa per la variabile b) ti piace proprio, però non era richiesto .. comunque anche quel "== 2" è un confronto .. per cui l'istruzione vista nel complesso "a/b == 2" sarà equivalente a true o false a seconda del contenuto di a e b (nel tuo caso true) che rimane lì, non assegnato a nulla, né restituito dal metodo a qualcosa .. insomma inutile xD

 

Insomma... non c'è neanche una riga giusta, ma mi sa che non avevi capito cosa intendevo: aspetto chiarimenti ;O;

 

@Khan: tutto ok, per fare il perfezionista potevi pure inizializzare le variabili ma tanto non era richiesto quindi .. approved :sisi:

 

Nessun chiarimento, ho fatto tutto mentre pensavo al bagno.

Sinceramente, ho sbagliato tutto, solo ora me ne accorgo. xD

Link to comment
Share on other sites

  • 4 months later...
Scusate se riprendo ora sta discussione.. ho quasi finito un corso di C e quindi mi sono letto tutte le lezioni di RGSS e ho capito praticamente tutto.. si può dire che i metodi equivalgono un po' alle funzioni del C?

"Dopo gli ultimi Final Fantasy, ho capito solamente una cosa: che il gioco è bello quando Nomura poco."

Making is not dead. You are dead.
RELEASE: La Bussola d'Oro | Download | Video di anteprima - La Partenza di Hanna

http://i.imgur.com/cFgc2lW.png

Prova Standrama!

Link to comment
Share on other sites

mmm

più o meno...

per semplicità di cose è così °°

però ricorda che i metodi sono vincolati all'"ambiente" in cui sono stati creati

per esempio:

def saluta
print "ciao!" #crea una finestrella e printa la stringa "ciao!"
end
saluta #richiama il metodo saluta

in questo caso nessun problema, ma...

class Salutare
def initialize #primo metodo letto, all'inizializzazione della classe
saluta #richiama il metodo saluta. nessun problema
end
def saluta
print "ciao!"
end
end
saluta # ERRORE "undefinited method for 'saluta' in nil:nil class", 
	  # ovvero non è stato definito alcun metodo 'saluta',
  #perchè non siamo più nella classe in cui è stato creato
classe = Salutare.new #inizializziamo la classe, lui automaticamente
			# leggerà il metodo initialize, il quale eseguirà 
			# il metodo 'saluta'
classe.saluta #nel caso volessimo richiamarlo a mano ^^

spero di essere stato chiaro e soprattutto di aver colto il problema XD

magari ti ho detto cose che non c'entrano una bega (anche perchè il C lo so moooolto poco XD)

Progetti:

 http://i.imgur.com/jmLkIqi.png

http://i54.tinypic.com/2rh4ojq.png

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!
http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/img/fablecontest1st.pnghttp://i43.tinypic.com/1zokd2s.png


http://i.imgur.com/BEu6G.gif

http://i.imgur.com/H1ARhq7.gif

http://i.imgur.com/Af6ijZN.gif

AOT: Associazione Odiamo la Telecom:

http://i.imgur.com/aYJs89E.png

"4 gattini... 4 stelline... E le 4 paperelle non ci stavano :3"

Flame


http://i30.tinypic.com/i27ypj.png

Link to comment
Share on other sites

Sì, sono più o meno come le funzioni: suppongo che ad un livello un po' più tecnico ci siano delle differenze ma francamente non le conosco.

 

Ragiona come se ogni classe fosse un miniprogramma e sei sulla strada giusta secondo me. :sisi:

Link to comment
Share on other sites

...

la semplicità non è il mio forte ù_ù

 

 

*fugge*

Progetti:

 http://i.imgur.com/jmLkIqi.png

http://i54.tinypic.com/2rh4ojq.png

https://github.com/ProGM

 

Crea anche tu il tuo gioco per Game Boy!
http://rpg2s.net/gif/SCContest3Oct.gifhttp://www.rpg2s.net/img/fablecontest1st.pnghttp://i43.tinypic.com/1zokd2s.png


http://i.imgur.com/BEu6G.gif

http://i.imgur.com/H1ARhq7.gif

http://i.imgur.com/Af6ijZN.gif

AOT: Associazione Odiamo la Telecom:

http://i.imgur.com/aYJs89E.png

"4 gattini... 4 stelline... E le 4 paperelle non ci stavano :3"

Flame


http://i30.tinypic.com/i27ypj.png

Link to comment
Share on other sites

 Share

×
×
  • Create New...