Jump to content
Rpg²S Forum

Corso di RGSS


ProGM
 Share

Recommended Posts

lol

 

scusatemi tanto, ho deciso un momento merdoso per iniziare un corso, datemi tempo di finire ste cazzo di verifiche finali ._.

 

No problem, io sono sempre qui ;)

Hoplà.

Link to comment
Share on other sites

  • Replies 72
  • Created
  • Last Reply

Top Posters In This Topic

davvero non vi fucilate? allora inizio XD

 

Lezione 1 - Le Basi

Ovvero "la parte noiosa"

 

Purtroppo senza basi non si fa un tubo, però di solito questa fase miete migliaia di aspiranti scripter :sisi:

Cercherò di essere semplice (sacrificando la "giustezza" nella spiegazione) così che possano seguirmi tutti:

Ogni linguaggio di programmazione (in questo caso di scripting, ma fa nulla ^^) di alto livello (ovvero lontano dal linguaggio del processore e vicino al linguaggio umano) si basa sulle regole logiche basilari del cervello umano:

-ricordare qualcosa (assegnazione di un valore ad una variabile)

-fare comparazioni tra informazioni che sappiamo (variabile diversa da un'altra)

-creare dei casi (se succede questo, fai qualcos'altro, altrimenti ecc...)

(ce ne sono molte altre ma per ora arriviamo fin qui)

Ogni linguaggio (appunto) deve comunicare questi concetti tramite una sintassi (es: per farci capire da un francese, parliamo in francese, non in russo :| ). La sintassi del ruby è l'inglese semplificato, con regole abbastanza fisse.

Vantaggi e svantaggi del ruby

vantaggi: niente dichiarazione delle variabili, sintassi chiara e che difficilmente porta a creare errori, niente compilazione

svantaggi: un po' lento nell'esecuzione, è fatto per chi sa già programmare in altri linguaggi, quindi spesso ci si trova a poter fare una certa cosa in 20 modi diversi, alcuni comprensibili, altri meno.

Le variabili

Come appunto dice il nome sono dei "contenitori di informazioni" che possono variare il proprio valore (se programmate ad eventi non vi sarà molto difficile capire). Le variabili possono assumere valori di qualsiasi tipo:

-boolean: sono come le switch, possono assumere il valore "acceso" ( true ) oppure spento ( false )

-integer: numero intero maggiore o minore di 0

-string: testo, identificato dalle "" o dalle '' (es: a = "ciao ^^" )

-fixnum: numero a virgola mobile ( es: 5732.8643 )

-array: (detto anche vettore) un contenitore ordinato di più valori (ne parleremo più avanti)

Operatori

sono tutti quei comandi che si occupano di modificare il valore di una variabile:

-assegnazione: il comando in ruby è "=", e si occupa di dare un valore ad una variabile ( es: a = 4 significa assegna alla variabile a il valore 4 ); attenzione, questo "=" non è assolutamente da confondere con l'uguale matematico, questo assegna un valore, quello ne compara due.

-operatori matematici:

più ( + ) somma un valore ad un altro, valido sia per fixnum, che per string, che per integer (es: a = 4 + 5 => 9 , f = "ciao " + "come va?" => "ciao come va?")

meno ( - ) sottrazione, valido solo per fixnum e integer

per ( * ) prodotto, valido per fixnum, string e integer (es: a = 3 * 2 => 6 , a = "ciao" * 3 => "ciaociaociao")

diviso ( / ) divisione, valido per fixnum e integer. in integer approssima al valore senza virgole, fixnum da il valore esatto (es: a = 3 / 2 => 1 , a = 3.0 / 2.0 => 1.5 )

resto della divisone ( % ) valido solo per integer, da il resto della divisione (a = 3 / 2 => 1 )

 

W.I.P.

 

Compiti per casa:

1) chiedete cosa non avete capito :| soprattutto perchè ho il dubbio di essere stato mooooooolto caotico

2) aprite rpgmaker, create un evento e fate un po' di prove con le variabili (usando chiama script). per farvi restituire su schermo quello che avete ottenuto basta scrivere print:

a = 5 / 3
print a #questo restituisce il contenuto di a

3) aperto rpgmaker premete f1, andate su cerca e scrivete "strings", "integer", "fixnum", si elencano i vari comandi riferiti al tipo di valore. Leggete tutto per bene e cercate di capire, poi chiedete cosa non avete capito ^^

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

Cristallino come l'acqua.

1) chiedete cosa non avete capito :| soprattutto perchè ho il dubbio di essere stato mooooooolto caotico

 

3) aperto rpgmaker premete f1, andate su cerca e scrivete "strings", "integer", "fixnum", si elencano i vari comandi riferiti al tipo di valore. Leggete tutto per bene e cercate di capire, poi chiedete cosa non avete capito ^^

1) una sola domanda fixnum corrisponde ai float o ai double degli altri linguaggi?, cioè è asingola o doppia precisione?

 

3)Sfortunatamente la mia guida è jappo, è possibile avere un link dove trovare la stessa documentazione in ita o eng?

 

 

 

Attendo con ansia le prossime lezioni.

Fiero membro della:

[img]http://img87.imageshack.us/img87/9409/yumenosoftgw5.png[/img]

[url="http://rpg2s.net/forum/index.php?showtopic=1529"][img]http://img225.imageshack.us/img225/8845/tenshibanxd5.png[/img][/url] [color="#0000FF"][b]A [i][url="http://yumeno.altervista.org/"][color="#9932CC"]YumeNo-Soft[/color][/url][/i] Production[/b][/color]
Link to comment
Share on other sites

1) si, float, double, fixnum, è uguale, non ho mai capito la differenza :| scusa l'ignoranza xD

2)look here

 

@marigno: no,mio nonno in cariola Oo secondo te 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

1) si, float, double, fixnum, è uguale, non ho mai capito la differenza

 

La differenza stà tutta in quanti byte di memoria vengono riservati alla variabile, in genere 4 per i float e 8 per i double. Questo incide su quante cifre decimali al max. si possono memorizzare e che sono circa 6 per i float e circa 15 peri i double. Da questo deriva il nome "numero reale a precisione singola" per i float e "numero reale a precisione doppia" per i double.

Cmq il numero di byte dipende dal linguaggio ed anche dal compilatore che si usa, per questo ero curioso di sapere per l'RGSS come funzionava.

 

P.S.

Spero solo di non aver incasinato le vostre menti con le mie spiegazioni contorte.

Fiero membro della:

[img]http://img87.imageshack.us/img87/9409/yumenosoftgw5.png[/img]

[url="http://rpg2s.net/forum/index.php?showtopic=1529"][img]http://img225.imageshack.us/img225/8845/tenshibanxd5.png[/img][/url] [color="#0000FF"][b]A [i][url="http://yumeno.altervista.org/"][color="#9932CC"]YumeNo-Soft[/color][/url][/i] Production[/b][/color]
Link to comment
Share on other sites

no, hai fatto bene a spiegarlo ^^

comunque ho fatto ricerche:

Superclasse (ovvero classe principale) = numeric

divisa in

-Integer, ovvero numeri interi con o senza meno con sottoclassi sottoclassi: fixnum = numeri a virgola mobile max 31 bit di allocazione, bignum = numeri a virgola mobile limitati solo dalla ram del pc in questione

-float: uguale a quello del C

 

se non avete capito niente chissene, perchè tanto non è una cosa particolarmente utile in rgss 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

Pro... Allenandomi con gli operatori ho notato una cosa: il nome di una variabile non può assumere certi caratteri come:

 

"!" "=" ecc... Poi non si può inserire lo spazio, per lo spazio bisogna usare "_".

 

Comunque sei stato limpido, e soprattutto leggero :*.

Ora vedo di allenarmi ancora di più ^^.

 

Comunque per il fatto dei compiti... Ancora non ho capito xD.

Link to comment
Share on other sites

"!" "=" ecc... Poi non si può inserire lo spazio, per lo spazio bisogna usare "_".

scusate a volte mi capita di sottintendere cose che non andrebbero sottintese ^^

 

comunque...

Lezione 1: continuazione sugli operatori

esistono anche operatori detti di confronto, ovvero che dati due valori li mettono a confronto e restituiscono true se è andato a buon fine, false se no:

-operatore di uguaglianza == (doppio uguale): equivale all'uguale matematico...

es: 3 == 3 -> true, 3 == 4 -> false

-operatori numerici: sono > (maggiore di), = (maggiore o uguale a), 1 -> true

-operatore di disuguaglianza: != . es: "ciao" != "siodiaos" -> true, 2 != 2 -> false

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

oggi pensavo di introdurre classi, superclasse,iperclassi e merdaclassi, ma prima mi sa che conviene:

 

Lezione 2: Funzioni basilari

If, else, elsif e unless

questi sono i comandi logici basilari, molto simili a quelli ad eventi, solo che hanno potenzialità illimitate. L'if è un comando logico che permette di eseguire certi comandi solo se sono presenti certe condizioni. le operazioni che dovrà compiere l'if vanno limitate da un end che ne indica la fine. L'if fa "passare" a leggere le operazioni solo se ottiene il risultato true (di solito tramite un operatore di confronto). Mi spiego meglio:

a = 25 #assegnazione di valore
if a == 25 #il confronto a == 25 restituisce true, ovviamente
print "il valore è corretto!" #questo messaggio viene mostrato solo se a == 25, come in questo caso, altrimenti viene ignorato
end

l'else invece indica altrimenti, ovvero l'operazione da compiere se il confronto ha restituito false:

a = 10 #assegnazione di valore
if a == 25 #il confronto a == 25 restituisce false
print "il valore è corretto!" #questo messaggio non viene mostrato
else
print "il valore è sbagliato"
end

l'elsif invece è semplicemente un else unito ad un if:

a = 8 #assegnazione di valore
if a == 25 #il confronto a == 25 restituisce false
print "il valore è 25"
elsif a == 8 #il confronto a == 8 restituisce true
print "il valore è 8"
else
print "il valore non è nessuno dei due"
end

l'unless invece è l'opposto dell'if, ovvero fa "passare" il comando se il confronto restituisce false. per il resto è uguale all'if:

a = 8 #assegnazione di valore
unless a == 25 #il confronto a == 25 restituisce false
print "il valore non è 25"
else
print "il valore è 25"
end

Inoltre (e tutti dissero: "ooooooh, noooooo" xD) è possibile concatenare più condizioni per volta tramite:

-AND (o anche &) serve a far "passare" se tutte le condizioni messe sono vere (o false per l'unless):

if a == 5 and f = "testo"

-OR (oppure | ) invece se almeno una delle condizioni sono vere (o false per l'unless)

-NOT (oppure ! davanti al primo termine di paragone) serve a concatenare un if e un unless:

if a == 5 and not f = "testo"

per ora mi fermo, se no metto troppa carne sul fuoco... fate un po' di esperimenti con i chiama script ^^

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

ah, si, un appunto sulle if:

se ci troviamo a dover controllare un boolean scrivere:

if var == true

oppure scrivere

if var

è la stessa cosa, perchè il risultato di entrambe può essere solo true e false.

se invece si fa una stessa cosa con una variabile non boolean ne controlla l'esistenza (ovvero restituisce true se esiste, false se non esiste :| )

var = 5
if var
print var
end

 

inoltre esiste una cosidetta sintassi rapida... ovvero, se il contenuto di if ... end è di solo una riga si può tranquillamente fare così:

print var if var

che equivale esattamente a scrivere:

if var
print var
end

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

se invece si fa una stessa cosa con una variabile non boolean ne controlla l'esistenza (ovvero restituisce true se esiste, false se non esiste :| )

Sicuro di questa cosa? Negli altri linguaggi di programmazione il blocco dell'if viene eseguito solo se il valore della variabile è > di 0 altrimenti viene saltato. Devo fare un pò di prove.

Non c'è niente stile il while degli altri linguaggi?(oddio volendo si piò usare l'unless negando l'argomento però mi sembra + scomodo)

Il for per l'RGSS come funziona?

Fiero membro della:

[img]http://img87.imageshack.us/img87/9409/yumenosoftgw5.png[/img]

[url="http://rpg2s.net/forum/index.php?showtopic=1529"][img]http://img225.imageshack.us/img225/8845/tenshibanxd5.png[/img][/url] [color="#0000FF"][b]A [i][url="http://yumeno.altervista.org/"][color="#9932CC"]YumeNo-Soft[/color][/url][/i] Production[/b][/color]
Link to comment
Share on other sites

sono sicuro della prima cosa, controlla tu stesso...magari ho sbagliato, capita

le altre cose le devo ancora spiegare :| comunque esistono sia while che for

while condizione

end
for var in range # esempio 1..3 oppure un array

end

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

Chiedo venia o sommo maestro dell'RGSS, per aver dubitato della tua parola.

Il fatto è che in c/c++ e java la cosa è un tantino diversa (probabilmente dipende dal fatto che lì non si può usare una variabile senza averla prima dichiarata, boh farò approfondimenti).

 

Attendo con ansia la prossima lezione.

Fiero membro della:

[img]http://img87.imageshack.us/img87/9409/yumenosoftgw5.png[/img]

[url="http://rpg2s.net/forum/index.php?showtopic=1529"][img]http://img225.imageshack.us/img225/8845/tenshibanxd5.png[/img][/url] [color="#0000FF"][b]A [i][url="http://yumeno.altervista.org/"][color="#9932CC"]YumeNo-Soft[/color][/url][/i] Production[/b][/color]
Link to comment
Share on other sites

Le if versione ridotta, ovvero come complicarsi la vita in mille e uno modi

purtroppo devo spiegare anche questo, perchè viene usato in certe classi dell'rgss. In ruby è possibile fondere insieme una if e una assegnazione (o anche operazione matematica e simili) allo stesso tempo. credo che un esempio sia d'obbligo:

scrivere

f = 5
a = (f == 5 ? "ok :P" : "non è 5;_;")
print a

è equivalente a scrivere:

f = 5
if f == 5
a = "ok :P"
else
a = "non è 5;_;"
end
print a

aaaaaaaaaaaaaallora xD lo so che è un casino, ma state attenti:

il ? equivale all'if, solo che va messo alla fine del confronto e non all'inizio Oo

il : vuol dire else ed è uguale all'else :|

le parentesi servono semplicemente da limite, dicono che quella espressione va letta tutta insieme ^^

 

Il piccolo angolo delle dimenticanze:

ovviamente mi sono dimenticato di spiegare delle cose :|

riguardo all'assegnazione:

è possibile abbreviare la sintassi:

a = a + 1

con la sintassi:

a += 1

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

Continuo:

Gli array (o vettori)

gli array sono dei contenitori, delle scatole che possono contenere altri valori. i valori di un array sono ordinati, ovvero vengono salvati nell'ordine in cui il programmatore li scrive:

per esempio:

a = [10, "ciao", 2948.39]

come avrete capito le [] identificano l'array e la virgola indica che lo "spazio" di quel valore è finito. In un array i valori vengono assegnati ad un numero che ne identifica la posizione. questo numero va da 0 a quello che volete.

tornando all'esempio di prima:

a = [10, "ciao", 2948.39]
print a[1] # il numero uno indica che verrà letto il secondo (attenti, non il primo) valore contenuto nell'array, ovvero "ciao"

è possibile compiere operazioni con gli array:

somma + (unisce insieme 2 array, mettendoli uno di seguito all'altro)

a = [1, 4]
b = [5, 9]
print a +b #risultato [1, 4, 5, 9]

differenza - (prende i valori del primo e li confronta con il secondo, poi elimina nel primo quelli in comune)

a = [4, 9]
b = [4, 7]
print a-b # risultato [9]

e molti altri, che non sto qui a spiegare perchè li trovate spiegati alla voce array sulla guida di rpgmaker (sono una quantità infinita, leggete poi chiedete cosa non capite)

è inoltre possibile decidere a mano che numero assegnare al valore:

a = [] #con questo creiamo un array vuoto su cui lavorare
a[5]= "ciao" #il sesto valore dell'array sarà "ciao"

altre funzioni usate spesso:

comando size: restituisce il numero di valori contenuti in un array

e si usa:

a = [5, 3]
print a.size # restituisce 2

push(valore): aggiunge alla coda dell'array un valore o una serie di valori

a = [5, 3]
print a.push(99, 733) # [5, 3, 99, 733]

un appunto: i valori strings sono molto simili ad array (sono in realtà array di valori ascii, ovvero una serie ordinata di valori letterali). per questo motivo le strings si comportano in parte come gli array, ovvero hanno la funzione size, che restituisce in numero di lettere di una stringa (inclusi spazi, punteggiature ecc) e si può sapere che lettera è presente nel punto x

es:

s = "ciao, come va?"
print s.size # restituisce 14
print s[3] # la quarta lettera della frase, ovvero "o"

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

Guest
This topic is now closed to further replies.
 Share


×
×
  • Create New...