Bienvenue dans le dernier tutoriel de notre série de jeux Brick Breaker! Dans ce didacticiel, nous allons gérer la logique des collisions restantes, rechercher les états de gain et de perte, les niveaux de changement, etc..
Assurez-vous de lire partie 1 et partie 2 de cette série pour bien comprendre le code présenté dans ce tutoriel.
Lorsque la balle entre en collision avec une brique, nous utiliserons la même technique que celle appliquée à la raquette pour déterminer le côté de la balle:
function removeBrick (e) - Vérifie le côté de la brique touché par la balle, gauche, droite si (e.other.name == 'brick' et (ball.x + ball.width * 0.5) < (e.other.x + e.other.width * 0.5)) then xSpeed = -5 elseif(e.other.name == 'brick' and (ball.x + ball.width * 0.5) >= (e.other.x + e.other.width * 0.5)) alors xSpeed = 5 end end
Quand une brique est touchée, on utilise l'autre paramètre de la collision événement pour savoir exactement quelle brique a été touchée, puis supprimez-la du groupe de briques et de la scène:
-- Bounce, Remove if (e.other.name == 'brick'), puis ySpeed = ySpeed * -1 e.other: removeSelf () e.other = nil bricks.numChildren = bricks.numChildren - 1
Chaque coup frappé ajoutera 100 points au score. Le score sera pris de la constante de score et ajouté au score actuel sous forme de texte.
score = score + 1
scoreNum.text = score * SCORE_CONST
score: setReferencePoint (display.CenterLeftReferencePoint)
scoreNum.x = 54
fin
Ce code vérifie s’il ne reste plus de briques sur la scène et affiche le message "Vous avez gagné" sinon:
if (bricks.numChildren < 0) then alert(' You Win!', ' Next Level ?') gameEvent = 'win' end end
La vitesse de la balle est déterminée par le xSpeed et ySpeed variables. Quand le mettre à jour la fonction est exécutée, la balle commence à bouger en utilisant ces valeurs pour le placement sur chaque image.
mise à jour de la fonction (e) - Ball Movement ball.x = ball.x + xSpeed ball.y = ball.y + ySpeed
Ce code vérifie les collisions de mur avec le ballon et répond en envoyant le ballon dans la direction opposée lorsque cela est nécessaire:
si (ball.x < 0) then ball.x = ball.x + 3 xSpeed = -xSpeed end--Left if((ball.x + ball.width) > display.contentWidth) puis ball.x = ball.x - 3 xSpeed = -xSpeed end - Right if (ball.y < 0) then ySpeed = -ySpeed end--Up
Une déclaration if est utilisée pour vérifier si la raquette manque le ballon. Si la valeur est true, une alerte est affichée pour demander à l'utilisateur s'il souhaite réessayer..
if (ball.y + ball.height> paddle.y + paddle.height) alors alert ('You Lose', 'Play Again?') gameEvent = 'lost' end - down / lost
L'écran d'alerte affiche les informations du joueur sur le statut de la partie. Il est montré quand un événement gagnant / perdant est atteint.
Deux paramètres sont utilisés dans cette fonction:
fonction alert (t, m) gameListeners ('remove') alertBg = display.newImage ('alertBg.png') box = display.newImage ('alertBox.png', 90, 202) transition.from (box, heure = 300, xScale = 0.5, yScale = 0.5, transition = easing.outExpo) titleTF = display.newText (t, 0, 0, 'akashi', 19) titleTF: setTextColor (254,203,50) titleTF: setReferencePoint (display.CenterReferencePoint ) titleTF.x = display.contentCenterX titleTF.y = display.contentCenterY - 15 msgTF = display.newText (m, 0, 0, 'akashi', 12) msgTF: setTextColor (254,203,50) msgTF: setReferencePoint (display.CenterReferencePoint ) msgTF.x = display.contentCenterX msgTF.y = display.contentCenterY + 15 box: addEventListener ('tap', redémarrer) alertScreen = display.newGroup () alertScreen: insert (alertBg) alertScreen: insert (alert) alertScreen: insert ( titleTF) alertScreen: insert (msgTF) end
La fonction suivante vérifie l’état du jeu (victoire, perte, fin) et effectue l’action correspondante:
fonction restart (e) if (gameEvent == 'win' et table.maxn (niveaux)> currentLevel) alors currentLevel = currentLevel + 1 changeLevel (levels [currentLevel]) - niveau suivant levelNum.text = tostring (currentLevel) elseif ( gameEvent == 'win' et table.maxn (niveaux) <= currentLevel) then box:removeEventListener('tap', restart) alertScreen:removeSelf() alertScreen = nil alert(' Game Over', ' Congratulations!') gameEvent = 'finished' elseif(gameEvent == 'lose') then changeLevel(levels[currentLevel])--same level elseif(gameEvent == 'finished') then addMenuScreen() transition.from(menuScreen, time = 300, y = -menuScreen.height, transition = easing.outExpo) box:removeEventListener('tap', restart) alertScreen:removeSelf() alertScreen = nil currentLevel = scoreText:removeSelf() scoreText = nil scoreNum:removeSelf() scoreNum = nil levelText:removeSelf() levelText = nil levelNum:removeSelf() levelNum = nil ball:removeSelf() ball = nil paddle:removeSelf() paddle = nil score = 0 end end
Cette fonction change le niveau si nécessaire:
function changeLevel (niveau) - Efface les briques de niveau: removeSelf () bricks.numChildren = 0 briques = display.newGroup () - Supprimer la zone d'alerte: removeEventListener ('tap', redémarrer) alertScreen: removeSelf () alertScreen = nil - - Réinitialiser la position de la balle et de la raquette ball.x = (display.contentWidth * 0.5) - (ball.width * 0.5) ball.y = (paddle.y - paddle.height) - (ball.height * 0.5) -2 paddle. x = display.contentWidth * 0.5 - Redraw Bricks buildLevel (niveau) - Début de l’arrière-plan: addEventListener ('tap', startGame) end
Afin de commencer le jeu, le Principale la fonction doit être appelée. Avec le code ci-dessus en place, nous le ferons ici:
Principale()
Le fichier Default.png est une image qui s’affiche dès le démarrage de l’application pendant que l’iOS charge les données de base pour afficher l’écran principal. Ajoutez cette image dans le dossier source de votre projet, elle sera automatiquement ajoutée par le complémenteur Corona..
En utilisant les graphiques que vous avez créés auparavant, vous pouvez maintenant créer une belle et jolie icône. La taille de l'icône de l'iPhone non rétine est 57x57px, mais la version de la rétine est 114x114px et le magasin iTunes nécessite une version de 512x512px. Je suggère de créer d'abord la version 512x512, puis de la réduire pour les autres tailles.
Il n'est pas nécessaire que les angles soient arrondis ou que la lumière soit transparente, iTunes et l'iPhone le feront pour vous..
Il est temps de faire le test final. Ouvrez le simulateur Corona, accédez au dossier de votre projet, puis cliquez sur Ouvrir. Si tout fonctionne comme prévu, vous êtes prêt pour l'étape finale!
Dans le simulateur Corona, accédez à Fichier> Construire et sélectionnez votre appareil cible. Remplissez les données requises et cliquez sur construire. Attendez quelques secondes et votre application sera prête pour le test de l'appareil et / ou la soumission pour la distribution.!
Le résultat final est un jeu personnalisable et divertissant. Essayez d'ajouter vos propres graphiques et niveaux personnalisés pour pimenter les choses!
J'espère que vous avez aimé cette série de tutoriels et que vous l'avez trouvé utile. Merci pour la lecture!