Construire un jeu de poker dans Corona Configuration de l'interface

Dans ce didacticiel en deux parties, je vais vous montrer comment créer un jeu de poker avec le SDK Corona. Vous en apprendrez davantage sur les commandes tactiles, les éléments d’interpolation, les minuteries et la création d’une fonction de tri personnalisée..

introduction

Dans le premier tutoriel, nous allons nous concentrer sur la configuration du projet et la création de l'interface utilisateur du jeu. Pour vous enthousiasmer à propos de ce projet, vous trouverez ci-dessous une capture d'écran de la présentation du jeu lorsqu'il sera terminé..


Les cartes à jouer ne sont pas inclus dans les fichiers de téléchargement. Si vous souhaitez suivre, vous pouvez acheter le jeu de cartes sur Graphic River ou utiliser un autre jeu de cartes. Les dimensions de chaque carte sont 75px x 105px, ce qui se traduit par 150px x 210px pour le @ 2x Taille.

Si vous souhaitez exécuter l'application de démonstration de ce didacticiel, vous devez ajouter la carte dans le répertoire du projet. Les images pour les cartes devraient commencer par h, c, , ou s, avec un numéro ajouté à la lettre (d1.png à d12.png, h1.png à h13.png, etc.).

Si vous souhaitez travailler avec les fichiers vectoriels d'origine, les graphismes de la machine de poker ont été créés par Andrei Marius et sont disponibles sur VectorTuts +. N'hésitez pas à les télécharger à partir de Vectortuts+.

1. Nouveau projet

Ouvrez le simulateur Corona, cliquez sur Nouveau projet, et configurez le projet comme indiqué ci-dessous, entrez les détails suivants. Sélectionnez un emplacement pour enregistrer votre projet et cliquez sur D'accord. Cela créera un dossier avec un certain nombre d'icônes et trois fichiers qui sont importants pour nous., main.lua, config.lua, et build.settings. Nous examinerons chaque fichier au cours des prochaines étapes..


2. Paramètres de construction

le build.settings Le fichier est responsable des propriétés de construction du projet. Ouvrez ce fichier, supprimez son contenu et remplissez-le avec l'extrait de code suivant..

 settings = orientation = default = "landscapeRight", pris en charge = "landscapeLeft", "landscapeRight",,

Dans build.settings, nous définissons l'orientation par défaut et limitons l'application à seulement soutenir une orientation de paysage. Vous pouvez apprendre quels autres paramètres vous pouvez inclure dans build.settings en consultant la documentation Corona..

3. Config.lua

Les fichiers config.lua gèrent la configuration de l'application. Comme nous l'avons fait avec build.settings, ouvrez ce fichier, supprimez son contenu et ajoutez le code suivant.

 application = content = width = 768, height = 1024, scale = "letterbox", fps = 30, imageSuffix = ["@ 2x"] = 2, - les images avec "@ 2x" ajoutées seront utilisées pour iPad. 3

Ceci définit la largeur et la hauteur par défaut de l'écran, utilise boîte aux lettres pour redimensionner les images, définit le nombre d'images par seconde sur 30, et utilise le imageSuffix réglage pour la sélection d'image dynamique. Les fichiers à télécharger pour ce tutoriel incluent deux fichiers pour chaque image., imageName.png et [email protected]. Les iPad avec écran Retina utiliseront le @ 2x images, tandis que l'iPad 1 et 2 utilisera les images régulières.

Vous pouvez apprendre quelles autres propriétés vous pouvez définir dans config.lua en consultant la documentation Corona.

4. Main.lua

le main.lua fichier est le fichier que l'application charge en premier et utilise pour amorcer l'application. Nous allons placer tout notre code dans ce fichier. Au cours des prochaines étapes, nous allons supprimer un certain nombre de fonctions. Vous devriez tous les ajouter à main.lua.

5. Masquer la barre d'état

Nous ne voulons pas que la barre d'état apparaisse dans notre application. Ajouter ce qui suit à la ligne à main.lua pour y parvenir.

 display.setStatusBar (display.HiddenStatusBar)

6. Variables

L'extrait de code suivant déclare les variables dont nous aurons besoin tout au long du projet. Lisez les commentaires pour mieux comprendre à quoi sert chaque variable. La plupart d'entre eux sont explicites.

 local pokerMachine = display.newImage ("cardsBG.png", true) pokerMachine.anchorX, pokerMachine.anchorY = 0,0 - Définit les images d'ancrage pour lesquelles il utilise les nouveaux costumes locaux de Graphics 2.0 = "h", "d", "c", "s"; - coeurs = h, diamants = d, massues = c, pont local de pique; - Le paquet de cartes local playerHand =  --Possède les cartes de joueurs locales cashOutButton local betMaxButton local betButton local dealButton local holdButtons =  --Le bouton "En attente" local isNewGame = true local MAXBETAMOUNT = 15 - Montant maximal joueur peut parier instructions localesText local betAmount = 0 - Combien le joueur a parié jusqu'ici creditText local betText local winText local gamesText local gameData =  - Ceci tiendra des données de jeu - Les crédits et le nombre de jeux joués

7. installer

le installer la fonction est utilisée pour configurer les éléments du jeu et démarrer le jeu.

 fonction setup () end

8. boutons de configuration

Cette fonction permet de configurer les boutons du jeu..

 fonction setupButtons () end

9. setupTextFields

Cette fonction configure le champ de texte utilisé dans l'application.

 fonction setupTextFields () end

dix. enableDealButton

Comme son nom l’indique, cette fonction active le bouton Deal.

 function enableDealButton () fin

11. disableDealButton

Cette fonction désactive le bouton deal.

 fonction disableDealButton () end

12. enableBetButtons

Cette fonction active les boutons de pari.

 function enableBetButtons () end

13. disableBetButtons

Cette fonction désactive les boutons de pari.

 fonction disableBetButtons () end

14. enableHoldButtons

Cette fonction active les boutons de maintien.

 function enableHoldButtons () end

15. disableHoldButtons

Cette fonction active les boutons de maintien.

 function disableHoldButtons () end

16. createDeck

Cette fonction crée un jeu de cartes.

 function createDeck () end

17. holdCard

Cette fonction passe dans la main du joueur et détermine quelles cartes sont retenues..

 fonction holdCard (event) end

18. pari max

Cette fonction est appelée lorsque le joueur mise le montant maximum.

 fonction betMax () end

19. pari

Cette fonction est appelée lorsque le joueur place un pari réel.

 fonction bet () end

20. doDeal

Cette fonction gère la distribution des cartes.

 fonction doDeal () end

21. dealInitialHand

Cette fonction traite la main initiale.

 fonction dealInitialHand () end

22. dealNewCards

Cette fonction traite la deuxième partie de la main.

 fonction dealNewCards () end

23. getHand

Cette fonction détermine la main du joueur.

 fonction getHand () end

24. nouveau jeu

Cette fonction réinitialise toutes les variables et lance un nouveau jeu..

 fonction newGame () end

25. récompenses

Cette fonction attribue au joueur l'argent gagné.

 fonction awardWinnings (theHand, theAward) fin

26. resetCardsYPosition

Cette fonction réinitialise les cartes y position après qu'un joueur soit titulaire d'une carte.

 fonction resetCardsYPosition () end

27. générer une carte

Cette fonction génère une carte au hasard.

 function generateCard () fin

28. getCard

Cette fonction appelle getGenerateCard et le met à l'écran.

 fonction getCard (index) end

29. Mise en œuvre boutons de configuration

Maintenant que toutes nos fonctions sont supprimées, nous allons commencer à les mettre en œuvre. Mettre en place boutons de configuration comme indiqué ci-dessous.

 function setupButtons () cashOutButton = display.newImage ("buttonCashOut.png", 89,572) cashOutButton.anchorX, cashOutButton.anchorY = 0,0 local holdButtonPosition = 186 pour i = 1,5 local tempHoldButton = display.newImage ("buttonHold1". png ", holdButtonPosition + (93 * (i-1)), 572) tempHoldButton.buttonNumber = i tempHoldButton.anchorX, tempHoldButton.anchorY = 0,0 table.insert (holdBoutons, tempHoldButton) et betMaxButton = display.newImage .png ", 679,572) betMaxButton.anchorX, betMaxButton.anchorY = 0,0 betButton = display.newImage (" buttonBet.png ", 775,572) betButton.anchorX, betButton.anchorY = 0,0 dealButton = display.newImage (" buttonDeal .png ", 869,572) dealButton.anchorX, dealButton.anchorY = 0,0 instructionsText = display.newText (" ", 400,400, native.systemFont, 30) instructionsText: setFillColor (0,0,0) enableBetButtons () end

Dans boutons de configuration, nous initialisons nos boutons en tant que nouvelles images. Nous stockons le tempHoldButtons dans un tableau afin que nous puissions les référencer sans avoir à créer cinq variables distinctes. Nous avons également mis en place instructionsTexte et activez les boutons de pari. le afficher l'objet a une méthode nommée Nouvelle image, qui accepte le chemin d'accès à l'image ainsi qu'une position x et y. Comme mentionné dans la documentation, le Nouvelle image La méthode a plusieurs paramètres facultatifs. Dans ce tutoriel, nous utilisons la nouvelle classe Graphics 2.0 et nous devons donc définir les images. anchorX et ancrage positions. Pour en savoir plus sur la migration d'anciens projets afin d'utiliser la nouvelle classe Graphics 2.0 dans la documentation Corona..

Ajouter un appel à installer à la fin de main.lua et ensuite appeler boutons de configuration à l'intérieur installer.

 setup () - Ajoute à la fin de "main.lua"
 fonction setup () setupButtons () end

Si vous deviez tester votre application maintenant, vous devriez voir l'interface avec les boutons.

30. Mise en œuvre setupTextFields

Dans setupTextFields, nous configurons les champs de texte dans l'application. Jetez un oeil à sa mise en œuvre ci-dessous.

 function setupTextFields () instructionsText = display.newText ("", 400,400, native.systemFont, 30) instructionsText: setFillColor (0,0,0) creditText = display.newText ("", 800,185, native.SystemFont, 22) creditText. width = 150 creditText.align = "right" creditText: setFillColor (255,0,0) betText = display.newText ("", 800,270, native.SystemFont, 22) betText.width = 150 betText.align = "right" betText : setFillColor (255,0,0) winText = display.newText ("", 800 355, native.SystemFont, 22) winText.width = 150 winText.align = "right" winText: setFillColor (255,0,0) gamesText = display.newText ("", 800 440, native.SystemFont, 22) gamesText.width = 150 gamesText.align = "right" gamesText: setFillColor (255,0,0) end

le afficher objet a la méthode nouveauTexte qui prend comme paramètres la texte, X et y les coordonnées, la police et la taille de la police. le nouveauTexte Cette méthode prend plusieurs paramètres facultatifs, que vous pouvez explorer dans la documentation. Nous utilisons le nouveau setFillColor méthode de Graphics 2.0, qui accepte les pourcentages. Dans cet exemple, nous définissons les champs de texte en rouge. En mettant le aligner propriété à droite, le texte sera aligné à droite dans le champ de texte. Vous devez définir le largeur la propriété aussi bien si vous utilisez aligner. Appel setupTextFields dans installer.

 fonction setup () setupButtons () setupTextFields () fin

Si vous exécutez à nouveau l'application, vous ne remarquerez aucun changement car les champs de texte sont vides pour le moment. Ils sont prêts pour du texte si.

31. randomSeed

Parce que nous voulons obtenir une carte aléatoire, nous devons créer le générateur aléatoire. Si nous ne le faisions pas, nous finirions toujours par avoir le même caractère aléatoire. Entrez l'extrait de code suivant dans notre installer une fonction.

 function setup () math.randomseed (os.time ()) setupButtons () setupTextFields () fin

32. createDeck

La mise en œuvre de la createDeck la fonction n'est pas trop difficile non plus. Nous parcourons le costume table et ajouter un numéro de 1 à 13 à cela. Nous l'insérons ensuite dans la table de pont. Les images de nos cartes sont nommées d1.png, h3.png, etc. avec 1 être l'as et le 13 être le roi.

 function createDeck () deck = ; pour i = 1, 4 do pour j = 1, 13 do tempCard locale = convient à [i]… j table.insert (deck, tempCard) end end end

h2> Conclusion

Cela met fin à la première partie de ce didacticiel en deux parties. Dans la deuxième partie, nous finirons le jeu. J'espère te voir là-bas.