In questo laboratorio non spiegher? nulla, o meglio, vi proporr? degli script da fare e in generale degli esercizi e se avrete problemi vi dar? una mano.
Non c'? limite di gradi o quant'altro, potete partecipare tutti.
Ovviamente potete partecipare anche ai laboratori pi? vecchi e riceverete comunque risposta.
Questo laboratorio ? stato diviso in "Esercizio base" e "Variante difficile" in modo tale da permettere anche a chi non ha mai trafficato con l'rgss di partecipare. Almeno spero.
Laboratorio 2
Esercizio Facile
Cambia il nome dei comandi nella schermata del titolo da [Nuovo, Carica, Esci] a [Nuovo, Esci, Carica].
Se riesci inverti anche l'effetto oltre al nome (in modo che se il giocatore preme su Esci, esce, e se preme su Carica carica una partita).
Variante Difficile
Aggiungi il comando "Extra" tra Carica e Esci. Questo comando aprir? una nuova scena (Scene_Extra) in cui sar? possibile visualizzare immagini del gioco (ovviamente metti immagini a caso).
Scene_extra dovr? essere impostata in modo tale da:
? Mostrare le immagini al centro dello schermo
? Cambiare immagine premendo Destra o Sinistra
? Premendo esc si torna al menu
? Premendo invio si ottiene un effetto sonoro di errore
Se riesci fai in modo che alcune immagini siano visualizzabili e altre no, in base a ci? che viene fatto nel gioco. Per mostrare l'immagine "non visualizzabile" utilizzate un immagine fissa con scritto BLOCCATO per esempio.
Ulteriore Variante Perchihavogliadiesercitarsi?
Fare la stessa cosa della variante difficile, senza creare una nuova scena (tutto all'interno di Scene_title insomma).
Soluzione Variante Difficile
<div style="margin:20px;margin-top:5px" "="">
Questa ? una possibile soluzione alla Variante Difficile. Sottolineo che per ora ho ignorato la parte del "visualizzabili o no" perch? aspetto che qualcuno almeno provi a farla.
Cominciamo andando a inserire in Scene_Title quelle parti necessarie a richiamare Scene_Extra.
In main:
# Creazione testi s1 = "Nuovo" s2 = "Carica" s3 = "Extra" s4 = "Esci" @command_window = Window_Command.new(164, [s1, s2, s3, s4])In update:
if Input.trigger?(Input::C) # I vari casi a seconda della posizione del cursore case @command_window.index when 0 # Nuovo Gioco command_new_game when 1 # Carica command_continue when 2 # Extra command_extra when 3 # Esci command_shutdown end endDopo command_continue:
#-------------------------------------------------------------------------- # - Comando: Extra #-------------------------------------------------------------------------- def command_extra # Suona SE azione $game_system.se_play($data_system.decision_se) # Passa alla scena extra $scene = Scene_Extra.new endE infine la nostra Scene_Extra:
#============================================================================== # - Scene_Extra #------------------------------------------------------------------------------ # La scena coi contenuti extra #============================================================================== class Scene_Extra #-------------------------------------------------------------------------- # - Processo Principale #-------------------------------------------------------------------------- def main # Inizializza l'indice @pic_index = 0 # Inizializza la picture @picture = Sprite.new @picture.bitmap = Bitmap.new(640,480) @picture.x = 320 @picture.y = 240 # Fade Graphics.transition loop do # Aggiornamento Grafica Graphics.update # Aggiornamento Input Input.update # Aggiornamento Frame update # Quando cambia la scena blocca il loop if $scene != self break end end # Preparazione Fade Graphics.freeze # Eliminazione picture @picture.dispose end #-------------------------------------------------------------------------- # - Aggiornamento Frame #-------------------------------------------------------------------------- def update # Quando SX ? premuto if Input.repeat?(Input::LEFT) # Se l'indice ? 0 deve ritornare # al valore 4 if Input.trigger?(Input::LEFT) or @pic_index > 0 # Suona SE Cursore $game_system.se_play($data_system.cursor_se) # Riduci l'indice @pic_index = (@pic_index - 1) % 5 return end end # Quando DX ? premuto if Input.repeat?(Input::RIGHT) # Se l'indice ? 4 deve ritornare # al valore 0 if Input.trigger?(Input::RIGHT) or @pic_index < 4 # Suona SE Cursore $game_system.se_play($data_system.cursor_se) # Aumenta l'indice @pic_index = (@pic_index + 1) % 5 return end end # Quando B ? premuto if Input.trigger?(Input::B) # Suona SE Annulla $game_system.se_play($data_system.cancel_se) # Torna alla mappa $scene = Scene_Title.new return end # Quando C ? premuto if Input.trigger?(Input::C) # Suona SE Azione Impossibile $game_system.se_play($data_system.buzzer_se) return end # Seleziona l'immagine pic = @pic_index + 1 @picture.bitmap= RPG::Cache.picture(pic.to_s+".png") # Centra l'immagine @picture.ox = @picture.bitmap.width / 2 @picture.oy = @picture.bitmap.height / 2 @picture.update return end endSta parte si poteva fare meglio, per esempio facendo in modo che le nuove coordinate della pic e il relativo update vengano calcolate solo quando si entra nella scena o viene cambiato l'indice.