Comment faire 2048 bien

Fait juste pour le plaisir!

Une AI est ajoutée, grâce à DJBen. Appuyez sur « Hint » pour montrer indice (par exemple Déplacement vers la gauche / droite / haut / bas); appuyez sur « Exécuter Auto » pour lancer AI automatiquement. Check it out dans la branche AI. Vous pouvez également consulter cette démo vidéo sur YouTube.







Enjeux et améliorations en cours

Actuellement, la profondeur de recherche est 2 et il échoue parfois. Vous pouvez augmenter le nombre de 3 ou plus en changeant la valeur de retour - (NSInteger) maximumSearchingDepth dans M2GlobalState + AI.h.

Idéalement, l'IA devrait chercher de 0 profondeur à l'infini et un temps, il enregistre le meilleur mouvement actuel lors de la recherche de la finition profondeur actuelle et arrête immédiatement lorsque chronométré et retourner le meilleur mouvement à ce jour. Cependant, j'ai un peu de mal lorsqu'ils traitent avec NSOperationQueue donc je ne le faisais pas de cette façon. Maintenant, l'AI ne recherche que le -maximumSearchingDepth spécifié.

Comme il est un dérivé de l'original 2048, ce n'est pas la même chose. De façon plus explicite, il a les ajouts suivants:

Cette version de 2048 est construit en utilisant SpriteKit, le nouveau moteur de jeu 2-D Apple a présenté iOS 7. En conséquence, il faut iOS 7 à courir. D'autre part, cette application a les deux grandes propriétés suivantes:

  • Elle ne repose pas sur une bibliothèque tierce. Non pas que Cocos-2D n'est pas grande, mais le fait qu'il utilise SpriteKit signifie qu'il n'a pas de dépendances.
  • Il n'a pas aucune image. C'est vrai. L'interface utilisateur est entièrement fait soit par UIKit ou par Core Graphics. Consultez les fichiers associés pour voir comment cela se fait, si vous êtes curieux.






Tout d'abord, la meilleure chose à propos du code est qu'il est assez bien documenté. La plupart des méthodes ont la documentation de style Apple, ce qui signifie que vous pouvez cliquer trois fois sur le nom de la méthode pour obtenir sa documentation.

  • La classe M2GameManager contrôle la logique du jeu. Il n'y a qu'une seule action dans le jeu: se déplacer. Ainsi, la majorité de cette classe gère le mouvement. Le reste est de vérifier si vous avez gagné ou mort, etc.
  • La classe M2Grid est la structure de données pour le conseil. L'original 2048 utilisé un tableau 1-D, mais diable, tableau 2-D ne semble pas être trop mal ici. sauf en boucle est un peu laid, alors j'ai fait une fonction d'assistance forEach.
  • La classe M2Cell est le s « slot ». Ils ne sont pas les tuiles elles-mêmes. L'avantage d'avoir cette classe est que les cellules ne se déplacent jamais, de sorte qu'ils sont de bonnes références et ils font des choses pas gâcher.
  • La classe M2Tile est la tuile réelle, ce qui est la classe SpriteKit réelle. Si vous voulez tout est un exemple de code pour SpriteKit, voilà. Je crois que mes animations sont plus lisses que les autres 2048 sur l'App Store, et sont plus proches de l'animation originale.
  • La classe M2GlobalState est une classe mondiale accessible de partout dans l'univers. Eh bien, des choses global est mal, non? Au moins nous dit-on. Mais, il est au moins mieux résumer la substance globale en un seul objet (espace de noms), et qui est un singleton là.
  • La classe M2Theme et ses sous-classes contrôlent le thème.
  • Il y a aussi quelques classes de contrôleur et les classes de vue. Il est sans doute une meilleure idée de faire le jeu au-dessus scène SpriteKit, mais j'étais paresseux donc je truqué à l'aide d'une vue. La classe M2GridView est celui qui tire le conseil d'administration, d'ailleurs.

Toutes les contributions sont les bienvenues! Si vous y apporter des améliorations, souvenez-vous de vous mettre à la page « A propos de 2048 » pour vous obtenir un crédit.







Articles Liés