Creare un gioco di ricerca di parole zuppa di alfabeto in flash

Oggi ti mostrerò come creare una semplice ricerca di parole con un'interfaccia "Evidenziatore", che è facile da modificare con le tue parole e il layout. Useremo Flash e AS3. Continuare a leggere!


Anteprima del risultato finale

Diamo un'occhiata al risultato finale su cui lavoreremo:


Passaggio 1: breve panoramica

In questo tutorial utilizzeremo una serie di classi ActionScript per creare un classico gioco di ricerca di parole con alfabeto Alphabet. L'obiettivo del gioco è evidenziare le lettere per formare una parola. Sarai in grado di creare il tuo zuppa di alfabeto e includere le tue parole.


Passaggio 2: Impostazioni documento Flash

Apri Flash e crea un documento 320x480px. Imposta la frequenza dei fotogrammi su 24 fps.


Passaggio 3: interfaccia

Verrà utilizzata una semplice interfaccia arancione, con diverse forme, pulsanti e MovieClip; continuare con i passaggi successivi per creare questa GUI.


Passaggio 4: sfondo

Questo sfondo è stato creato in Flash utilizzando forme rettangolari semplici. Il colore esadecimale per l'arancione è # EE923F.


Passaggio 5: titolo


Per creare il titolo, seleziona prima lo strumento di testo (T), cambia il colore in #EEEEEE e scrivi il testo del titolo. Quindi, duplica il campo di testo (Cmd + D), cambia il colore in # C97B35 e invia il nuovo campo di testo all'indietro per creare l'effetto di stampa tipografica.


Passaggio 6: pulsanti

Usa di nuovo il Strumento di testo per creare due pulsanti come mostrato nell'immagine sopra. Convertili in pulsanti e dai loro nomi di istanze descrittivi per usarli facilmente più avanti nel codice. Converti la grafica in scena in un singolo Un filmato e nominalo TitleView - ricordati di controllare il Esporta per ActionScript scatola.


Passaggio 7: schermata di gioco


Questa è la schermata di gioco - beh, è ​​lo sfondo, poiché tutto in questa schermata verrà creato dinamicamente utilizzando ActionScript 3.


Step 8: About Screen


Il Di schermo apparirà di fronte al Titolo Schermo; usa la grafica e i caratteri usati prima per deporla. Nominalo AboutView e ricorda di controllare il Esporta per ActionScript scatola.


Passaggio 9: avviso


Viene visualizzato un avviso quando vengono trovate tutte le parole, verrà visualizzato un gioco su messaggio e istruzioni. Utilizzare il Strumento rettangolo per crearlo e impostarne il nome istanza AlertView, . Di nuovo segnare il Esporta per ActionScript scatola.


Passaggio 10: suoni

Useremo effetti sonori per migliorare la sensazione del gioco. È possibile trovare il suono utilizzato in questo esempio in Soungle.com utilizzando la parola chiave campana.


Passaggio 11: TweenNano

Useremo un motore di interpolazione diverso dal predefinito incluso nel flash, questo aumenterà le prestazioni e sarà più facile da usare.

È possibile scaricare TweenNano dal suo sito Web ufficiale.


Passaggio 12: impostare la classe del documento


Renderemo interattiva la nostra applicazione utilizzando una classe esterna. Aggiungi il suo nome (Principale) al Classe campo nel Pubblicare sezione del Proprietà pannello per associare il FLA alla classe del documento principale.


Passaggio 13: crea una nuova classe


Creare una nuova classe ActionScript 3.0 (Cmd + N) e salvarla come Main.as nella tua cartella di classe. Questa sarà la classe del documento.


Passo 14: Struttura della classe

Crea la tua struttura di base per iniziare a scrivere il tuo codice.

 pacchetto import flash.display.Sprite; public class Main estende Sprite public function Main (): void // constructor code

Step 15: Classi richieste

Queste sono le classi che dovremo importare affinché la nostra classe funzioni. Il importare direttiva rende disponibili classi e pacchetti definiti esternamente al codice.

 import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.display.Shape; import flash.events.MouseEvent; import flash.display.MovieClip; import com.greensock.TweenNano; import com.greensock.easing.Bounce; import flash.net.navigateToURL; import flash.net.URLRequest;

Passaggio 16: variabili

Queste sono le variabili che useremo; leggere i commenti nel codice per saperne di più su di loro. Alcuni dei loro nomi si spiegano da soli, quindi non ci saranno commenti.

 private var titleView: TitleView = new TitleView (); private var about: AboutView; // parole per trovare private const L1: Vector. = nuovo ["CLASS", "PUBLISH", "DEFAULT", "SETTINGS", "FLASH"]; // Usato per posizionare le parole nello stage private const L1Map: Array = [[0, 0, 'C', 0, 0, 0, 0, 0, 0, 0], [0, 0, 'L', 0, 0, 0, 0, 0, 0, 0], [0, 0, 'A', 0, 0, 0, 0, 0, 0, 'S'], [0, 0, 'S', 0, 0, 0, 0, 0, 0, 'E'], [0, 0, 'S', 0, 0, 0, 0, 0, 0, 'T'], [0, 0, 0, 0, 0, 0, 0, 0, 'F', 'T'], ['D', 'E', 'F', 'A', 'U', 'L', 'T', 0, 'L', 'I'], [0, 0, 0, 0, 0, 0, 0, 0, 'A', 'N'], [0, 0, 0, 0, 0, 0, 0, 0, 'S', 'G'], [0, 0, 'P', 'U', 'B', 'L', 'I', 'S', 'H', 'S'], [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]; alfabeto privato var: Vector. = nuovo ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', ' M ',' N ',' O ',' P ',' Q ',' R ',' S ',' T ',' U ',' V ',' W ',' X ',' Y ' , 'Z']; private var soupFmt: TextFormat = new TextFormat ('Arial', 19, 0x666666); private var wordsFmt: TextFormat = new TextFormat ('Arial', 12, 0xEEEEEE); private var wordsList: TextField = new TextField (); private var line: Shape = new Shape (); private var tfs: MovieClip = new MovieClip (); campana var privata: Bell = new Bell (); var privata corretta: int = 0; // numero di parole trovate finora

Passaggio 17: costruttore

Il costruttore è una funzione che viene eseguita quando viene creato un oggetto da una classe, questo codice è il primo ad essere eseguito quando si crea un'istanza di un oggetto o viene eseguito quando il FLA viene caricato se parte della classe di documenti.

Chiama le funzioni necessarie per iniziare il gioco. Controlla quelle funzioni nei passaggi successivi.

 funzione pubblica finale Main (): void // Code

Passaggio 18: Aggiungi vista titolo

Iniziamo aggiungendo il TitleView dalla Libreria allo stage.

 addChild (titleView);

Passaggio 19: aggiungi pulsanti di ascolto

Questo aggiungerà gli ascoltatori del mouse ai pulsanti nella vista del titolo, che ci porterà alla schermata del gioco o dei crediti.

 funzione finale privata startButtonListeners (action: String = 'add'): void if (action == 'add') titleView.aboutBtn.addEventListener (MouseEvent.MOUSE_UP, showCredits); titleView.startBtn.addEventListener (MouseEvent.MOUSE_UP, showGameView);  else titleView.aboutBtn.removeEventListener (MouseEvent.MOUSE_UP, showCredits); titleView.startBtn.removeEventListener (MouseEvent.MOUSE_UP, showGameView); 

Passaggio 20: Mostra crediti

Il Titoli di coda la schermata viene visualizzata quando l'utente fa clic sul pulsante dei crediti; un ascoltatore del mouse viene aggiunto al completo Un filmato rimuoverlo.

 funzione finale privata showCredits (e: MouseEvent): void titleView.aboutBtn.visible = false; titleView.startBtn.visible = false; about = new AboutView (); about.y = stage.stageHeight + about.height; addChild (circa); TweenNano.to (circa, 0.3, y: stage.stageHeight-about.height, onComplete: function (): void about.addEventListener (MouseEvent.MOUSE_UP, hideCredits);); 

Passaggio 21: Nascondi crediti

Quando il Titoli di coda viene cliccato sullo schermo, verrà interrotto e rimosso dallo stage.

 funzione finale privata hideCredits (e: MouseEvent): void TweenNano.to (circa, 0.3, y: stage.stageHeight + about.height, onComplete: function (): void titleView.aboutBtn.visible = true; titleView.startBtn .visible = true; about.removeEventListener (MouseEvent.MOUSE_UP, hideCredits); removeChild (about); about = null;); 

Passaggio 22: Mostra vista gioco

Le seguenti righe rimuovono il Titolo schermo e lasciare il Gioco schermo visibile. Chiama anche le funzioni necessarie per iniziare il gioco - aggiungeremo queste funzioni nei passaggi successivi.

 funzione finale privata showGameView (e: MouseEvent): void TweenNano.to (titleView, 0.3, y: -titleView.height, onComplete: function (): void startButtonListeners ('rmv'); removeChild (titleView); titleView = nullo;   ); buildSoup (); gameListeners ( 'add'); 

Fermiamoci qui per fare un test rapido e assicurarci che il nostro codice di gioco funzioni:

Tieni presente che alcune righe sono state commentate perché alcune funzioni non sono ancora state create.

Ricorda che i file Milestone sono inclusi nel download sorgente, quindi se per qualche motivo il tuo file non imita questo dai un'occhiata alla fonte per vedere cosa può causare.


Passaggio 23: Ascoltatori di giochi

Questa funzione aggiunge gli ascoltatori del mouse necessari per disegnare la linea che evidenzierà le lettere.

 private final function gameListeners (action: String): void if (action == 'add') stage.addEventListener (MouseEvent.MOUSE_DOWN, startDraw); stage.addEventListener (MouseEvent.MOUSE_UP, detectLetters);  else stage.removeEventListener (MouseEvent.MOUSE_DOWN, startDraw); stage.removeEventListener (MouseEvent.MOUSE_UP, detectLetters); 

Passo 24: Costruisci la zuppa

Una delle funzioni più importanti del gioco. Creerà e posizionerà i personaggi per costruire la zuppa alfabetica. Codificheremo il suo comportamento nei prossimi passaggi.

 funzione finale privata buildSoup (): void // Code ...

Passaggio 25: creare campi di testo caratteri

I cicli for nidificati vengono utilizzati per leggere l'array multidimensionale; viene creato un campo di testo per ogni elemento trovato e viene assegnata una posizione a quel campo di testo.

 per (var i: int = 0; i < 10; i++)  for(var j:int = 0; j < 12; j++)  var tf:TextField = new TextField(); tf.width = 22; tf.height = 22; tf.defaultTextFormat = soupFmt; tf.selectable = false; tf.x = 10 + (31.3 * i); tf.y = 10 + (35 * j)

Passaggio 26: Visualizza caratteri casuali

Le parole sono già impostate nell'array delle lettere originali, quindi il codice seguente cambierà gli 0 in caratteri casuali ottenuti dalla matrice Alphabet. Poiché questo cambia solo gli 0, i caratteri originali non verranno modificati.

 / * Cambia 0 in lettere casuali * / if (L1Map [j] [i] == 0) L1Map [j] [i] = alfabeto [Math.floor (Math.random () * alphabet.length)];  tf.text = L1Map [j] [i]; addChild (TFS); tfs.addChild (tf); 

Passaggio 27: Aggiungi elenco parole Campo testo

Questo campo di testo mostra le parole da trovare, è posizionato nella parte inferiore dello stage.

 / * Aggiungi lista parole * / wordsList.selectable = false; wordsList.x = 5; wordsList.y = 430; wordsList.autoSize = TextFieldAutoSize.LEFT; wordsList.defaultTextFormat = wordsFmt;

Passaggio 28: elenca le parole

Per visualizzare correttamente le parole dall'array possiamo lanciarlo su una stringa, ma dobbiamo rimuovere le virgole che vengono aggiunte automaticamente.

 / * Rimuovi ',' * / var string: String = "; for (var k: int = 0; k < L1.length; k++)  string += String(String(L1[k]).replace(',',")) +";  wordsList.text = string; addChild(wordsList);

Questo conclude il buildSoup () funzione.


Passaggio 29: avviare la linea di selezione

La linea di selezione inizierà a disegnare quando l'utente fa clic sul palco; questa funzione crea la forma e aggiunge un listener per seguire il movimento del mouse.

 funzione finale privata startDraw (e: MouseEvent): void line = new Shape (); addChild (line); line.graphics.moveTo (mouseX, mouseY); line.graphics.lineStyle (16, 0xFF8E2A, 0.4); stage.addEventListener (MouseEvent.MOUSE_MOVE, drawLine); 

Passaggio 30: traccia la linea di selezione

Il prossimo codice disegna la linea nella direzione del mouse.

 private final function drawLine (e: MouseEvent): void line.graphics.lineTo (mouseX, mouseY); 

Fermiamoci qui per fare un test rapido e assicurarci che il nostro codice di gioco funzioni:

Disegna la linea, ma non si ferma. Ci occuperemo di questo nel prossimo passo.

Tieni presente che alcune righe sono state commentate poiché alcune funzioni non sono ancora state create.

Ricorda che i Milestones sono inclusi nei file sorgente, quindi se per qualche motivo il tuo file non imita questo dai un'occhiata alla fonte per vedere cosa potrebbe causare.


Passaggio 31: Rileva la funzione delle lettere

Quando il pulsante del mouse è attivo, il metodo di disegno si arresta e viene eseguito il codice per rilevare le parole evidenziate. Spiego questo codice nei prossimi passi.

 private final function detectLetters (e: MouseEvent): void 

Passaggio 32: Ottieni lettere selezionate

Per rilevare i caratteri evidenziati, creiamo una variabile stringa che memorizzerà i campi di testo colpiti dalla linea di selezione.

 / * Ottieni lettere selezionate * / var selectedWord: String = "; for (var i: int = 0; i < tfs.numChildren; i++)  if(line.hitTestObject(tfs.getChildAt(i)))  selectedWord += (tfs.getChildAt(i) as TextField).text;  

Passaggio 33: controllare se Word è in elenco

Quindi confrontiamo il risultato con ogni parola nell'array predefinito; se si trova la parola viene riprodotto un suono, il corretta la variabile viene incrementata e la parola cambia colore nella barra in basso.

 / * Controlla se la parola è sulla lista * / per (var j: int = 0; j < L1.length; j++)  if(selectedWord == L1[j])  wordsList.htmlText = wordsList.htmlText.replace( selectedWord, ""+ selectedWord +""); bell.play (); correct ++;

Passaggio 34: verifica la presenza di Game Over

Questo codice chiama e avvisa quando vengono trovate tutte le parole.

 if (correct == L1.length) alert (); 

Passaggio 36: avviso

Questa funzione interrompe il gioco e mostra il messaggio di gioco, aggiunge anche un ascoltatore del mouse per ripristinare il gioco quando viene cliccato.

 private final function alert (): void gameListeners ('rm'); var alert: AlertView = new AlertView (); addChild (allarme); alert.addEventListener (MouseEvent.MOUSE_UP, restart); // o il prossimo livello! TweenNano.from (alert.messageBox, 0.5, y: -alert.messageBox.height, facilità: Bounce.easeOut); 

Questo conclude il detectLetters () funzione.


Passaggio 37: riavvia la funzione

La funzione successiva ricaricherà il file SWF, ripristinando qualsiasi variabile e metodo e tornando alla prima schermata.

 riavvio della funzione finale privata (e: MouseEvent): void navigateToURL (new URLRequest (stage.loaderInfo.url), '_level0'); 

Passaggio 38: Test di gioco

Ora siamo pronti a testare il nostro gioco e vedere se tutto funziona come previsto.


Passaggio 39: Modifica elenco parole

Puoi cambiare la lista delle parole semplicemente cambiando questa riga nel codice:

 const privato L1: Vector. = nuovo ["CLASS", "PUBLISH", "DEFAULT", "SETTINGS", "FLASH"]; // Parole da trovare

Questo cambierà solo l'elenco di parole che il codice dovrebbe rilevare; per far apparire effettivamente le parole nella zuppa dell'alfabeto, leggi il passaggio successivo.


Passaggio 40: modifica delle matrici della mappa

Il brodo Alphabet viene creato sulla base di questo array di mappe 10x12. Basta cambiare le lettere in quelle desiderate per aggiungere e posizionare le parole e usare 0 per tutto il resto. Le virgolette possono rendere il processo difficile, quindi consiglio di scrivere i caratteri solo all'inizio e poi di aggiungere le virgolette quando la mappa è pronta.

 private const L1Map: Array = [[0, 0, 'C', 0, 0, 0, 0, 0, 0, 0], [0, 0, 'L', 0, 0, 0, 0, 0, 0, 0], [0, 0, 'A', 0, 0, 0, 0, 0, 0, 'S'], [0, 0, 'S', 0, 0, 0, 0, 0, 0, 'E'], [0, 0, 'S', 0, 0, 0, 0, 0, 0, 'T'], [0, 0, 0, 0, 0, 0, 0, 0, 'F', 'T'], ['D', 'E', 'F', 'A', 'U', 'L', 'T', 0, 'L', 'I'], [ 0, 0, 0, 0, 0, 0, 0, 0, 'A', 'N'], [0, 0, 0, 0, 0, 0, 0, 0, 'S', 'G'] , [0, 0, 'P', 'U', 'B', 'L', 'I', 'S', 'H', 'S'], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];

Conclusione

Crea le tue zuppe di alfabeto utilizzando l'array di mappe sopra.

Spero che questo tutorial ti sia piaciuto, grazie per la lettura!