Mode texte 2048 jeu en C, algorithme expliqué - laboratoires LEASEWEB

Mode texte 2048 jeu en C, algorithme expliqué - laboratoires LEASEWEB

Vous pouvez déplacer les tuiles dans quatre directions à l'aide des touches fléchées: haut, bas, gauche et droite. Tous les numéros de la carte glisseront dans cette direction jusqu'à ce qu'ils atteignent le mur et si elles se bousculent alors deux numéros seront combinés en un seul si elles ont la même valeur. Chaque numéro sera combiné une fois par coup. Chaque mouvement d'un nouveau numéro 2 ou 4 apparaît. Si vous avez un 2048 sur la carte que vous avez gagné, mais vous perdez une fois que le conseil d'administration est pleine et vous ne pouvez pas faire un geste.

Je choisis pour stocker le champ dans un tableau à deux dimensions qui est appelé bord de 4 × 4.

Depuis que je veux que le conseil d'administration à traiter comme carte [x] [y], le conseil d'administration se compose d'un ensemble de quatre colonnes taille quatre. La première colonne est le tableau [2,0,4,0]. Si on appuie sur le bouton jusqu'à ce devrait devenir [2,4,0,0]. La fonction « slideArray () » est reponsible pour cela. Cette fonction « glisser » les chiffres dans les tableaux comme celui-ci:

L'algorithme peut simplement utiliser carte [x] pour pointer vers une colonne et travailler directement sur ce point. En pseudocode, c'est ce que l'algorithme fait:

L'algorithme ci-dessus exécuté fera toutes les transformations, il:

Mais il y a un problème, il va aussi faire ceci:

Les deux années sont fusionnées en quatre et les quatre premiers est fusionné dans ce qui en fait huit. C'est faux. Il devrait faire ceci:

Ceci est évité en ajoutant une variable « stop » qui sera initialement fixé à zéro, mais quand une fusion a été fait, il sera réglé sur la position de fusion plus un. Ceci garantira une diapositive suivante arrête avant qu'elle ne se transforme en nouveau ce numéro, car doubles fusions ne sont pas autorisés.

Pour éviter une programmation complexe que j'utilise une rotateBoard de fonction qui fait tourner la planche à 90 degrés dans le sens antihoraire. Cela permet d'être mis en œuvre le moveLeft (carte) comme:

Tant que vous faites tourner quatre fois dans tout fonctionne comme prévu au total. Cette méthode est très efficace, mais réduit la complexité du code.

Compilation et exécution

Depuis 2048.c est un seul fichier C, il est facile d'obtenir en cours d'exécution, il suffit d'exécuter les commandes suivantes:

Cela fonctionne sur la plupart des machines. Sinon, exécutez la commande suivante pour installer le compilateur:

Pour en savoir plus

Articles Liés