Corona SDK Créer un jeu de soupe à l'alphabet - Interaction

Ceci est le deuxième volet de notre tutoriel Corona SDK Alphabet Soup Game. Dans le tutoriel d'aujourd'hui, nous allons ajouter à notre interface et commencer à coder l'interaction du jeu. Continuer à lire!


Étape 1: Déclarez les fonctions

Déclarer toutes les fonctions comme local au début.

 local principal =  local addTitleView =  local startBtnuttonListeners =  showCredits local =  local hideCredits =  local showGameView =  local gameListeners =  local buildSoup =  local startDraw =  local hitTestObjects =  detectLetters local =  alerte locale = 

Étape 2: constructeur

Nous allons ensuite créer la fonction qui initialisera toute la logique du jeu:

 fonction Main () addTitleView () end

Étape 3: Ajouter la vue du titre

Maintenant, nous plaçons TitleView dans la scène et appelons une fonction qui ajoutera le robinet les auditeurs aux boutons.

 fonction addTitleView () titleBg = display.newImage ('titleBg.png') title = display.newImage ('title.png') title.x = display.contentCenterX title.y = 120 startBtn = display.newImage ('startBtn.png ') startBtn.x = display.contentCenterX startBtn.y = display.contentCenterY + 20 aboutBtn = display.newImage (' aboutBtn.png ') aboutBtn.x = display.contentCenterX aboutBtn.y = display.contentCenterY + 65 titleView = display. newGroup () titleView: insert (titleBg) titleView: insert (title) titleView: insert (startBtn) titleView: insert (aboutBtn) startButtonListeners ('add') end end

Étape 4: écouteurs du bouton Démarrer

Cette fonction ajoute les auditeurs nécessaires à la TitleView boutons.

 function startButtonListeners (action) if (action == 'add') puis aboutBtn: addEventListener ('tap', showCredits) startBtn: addEventListener ('tap', showGameView) sinon aboutBtn: removeEventListener ('tap', showCredits) startBrand: 'tap', showGameView) end end

Étape 5: Afficher les crédits

L’écran des crédits s’affiche lorsque l’utilisateur appuie sur le bouton À propos de, un bouton robinet écouteur est ajouté à la vue des crédits pour le supprimer.

 function showCredits: tap () aboutBtn.isVisible = false startBtn.isVisible = false about = display.newImage ('about.png') about.x = about.width * 0.474 about.y = display.contentHeight + about about.height transition. to (about, time = 300, y = display.contentHeight - about.height / 2.4, onComplete = function () about: addEventListener ('tap', hideCredits) end) end

Étape 6: Masquer les crédits

Lorsque l'écran des crédits est exploité, il sera interpolé hors de la scène et supprimé.

 function hideCredits () transition.to (environ, heure = 300, y = display.contentHeight + environ.hauteur, onComplete = fonction () aboutBtn.isVisible = vrai startBtn.isVisible = vrai sur: removeEventListener ('tap', hideCredits) display.remove (about) about = nil end) end

Étape 7: Afficher la vue de jeu

Quand le Début appuyez sur le bouton, la vue du titre est interpolée et supprimée pour révéler la vue du jeu.

 function showGameView: tap () transition.to (titleView, heure = 300, y = -titleView.height, onComplete = fonction () display.remove (titleView) titleView = nil buildSoup () gameListeners ('add') end) fin

Étape 8: Auditeurs du jeu

Ce code ajoute des écouteurs à l’arrière-plan au jeu. Ceux-ci seront utilisés pour tracer la ligne de sélection et identifier les lettres sélectionnées..

 fonction gameListeners (action) if (action == 'add'), puis gameBg: addEventListener ('touch', startDraw) gameBg: addEventListener ('touch', detectLetters) sinon gameBg: removeEventListener ('touch', startDraw) gameBg: removeEventListener ( 'toucher', détecter les lettres) fin fin

Étape 9: Créer une fonction soupe

Une des fonctions principales du jeu; cela va parcourir la table Map pour créer tous les champs de texte et les placer dans la scène, passez à l'étape suivante pour voir son comportement.

 function buildSoup () - Code… fin

Étape 10: Créer un TextField de personnage

Un double pour est utilisé pour identifier les éléments de la table Carte, un pour les valeurs horizontales et un pour la verticale. Le code créera un champ de texte pour chaque valeur trouvée dans la table, puis les placera dans la scène..

 pour i = 1, 10 pour j = 1, 12 pour tf local = display.newText (", 0, 0, 'Arial', 19) tf: setTextColor (102, 102, 102) tf.width = 22 tf. height = 21 tf.x = math.floor (-10 + (31,3 * i)) tf.y = math.floor (-10 + (35 * j))

Étape 11: Afficher des lettres aléatoires

Les mots choisis sont déjà dans la table et le reste des valeurs sont remplies par des 0 pour le moment. Les lignes suivantes modifient ces 0 en une lettre aléatoire.

 -- Remplacez les 0 par des lettres aléatoires si (L1Map [j] [i] == 0) alors L1Map [j] [i] = alphabet [math.floor (math.random () * table.maxn (alphabet)) + 1] end tf.text = L1Carte [j] [i] tfs: insérer (tf) end end

Étape 12: Ajouter une liste de mots

Ce code crée deux champs de texte qui contiendront la liste des valeurs à rechercher et les valeurs déjà trouvées..

 -- Ajouter mots Liste des mots locauxString = "pour i = 1, # L1 faire des motsString = motsString…"… L1 [i] fin wordsList = display.newText (wordsString, 5, 430, 'Arial', 14) wordsList: setTextColor (238, 238, 238) currentWords = display.newText (", 5, 455, 'Arial', 14) currentWords: setTextColor (238, 146, 63)

Étape 13: Tracer une ligne de sélection

Une ligne semi-transparente sera utilisée pour mettre en surbrillance les lettres de la scène. Dans la fonction suivante, cette ligne est créée et ajoutée à la scène..

 fonction startDraw: touch (e) if (e.phase == 'commencé') puis initX = ex initY = ey elseif (e.phase == 'terminée') puis line = display.newLine (initX, initY, ex, ey ) line.width = 16 ligne: setColor (255, 142, 42, 60) lignes: insert (line) end end

Étape 14: Révision du code

Voici le code complet écrit dans ce tutoriel à côté de commentaires pour vous aider à identifier chaque partie:

 -- Alphabet Soup Game - Développé par Carlos Yanez - Masquer la barre d'état display.setStatusBar (display.HiddenStatusBar) - Graphiques - [Arrière-plan] - [Arrière-plan de jeu] local gameBg = display.newImage ('bg.png') - - [Vue de titre] local titleBg titre local local startBtn local aboutBtn - [TitleView groupe] local titleView - [CreditsView] local about - [Liste de mots Textfield] local wordsListe local currentWords - [Lettre Texfields Container] local tfs = display .newGroup () - [Ligne de sélection] ligne locale lignes locales = display.newGroup () - Alerte locale [Alerte] - [Son] bell local = audio.loadStream ('bell.caf') - Variables locales L1 = 'IPHONE', 'ANDROID', 'CORONA', 'MOBILE', 'JEUX' local L1Map = 0, 0, 'I', 0, 0, 0, 'G', 0, 0, 0 , 0, 0, 'P', 0, 0, 0, 'A', 0, 0, 0, 0, 0, 'H', 0, 0, 0, 'M', 0, 0 , 0, 0, 'M', 'O', 'B', 'I', 'L', 'E', 0, 0, 0, 0, 0, 'N', 0, 0 , 0, 'S', 0, 0, 0, 0, 0, 'E', 0, 0, 0, 0, 0, 0, 0, 'C', 'O', 'R' , 'O', 'N', 'A', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'A', 'N', 'D', 'R', 'O', 'O', 'I', 'D', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 alphabet local = "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' local correct = 0 - Fonctions local Main =  local addTitleView =  local startBtnuttonListeners =  local showCredits =  local hideCredits =  local showGameView =  local gameListeners =  local buildSoup =  local startDraw =  hitTestObjects local =  detectLetters local =  alerte local =  fonction Main () addTitleView () fonction de fin addTitleView () titleBg = display.newImage ('titleBg.png') title = display. newImage ('title.png') title.x = display.contentCenterX title.y = 120 startBtn = display.newImage ('startBtn.png') startBtn.x = display.contentCenterX startBtn.y = display.contentCenterY + 20 - startBtn.name = 'startBtn' aboutBtn = display.newImage ('aboutBtn.png') aboutBtn.x = display.conte ntCenterX aboutBtn.y = display.contentCenterY + 65 --aboutBtn.name = 'aboutBtn' titleView = display.newGroup () titleView: insert (titleBg) titleView: insert (title) titleView: insert (startBtn) titleView: insert (aboutBtn) startButtonListeners ('add') fonction finale startButtonListeners (action) if (action == 'add') then aboutBtn: addEventListener ('tap', showCredits) startBtn: addEventListener ('tap', showGameView) else aboutBtn: removeEventListener ('tap' , showCredits) startBtn: removeEventListener ('tap', showGameView) fin de fonction showCredits: tap () aboutBtn.isVisible = false startBtn.isVisible = false about = display.newImage ('about.png') about.x = about.width * 0.474 about.y = display.contentHeight + about.height transition.to (about, time = 300, y = display.contentHeight - about.height / 2.4, onComplete = function () à propos de: addEventListener ('tap', hideCredits ) fin) fin fonction hideCredits () transition.to (environ, heure = 300, y = display.contentHeight + environ.hauteur, onComplete = fonction () aboutBtn.is Visible = true startBtn.isVisible = true about: removeEventListener ('tap', hideCredits) display.remove (about) about = nil end) fonction de fin showGameView: tap () transition.to (titleView, heure = 300, y = -titleView.height, onComplete = function () display.remove (titleView) titleView = nil buildSoup () gameListeners ('add') end) fonction de fin gameListeners (action) if (action == 'add') then gameBg: addEventListener ('touch', startDraw) gameBg: addEventListener ('touch', detectLetters) sinon gameBg: removeEventListener ('touch', startDraw) gameBg: removeEventListener ('touch', detectLetters) fonction d'extrémité buildSoup () pour i = 1, 10 faire pour j = 1, 12 faire local tf = display.newText (", 0, 0, 'Arial', 19) tf: setTextColor (102, 102, 102) tf.width = 22 tf.height = 21 tf.x = math.floor (-10 + (31.3 * i)) tf.y = math.floor (-10 + (35 * j)) - Modifie les 0 en lettres aléatoires si (L1Carte [j] [i] == 0 ) puis L1Map [j] [i] = alphabet [math.floor (math.random () * table.maxn (alphabet)) + 1] end tf.text = L1Map [j] [i] tfs: insert (tf) fin end - Ajouter une liste des mots lister wordsString = "pour i = 1, # L1 faire wordsString = wordsString…"… L1 [i] end wordsList = display.newText (wordsString, 5, 430, 'Arial', 14) wordsList: setTextColor (238, 238, 238) currentWords = display.newText (", 5, 455, 'Arial', 14) currentWords: setTextColor (238, 146, 63) fin de la fonction startDraw: touchez (e) si (e.phase == 'begin') puis initX = ex initY = ey elseif (e.phase == 'terminé') puis line = display.newLine (initX, initY, ex, ey) line.width = 16 ligne: setColor (255, 142, 42, 60) lines: insert (line) end end

La prochaine fois…

Dans la prochaine et dernière partie de la série, nous allons gérer l’identification de la lettre, afficher les mots déjà trouvés et définir les dernières étapes à suivre avant la publication, comme la création d’un test d’application, la création d’un écran de démarrage, l’ajout d’une icône et enfin la construction. l'application. Restez à l'écoute pour la dernière partie!