Jump to content
Rpg²S Forum
  • 0

Aiuto per imparare l'RGSS


mikb89
 Share

Question

Questo topic non serve per risolvere i problemi con gli script, per quello c'è lo sportello amico, e non contiene neanche un lungo discorso che spiega gli script, ma sarà un corso passo passo con gli utenti che vorranno partecipare e quindi imparare (e se partecipate imparate perchè altrimenti io non mi darò pace).

 

Ogni passo del corso sarà identificato con un numero, che va citato quando gli si riferisce, insieme alla risposta sotto spoiler. Ad esempio questo punto:

 

0) Chi intende partecipare?

 

Per rispondere a questo passo, bisogna scrivere il messaggio così:

 

0) Chi intende partecipare?

 

Io partecipo ^^

 

 

E tutto quello che sta fuori dallo spoiler può essere un commento di altro tipo.

 

La partecipazione è vincolante, nel senso che non andrò avanti col 2° passo se tutti quelli che hanno dichiarato di partecipare non dicono che va bene il primo, quindi partecipate se avete intenzioni serie, altrimenti bloccate tutto ><

 

In qualsiasi momento cmq uno può disdire la partecipazione o uno che non partecipa può iniziare a partecipare.

 

Se chi già conosce gli script nota che sbaglio qualcosa, è pregato di farlo notare, con garbatezza e gentilezza, in modo da non impartire possibili nozioni errate a chi desidera imparare.

 

Credo che sia tutto. Vi aspetto in molti ^^

 

Ecco i link rapidi ai passi già postati.

Passo 1: Le variabili

Passo 2: Gestione delle variabili

Passo 3: Gli array

Passo 4: Le condizioni

Passo 5: I cicli

Edited by mikb89

Script!

 

Roba scritta, guide:

 

Applicazioni:

 

Progetti!

http://img69.imageshack.us/img69/2143/userbarctaf.png http://img641.imageshack.us/img641/5227/userbartemplateb.pnghttp://i46.tinypic.com/ac6id0.png

Link to comment
Share on other sites

  • Answers 146
  • Created
  • Last Reply

Top Posters For This Question

Recommended Posts

  • 0

allora...

 

 

 

>> money = 500

 

>> play3 = 450

 

>> spesa = money - play3

 

>> parole = "avevo " +money.to_s "ma ora mi rimangono solo " +spesa.to_s

 

 

va bene?

Link to comment
Share on other sites

  • 0

Easy, fido....

 

 

 

 

SOLDI = 23.50

 

$commento_riccastro93 = "sei povero"

 

 

 

va bene?

Link to comment
Share on other sites

  • 0
1) Creare una costante e una variabile globale che siano rispettivamente float e stringa. Inserire un numero qualsiasi nel nome di una delle due variabili.

 

easy, fido

 

 

 

SOLDI = 23.50

 

$commento_riccastro93 = "sei povero"

 

 

 

 

Link to comment
Share on other sites

  • 0

allora allora

@kamahl:

 

 

va bene, niente da dire. hai fatto bene anche l'ultima parte dove hai messo il rand, hai capito perfettamente quello che volevo dire.^^

 

 

 

@losco:

 

 

ahia...

ricopio così mi viene più facile controllare

$losco=[] #creo l'array globale losco
if $losco=[] #se l'array losco è vuoto
$losco.push(1) #aggiungi 1 all'array
2.times do #parte il ciclo di due giri
case $losco #nel caso losco
when1 #sia =[1]
$losco.push(2) #aggiungi 2 => losco=[1,2]
when2 #sia =[1,2]
$losco.push(8) #aggiungi 8 => losco=[1,2,8]
end #fine if
end #fine ciclo

allora intanto questo è lol: "creo l'array globale losco" XD non è sbagliato, ma è lol XD

tornando seri...

if $losco=[]

allora innanzitutto se devi controllare vanno messi due = quindi if $losco==[] che può essere benissimo un errore di battitura, ma per sicurezza specifico. sempre relativo a quest'if, non hai messo l'end, che suppongo dovrebbe andare sopra il "2.times do". e fin qui non è grave, ti dirò che sono cose che succedono anche a me.

 

per rispondere alla domanda che hai fatto, when 0 esiste, when0 no. dopo when può andare qualsiasi cosa, una costante, una variabile, un numero, una stringa, ma va lasciato uno spazio.

 

una cosa importante e relativa a questa lezione è l'utilizzo di 2.times do.

se usi il for, scrivendo for x in 0...2, avrai la variabile x dentro il ciclo impostata al numero del giro corrente; nel caso di do, while e until, la variabile col giro devi creartela tu se ti serve. questo è difficile? no, basta creare una variabile (oltre a quella in cui dovrai impostare i numeri) e appena sotto la dichiarazione del ciclo mettere l'incremento di questa.

n = 0
2.times do
n += 1
#qualsiasi codice
end

in questo modo equivarrà a "for n in 0...2". quindi nel case non dovrai mettere $losco ma n in questo caso. puoi sostituire n col nome che più ti piace, ma il procedimento è questo.

 

per la seconda parte dell'esercizio, non è niente di strano. riesci a scrivere una condizione che confronti tre stringhe? come ha fatto kamahl puoi confrontare la 1° con la 2° e una delle due con la 3°, concatenando le due condizioni. dopodiche metti la condizione in un ciclo. quali cicli possono contenere condizioni? while e until, quindi dovrai usare uno di questi. per l'impostazione non è un problema, puoi anche settare direttamente i tre valori dentro il ciclo senza mettere condizioni o cose complicate, l'unica cosa di cui devi tenere conto è che prima o poi questi tre valori devono diventare uguali e quindi finire il ciclo.

 

prova e se non ti è chiara qualcosa dimmi

 

 

 

@psyko:

 

 

come ti ho già detto va bene, poi posta gli altri

 

 

 

un'annotazione che devo fare un pò a tutti riguarda gli spazi e la sistemazione del codice. mantenere un'ordine può sembrare una cosa superficiale, ma invece aiuta molto, quindi è importante metterci attenzione.

 

in particolare i segni di uguaglianza e le operazioni vanno distanziate dal resto:

a = 5
a += 3 if b == 2
c != a ? b = a + c : a = b = c

e lo stesso per le funzioni, forain0..2 non è la stessa cosa di for a in 0..2, darà anche errori di sintassi, quindi badateci.

Script!

 

Roba scritta, guide:

 

Applicazioni:

 

Progetti!

http://img69.imageshack.us/img69/2143/userbarctaf.png http://img641.imageshack.us/img641/5227/userbartemplateb.pnghttp://i46.tinypic.com/ac6id0.png

Link to comment
Share on other sites

  • 0
Link to comment
Share on other sites

  • 0
direi che non ci vado avanti... state abbandonando tutti e l'unico che ha fatto correttamente l'ultimo esercizio è kamahl mentre losco individuo l'ha cominciato ma non l'ha finito. posso capire che questo passo è un pò difficile (forse senza "un pò"), ma provateci, in modo da correggervi se sbagliate. l'ultimo argomento, quello dopo di questo tratterà moduli, classi e funzioni, che non comportano niente di difficile (anzi forse sono più facili delle variabili) e utilizzerò l'esercizio per riassumere tutti gli argomenti precedenti. dopodichè cominceremo ad analizzare gli script e allora diventerà più interessante/utile/quellochevolete, ma prima di continuare voglio che almeno tre persone facciano questo esercizio giusto (quindi ne mancano due)

Script!

 

Roba scritta, guide:

 

Applicazioni:

 

Progetti!

http://img69.imageshack.us/img69/2143/userbarctaf.png http://img641.imageshack.us/img641/5227/userbartemplateb.pnghttp://i46.tinypic.com/ac6id0.png

Link to comment
Share on other sites

  • 0
purtroppo è da due settimane che sto sotto esami e questa storia continua fino a fine novembre, mi scuso con tutti voi se vi ho rallentato (anche se non credo di averlo fatto) ma non riesco a seguire queste "lezioni". Vi prometto che dal 1 dicembre mi rimetto in paro con tutto, anche perchè, facendo ingegneria informatica, sono argomenti che mi interessano molto :)
Link to comment
Share on other sites

  • 0

Damager 0

secondo-me 0,1

Eberk94 0,1

PSYKO 1,2

giangra 0,1,2

alexotter 0,1,2,3

Losco individuo 0,1,2,3,4

Niki#94# 0,1,2,3,4

Kamahl 0,1,2,3,4,5

 

così, una lista orientativa.

0 è l'iscrizione, gli altri numeri sono gli esercizi completati. quello che mi preoccupa è che per ogni esercizio si perdono due utenti XD

 

in ogni caso io son sempre qui, aspetto vostri esercizi^^

Script!

 

Roba scritta, guide:

 

Applicazioni:

 

Progetti!

http://img69.imageshack.us/img69/2143/userbarctaf.png http://img641.imageshack.us/img641/5227/userbartemplateb.pnghttp://i46.tinypic.com/ac6id0.png

Link to comment
Share on other sites

  • 0

Della serie: meglio tardi che mai :rolleyes:

 

5) Creare un array globale vuoto.

Aggiungere all'array i tre numeri 1, 2 e 8 utilizzando un ciclo a scelta.

Impostare un ciclo che continui finchè i tre valori contenuti nell'array sono diversi (quindi che smette quando sono uguali).

Fate in modo che il programma non si blocchi e come ho fatto in questo passo, mettete in ogni riga un commento che ne spiega la funzione.

 

 

$ a=[] #creo a un array globale inizialmente vuoto

lunghezza = 0 # creo la variabile di tipo int per la lunghezza dell'array e la inizializzo a 0

 

 

while lunghezza && uguali==false < 3 # cicla se la lunghezza dell'array è minore di 3 e se gli elementi dell'array sono diversi

case lunghezza

when 0 #se lunghezza=0 aggiungo 1

a.push(1)

when 1 #se lunghezza=1 aggiungo 2

a.push(2)

uguali = a[0]==a[1] #verifica l'uguaglianza tra i valori dell'array

when 2

a.push(8) #se lunghezza=2 aggiungo 8

uguali = a[1]==a[2] || a[0]==a[2] #verifica l'uguaglianza tra i valori dell'array

end

lunghezza += 1 #incremento di 1 la lunghezza

end

 

Edited by Alexotter
Link to comment
Share on other sites

  • 0

@alexotter:

 

 

mmm lo so che sono criptico quando scrivo le cose XD intendevo dire di farne due cicli nell'esercizio, ma capisco che può confondere. cmq:

 

while lunghezza && uguali==false [b]< 3[/b] # cicla se la lunghezza dell'array è minore di 3 e se gli elementi dell'array sono diversi

non so se è proprio un errore che hai fatto tu o se è del tipo quando sposti una parte di testo senza accorgertene, ma c'è il < 3 che sta alla fine invece di stare dopo lunghezza:

while lunghezza [b]< 3[/b] && uguali==false # cicla se la lunghezza dell'array è minore di 3 e se gli elementi dell'array sono diversi

così è come dovrebbe essere

il resto va bene, c'è solo il fatto che il ciclo controlla se sono uguali, ma se non lo sono non li modifica come dovrebbe. per intenderci, bastava anche un inutile:

n = 0
until $a[0] == $a[1] || $a[1] == $a[2]
 n += 1
 $a[n-1] = 5
end

ma il mio obiettivo principale era quello di farvi scervellare XD quindi va bene.

 

ah dimenticavo, nella prima riga, dove crei $a, nota che il tipo ($, @, @@) va scritto attaccato al nome della variabile, altrimenti credo proprio sia errore di sintassi, il tipo fa parte del nome. quindi anche tutte le altre volte dove hai scritto a, andrebbe cambiato con $a

 

 

 

cercherò di dare esercizi più senzati, scusatemi ç_ç

cercherò anche di postare a breve quella lezione su moduli, classi e funzioni e rimettermi in linea per postare le lezioni su RGSS

grazie per la sopportazione xD

Script!

 

Roba scritta, guide:

 

Applicazioni:

 

Progetti!

http://img69.imageshack.us/img69/2143/userbarctaf.png http://img641.imageshack.us/img641/5227/userbartemplateb.pnghttp://i46.tinypic.com/ac6id0.png

Link to comment
Share on other sites

  • 0
A me il corso interessa molto se poi successivamente una volta che tutti hanno imparato il dovuto, andiamo nella sezione "avanzata", ovvero a utilizzare ciò che è fornito dall'rpg maker... sarei molto interessato se la risposta è affermativa ;)

If you think C++ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor and when was the last time you needed one? (Tom Cargill)

 

Se dovete fare una cosa semplice, tipo

 

 

if (a==b) c='pippo';else c='pluto';
Usate le funzionalita' del linguaggio piu' complicato che esiste:

 

c=select decode(sign(a-b),0,"pippo","pluto");
Link to comment
Share on other sites

  • 0

la risposta è affermativa mica tanto^^

 

mikb89 (colui che tiene il corso) ha problemi di connessione.

 

Se volete iscrivervi fatelo eseguite i 5 esercizi proposti in precedenza e chiederò io a qualcuno di correggerli.

http://i428.photobucket.com/albums/qq5/losco_individuo/2cmly83.png

 

http://i428.photobucket.com/albums/qq5/losco_individuo/BannerNGMI-1.png

Membro Alfa della: "Nuova Generazione del Making Italiano"

"Richiedi anche tu il bannerino della NGdMI e contribuisci alla sopravvivenza della specie...avrai un numero tuo di identificazione e un posto nella storia del making!"

Il making con il cuore

http://i62.servimg.com/u/f62/13/12/87/37/nuovob11.png

Nuovo LegendRpgMania

Link to comment
Share on other sites

  • 0

Mi sono deciso (finalmente) a postare l'ultimo passo di questo simil-corso di ruby base. Credo proprio che non continuerò, vedendo quanto tempo mi è stato necessario prima di scrivere questa parte, ma chissà, intanto posto questa.

 

Passo 6: Moduli, classi, funzioni

 

Moduli, classi e funzioni servono per ordinare il codice, per rendere più facile il suo utilizzo e le modifiche e comunque per fare cose altrimenti impossibili in altri modi.

Iniziamo dai moduli.

I moduli sono forse la cosa meno usata dei tre, ma non per questo sono inutili. La definizione a script è semplicemente questa:

module Qualcosa[codice]end

L'unica regola è che il nome del modulo deve iniziare per maiuscola. All'interno del modulo possono andare le costanti (prime lezioni, ecco un buon posto dove usarle) usate per impostazioni (se guardate i vari script credo sarà facile che troviate dei moduli con delle costanti dentro come configurazioni), le classi (che vedremo di seguito), le funzioni (che vedremo anch'esse). Variabili che non sono costanti le potete mettere pure (quelle vanno ovunque) anche se di solito non si fa.

Un'importante funzione dei moduli è quella di modifica di script creati. Cioè quando si fa una patch per qualche script da applicare sotto allo script stesso. Si può ottenere per aliasing, per riscrittura, per aggiunta o coi moduli. Le vedremo tutte a suo tempo e infine approfondiremo.

Perchè usare i moduli?

- per inserire configurazioni degli script;

- per modificare script rgss che hanno già un modulo (RPG, Math);

- per modificare script creati con patch;

- per fare l'esercizio di questo passo :).

Una volta che un modulo è creato, da una funzione, per aver accesso alle costanti, si usano i doppi due punti. Faccio un esempio direttamente a codice:

module ImpostazioniScorrimento_Veloce = false # non lo so, è la prima cosa che mi è venuta in menteend def imposta_scorrimentoif Impostazioni::Scorrimento_Veloce == false@scorrimento = 0else@scorrimento = 1endend

Ecco, non fate molto caso a quello che non abbiamo ancora fatto, ma osservate come il modulo è stato chiamato: Impostazioni::Scorrimento_Veloce.

Ossia, NomeModulo::Costante. Se invece avessimo avuto una funzione dentro, per chiamarla avremmo usato semplicemente il punto: NomeModulo.Funzione.

 

Passiamo ora alle classi. Le classi sono le più importanti per indispensabilità (cioè delle funzioni si può fare a meno, ma delle classi difficilmente). Ne sono esempi gli Scene_QualsiasiCosa, i Game_Qualcosa e in genere tutto, per il fatto che il ruby sia orientato agli oggetti. Questo significa che ogni classe è un oggetto con le sue capacità e caratteristiche. Si parte da

class Esempio end

per poi rifinire di questo oggetto tutto quello che ci serve. Una Window ad esempio avrà la funzione visible per impostare se si vede o no, un oggetto evento avrà la funzione per cancellarlo e così via. Quindi se dovete creare un oggetto, fatelo con class (nessun doppio significato). Per impostare poi le caratteristiche e capacità di questo oggetto utilizziamo le variabili e le funzioni (def). Le variabili vanno create dentro le def (funzioni) e devono essere precedute da @ (o doppia @), dopodichè non saranno nè leggibili, nè modificabili. Per renderli tali infatti si usa una sintassi apposta.

class Esempioattr_accessor :valore1attr_reader :valore2attr_writer :valore3end

Questi sono i tre casi. All'interno della class le variabili si trovano con la @ (o doppia @), mentre dopo l'attr_, le @ vanno sostituite con :. Quindi i : sono attaccati al nome della variabile e non all'attr_, nè lasciati staccati da entrambi.

Vediamo cosa fanno. Con questo codice, valore1 potrà essere letto e scritto, valore2 potrà essere soltanto letto e valore3 soltanto scritto (quest'ultimo caso è rarissimo). Con le funzioni vedremo un altro modo di ottenere la stessa cosa (anche un pò più avanzata) senza usare l'attr_. Un'altra cosa da dire sulle classi è la superclasse.

Faccio un esempio preso dall'rgss:

class Window_SaveFile < Window_Base

La classe Window_Base contiene già abbastanza specifiche di una window, quindi nell'andare a creare una Window_SaveFile, il programmatore con questa sintassi ha fatto in modo che la sua classe ereditasse tutto quello che la superclasse (che si scrive dopo il <) contiene senza bisogno di andarlo a riscrivere. Vediamo un approfondimento, ma prima parliamo delle funzioni.

 

Una funzione si crea scrivendo:

def funzione[codice]end

I suoi utilizzi sono quelli di racchiudere codice usato spesso per non riscriverlo più volte e alcune funzioni di 'supporto' alla classe, che andiamo subito a vedere. Abbiamo parlato delle superclassi. Facciamo un esempio:

class SuperClassedef scrittura_valorep @valoreenddef aggiunta_valore@valore += 1endend class ClasseDerivata < SuperClassedef aggiunta_valoresuperscrittura_valoreendend

Esaminiamo il codice. Intanto è ovvio che la variabile @valore deve essere stata creata e impostata a qualcosa di numerico prima di aggiungere 1, ma non ci interessa. Quello che abbiamo fatto insomma nella classe figlia, è far vedere il valore dopo averlo modificato, una roba inutile, ma utile per capire. Nella superclasse abbiamo una funzione che aggiunge e una che mostra. La funzione che mostra, quindi, pur non essendo stata specificata nella classe figlia, può essere usata. La funzione che aggiunge invece è stata modificata, e quella parolina, super, serve semplicemente a richiamare la funzione originaria della funzione (scusate il gioco di parole) e quindi @valore += 1. Il super poteva essere messo ovunque nella def.

Prima di vedere quell'altra cosa lasciata in sospeso (degli attr_, ricordate?) andiamo a vedere come funziona il passaggio di valori fra le def. Una cosa importante delle def infatti, è quella di poter prendere un valore e restituirne un altro. Vediamo intanto come si scrive:

def somma(valore1, valore2 = 1)a = valore1 + valore2return aend

Le parentesi dopo il nome contengono i valori che prende la funzione. Vediamo che valore2 è impostato uguale a 1. Questo significa che, se non si passa alcun valore, la variabile (perchè valore1 e valore2 sono variabili utilizzabili nell'ambito della def) rimarrà 1, altrimenti assumerà il valore che gli date. La parolina return, invece, seguita da qualcosa, darà quel valore alla funzione. Ovviamente è facoltativo. Questa funzione va utilizzata così:

p somma(5, 6)

Sappiamo che p mostra a schermo una variabile. In questo modo la funzione è come se fosse una variabile, che contiene quello che dice il return. (5, 6) invece sono i valori che andranno a contenere le variabili valore1 e valore2 all'interno della def. Questi valori possono essere più di due e possono essere sia facoltativi (con l'=), sia obbligatori (specificando solo il nome). In genere si mettono prima quelli obbligatori e alla fine quelli facoltativi.

Torniamo quindi alla gestione degli attr_ di una classe.

Supponiamo (senza codice) che una classe abbia l'attributo (variabile, caratteristica, come volete chiamarla) nome. Questo attributo deve essere modificabile, e la cosa è fattibile con attr_. Se però dobbiamo fare in modo che una volta modificato, sia necessario aggiornare la classe (per riscriverlo ad esempio), gli attr_ non bastano. Possiamo sì fare un ciclo che controlla se il vecchio nome è diverso dal nuovo e in tal caso aggiorna la classe, però noi prendiamo in esame la cosa con le funzioni.

Una volta creata la classe, i suoi attributi e le sue funzioni sono raggiungibili tramite il punto (classe.attributo, classe.funzione) e, nel caso dell'attributo, utilizzeremo classe.attributo = valore o valore = classe.attributo a seconda che vogliamo scriverlo o leggerlo. Data la somiglianza con l'utilizzo delle funzioni, possiamo sostiutire la variabile con esse. Faccio il confronto:

class Esempioattr_accessor :nomeend

class Esempiodef nome=(valore)@nome = valoreaggiorna_classeenddef nomereturn @nomeendend

Vedrete che il secondo è più lunghetto, ma non ho riportato per intero il codice del primo perchè non ci interessa. Da quello che abbiamo detto dovrebbe essere già tutto chiaro. La prima def (che contiene un uguale-valore-tra-parentesi) è quella che riceve il valore. La sintassi è così, è diversa da come si usano di solito le def ma è così. Quello che fa all'interno è impostare la variabile e successivamente aggiornare la classe (ho messo un'ipotetico nome di funzione che naturalmente manca nell'esempio). La seconda def invece semplicemente restituisce il valore con return.

Un'ultima cosa che hanno in comune def e classi sono i nomi standard. Cioè i nomi di def che scritti in qul modo hanno una funzione già definita. Farò un accenno superficiale perchè non ci interessa più di tanto. Ad esempio un numero fa parte della class Numeric. Quando aggiungiamo un numero a quell'altro, chiamiamo una funzione della class Numeric che se non sbaglio si chiama __add__ o _add_ o comunque qualcosa di simile. Se noi aggiungiamo questa def in una class window ad esempio, potremo sommare due window e specificare cosa succede quando lo facciamo senza ottenere errore. Ma difficilmente andremo a fare modifiche di questo genere al codice, quindi vediamo soltanto i nomi più importanti. Innanzitutto def initialize. Non abbiamo detto come si chiama una classe e lo diciamo ora:

@finestra = Classe_Window.new

In questo modo la variabile @finestra conterrà un'istanza della Classe_Window. Il .new si scrive sempre per creare una nuova istanza. Avrete visto che alcune classi accettano dei valori, come le def. Faccio un esempio dall'rgss:

@map_interpreter = Interpreter.new(0, true)

Bene, la def initialize è quella che viene immediatamente eseguita appena un'istanza della classe viene creata. Questo esempio impone che nella classe Interpreter, la def initialize accetta almeno due valori, obbligatori o facoltativi. Cioè i valori passati nella creazione della classe giungono (e sono predisposti) nella def initialize della stessa.

Altri due nomi di def solitamente usati sono update e refresh. refresh spesso è anche assente e soprattutto non è un nome standard, mentre update, non essendo neanch'esso un nome standard, per le Scene_ è un pò come se lo fosse, in quanto di solito fra i vari update viene chiamato anche quello della Scene_ stessa. E, in genere la def update è usata per gli aggiornamenti continui (controllo tasti, controllo numeri, etc...) mentre la def refresh è usata per i metodi grafici e occasionalmente, ovvero quando è necessario cancellare tutto e ridisegnare.

Inoltre anche la def main negli Scene_ è importante perchè lo script Main, per aggiornare le Scene_, esegue la def main di esse

 

Faccio prima di concludere un piccolo accenno alla differenza fra @ e @@. E' una cosa poco usata, difficile da comprendere per un novizio, fattibile in altri modi e non ci interessa particolarmente trattarla ma per completezza lo faccio. Sappiamo che se una classe contiene una variabile si usa @ per specificarla. Le doppie @ vanno usate invece per far condividere lo stesso valore a più classi. E' quindi simile per certi aspetti a una variabile globale, di poco. Facciamo per esempio una classe che mostra un quadrato. Nonostante la semplicità non scriverò il codice. Supponiamo che ci sono più quadrati, più classi. Ogni quadrato ha un colore diverso, e quindi la classe ha il valore @colore. E ogni nuova istanza della classe dà la possibilità di cambiare il colore. Giusto per esempio, vogliamo anche che di questi quadrati sia impostabile la grandezza, ma vogliamo che tutti debbano averla uguale. Allora la classe avrà la variabile @@grandezza e basterà cambiarla in un'istanza di questa classe, che sarà cambiata in tutte le altre allo stesso modo. Capirete quindi che si può usare una variabile globale, che si può invece creare la variabile @grandezza e cambiarla manualmente in tutte la istanze. Cioè i metodi ci sono, quindi quello delle @@ è poco usato, ma se l'avete compreso utilizzatelo pure, perchè se si comprende è comodo.

 

Come esercizio non so, improvviso qualcosa.

6) Create un modulo e mettete dentro una costante impostata a 5. Create poi una classe che abbia la variabile valore che sia solo leggibile. Fate in modo che quando la classe viene creata gli viene passato un numero e questo sia sommato alla costante contenuta nel modulo e il risultato venga poi inserito nella variabile valore.

Fuori da tutto, poi create un'istanza della classe e quindi fategli stampare a schermo il valore dell'attributo valore.

 

A quanto pare serve un passo 7 per parlare della modifica di script (creando patch da applicare sotto) perchè altrimenti la lezione veniva troppo lunga. Questo 7 lo faccio più presto possibile dopodichè vedo se fermarmi o no.

Intanto fate domande se non avete capito e l'esercizio se avete capito, così poi posto il 7.

Edited by mikb89

Script!

 

Roba scritta, guide:

 

Applicazioni:

 

Progetti!

http://img69.imageshack.us/img69/2143/userbarctaf.png http://img641.imageshack.us/img641/5227/userbartemplateb.pnghttp://i46.tinypic.com/ac6id0.png

Link to comment
Share on other sites

  • 0
Mi sono deciso (finalmente) a postare l'ultimo passo di questo simil-corso di ruby base. Credo proprio che non continuerò, vedendo quanto tempo mi è stato necessario prima di scrivere questa parte, ma chissà, intanto posto questa.

Sembrerebbe di no. ^ ^

Se guardi nella sezione tutorial del forum Fanton sta facendo delle lezioni sull' RGSS mi pare sia arrivato alla terza

^ ^

Edited by Guardian of Irael

(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)


Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^

http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^

http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^

REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^

 

SUWOnzB.jpg 🖤
http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gif
http://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3
http://i.imgur.com/MpaUphY.jpg by Idriu E:3

Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44)

http://i.imgur.com/PgUqHPm.png
Ufficiale
"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"


http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3
Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^
http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^
http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.png
Grazie Testament XD Fan n°1 ufficiale di PQ! :D

Viva
il Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che non
avevo programmi di grafica per fare un banner su questo pc XD (ora ho di
nuovo il mio PC veramente :D)

Rosso Guardiano della
http://i.imgur.com/Os5rvhx.png

Rpg2s RPG BY FORUM:

Nome: Darth Reveal

 

PV totali 2
PA totali 16

Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.
Bozze vesti non definitive qui.

Equipaggiamento:
Indossa:
60$ e 59$ divisi in due tasche interne
Levaitan

Spada a due mani elsa lunga

Guanti del Defender (2PA)
Anello del linguaggio animale (diventato del Richiamo)

Scrinieri da lanciere (2 PA)

Elmo del Leone (5 PA)

Corazza del Leone in Ferro Corrazzato (7 PA)

ZAINO (20) contenente:
Portamonete in pelle di cinghiale contenente: 100$
Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)
Corda
Bottiglia di idromele
Forma di formaggio
Torcia (serve ad illuminare, dura tre settori)

Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)
Ampolla Bianca

Semi di Balissa

 

CAVALLO NORMALE + SELLA (30 +2 armi) contentente:
66$
Benda di pronto soccorso x3
Spada a due mani

Fagotto per Adara (fazzoletto ricamato)


 

Link to comment
Share on other sites

  • 0

Riassegnare una costante è una brutta pratica, tanto che l'interprete di ruby non lo fa fare e restituisce: SyntaxError: constant-reassignment.

 

Ho deciso quindi di modificare l'esercizio usando la costante come prezzo di riferimento, nell'esempio mostro anche un utilizzo delle variabili di classe

 

module AllevamentoPREZZO_MAIALE = 500 #costante class Fattoria  @@maiali_totali = 0 #variabile condivisa da tutte le fattorie  def initialize(maiali)	@valore = Allevamento::PREZZO_MAIALE*maiali	@@maiali_totali+=maiali  end  def valore	return @valore  end  def self.maiali #dichiaro un metodo di classe	return @@maiali_totali  endend  end kent_farm = Allevamento::Fattoria.new(5)puts "Valore dei Maiali Kent: " + kent_farm.valore.to_sluthor_farm = Allevamento::Fattoria.new(25)puts "Valore dei Maiali Luthor: " + luthor_farm.valore.to_sputs "Maiali Totali: " + Allevamento::Fattoria.maiali.to_s

I Miei Script:
Salva Schermata (3 Aprile 2012)
Attacco Personalizzabile (2 Aprile 2012)
Keyboard Input (Porting) (17 Marzo 2012)
Continua...

Link to comment
Share on other sites

  • 0
Grazie della precisazione Keroro^^

http://i428.photobucket.com/albums/qq5/losco_individuo/2cmly83.png

 

http://i428.photobucket.com/albums/qq5/losco_individuo/BannerNGMI-1.png

Membro Alfa della: "Nuova Generazione del Making Italiano"

"Richiedi anche tu il bannerino della NGdMI e contribuisci alla sopravvivenza della specie...avrai un numero tuo di identificazione e un posto nella storia del making!"

Il making con il cuore

http://i62.servimg.com/u/f62/13/12/87/37/nuovob11.png

Nuovo LegendRpgMania

Link to comment
Share on other sites

  • 0
Questo topic non serve per risolvere i problemi con gli script, per quello c'è lo sportello amico, e non contiene neanche un lungo discorso che spiega gli script, ma sarà un corso passo passo con gli utenti che vorranno partecipare e quindi imparare (e se partecipate imparate perchè altrimenti io non mi darò pace).

 

Ogni passo del corso sarà identificato con un numero, che va citato quando gli si riferisce, insieme alla risposta sotto spoiler. Ad esempio questo punto:

 

0) Chi intende partecipare?

 

Per rispondere a questo passo, bisogna scrivere il messaggio così:

 

 

<div style="margin:20px;margin-top:5px"">

<div class="codetop" style="margin-bottom:2px">Spoiler <input type="button" value="Visualizza" style="width:65px;font-size:10px;margin:0px;padding:0px;" onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = 'Nascondi'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = 'Visualizza'; }"></div><div class="spoiler" style='overflow:auto'>

<div style="display: none;">

Io partecipo ^^

</div>

</div>

</div>

 

E tutto quello che sta fuori dallo spoiler può essere un commento di altro tipo.

 

La partecipazione è vincolante, nel senso che non andrò avanti col 2° passo se tutti quelli che hanno dichiarato di partecipare non dicono che va bene il primo, quindi partecipate se avete intenzioni serie, altrimenti bloccate tutto ><

 

In qualsiasi momento cmq uno può disdire la partecipazione o uno che non partecipa può iniziare a partecipare.

 

Se chi già conosce gli script nota che sbaglio qualcosa, è pregato di farlo notare, con garbatezza e gentilezza, in modo da non impartire possibili nozioni errate a chi desidera imparare.

 

Credo che sia tutto. Vi aspetto in molti ^^

 

Ecco i link rapidi ai passi già postati.

Passo 1: Le variabili

Passo 2: Gestione delle variabili

Passo 3: Gli array

Passo 4: Le condizioni

Passo 5: I cicli

credo sia molto interessante tt la tua spiegazione,ma nn riuscirei a seguire praticamente mai...nn c'è tipo un manuake?

Edited by snob
Don't drink and drive but smoke and fly XD
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share


×
×
  • Create New...