2048.cpp
Version terminale du jeu "2048" écrite en C++.
? Présenté sur les pages Twitter et Facebook de GitHub ! ?
Installation
Le jeu et le code sont conçus pour fonctionner nativement sur les plates-formes GNU/Linux et MacOS, mais une compatibilité multiplateforme pour Windows a également été ajoutée.
Exigences
- Compilateur C++11 (par exemple
g++
, clang++
, pgc++
, icpc
, etc.) - Pratiquement n'importe quelle plateforme, y compris :
- Linux
- Mac OS
- Windows (via Cygwin ou le sous-système Windows pour Linux)
- CMake ou Méson
Installation
- Ouvrez votre terminal dans votre répertoire préféré et clonez ce projet :
git clone https://github.com/plibither8/2048.cpp
- Entrez le répertoire du projet :
Pour CMake et Meson, le compilateur C++ par défaut de votre système sera utilisé. Si vous souhaitez sélectionner manuellement un compilateur C++, ajoutez éventuellement CXX=clang++ cmake
ou CXX=clang++ meson
etc.
Construire avec CMake
- Construisez l’exécutable et exécutez les tests
- Installez le programme (facultatif)
- Exécutez le programme et jouez au jeu ! ?
2048 # run `build/2048` if game is not installed
OU
Construire avec Meson
- Générer une configuration de build
- Construisez l’exécutable et exécutez les tests
- Installez le programme (facultatif)
meson configure build --prefix= $HOME /.local
meson install -C build
- Exécutez le programme et jouez au jeu ! ?
2048 # run `build/2048` if game is not installed
Contribuer
Tout d'abord, merci d'avoir contribué ?! Quelques points à noter :
Si vous avez trouvé un bug ou si vous souhaitez implémenter une fonctionnalité, soulevez un problème.
Si vous avez proposé une pull request, assurez-vous d'exécuter clang-format
sur les fichiers de code source (à la fois .cpp
et .hpp
) si vous y avez apporté des modifications.
Dans votre référentiel local, exécutez git update-index --skip-worktree ./data/*.txt
pour vous assurer que les modifications apportées aux fichiers de données ne sont pas suivies par git et ne sont donc pas mises en scène.
Merci
J'apprécie profondément l'aide des personnes suivantes :
- Michael Hirsch
- nettoyé le code,
- mieux organiser les fichiers d'en-tête pour une construction plus efficace,
- ajouté l'AppVeyor CI,
- ajout du système de construction Meson et correction de CMake et ajout d'une fonctionnalité d'installation.
- Aiman Ismail a ajouté la prise en charge de la liaison de touches Vim.
- Patrik Huber a corrigé une faute de frappe dans le fichier Readme.
- zestze a changé
cstdlib rand
en générateur d'entiers aléatoires C++. - Pascal J. Bourguignon a ajouté la prise en charge des touches fléchées ANSI.
- Jean-Michaël Celerier a ajouté le fichier
CMakeLists.txt
. - comwrg a rendu la durée des statistiques et des meilleurs scores lisible par l'homme, en transformant les secondes en minutes et en heures.
- Christian Bundy a remplacé les laids -, + et | avec des personnages en forme de boîte.
- Tor E Hagemann a résolu le problème n°10, provoquant l'impression du caractère indésirable
1
. - farazxameer a implémenté une fonctionnalité pour enregistrer un état de jeu et continuer à partir d'un état de jeu enregistré, une logique de jeu raffinée.
- drodil a implémenté des vérifications pour vérifier l'existence de fichiers de données, problème n°12 résolu
- Aviskar KC a ajouté des touches fléchées aux instructions du jeu.
- Peter Squicciarini a corrigé les instructions Lisez-moi.
- Mark Fischer, Jr. a corrigé une faute de frappe.
- Hugo Brandão a complètement réorganisé la structure du projet existante et a mis à jour la méthode de construction pour appliquer CMake.
- Alton Alvarez a corrigé une faute de frappe.
- cawvyoct a rendu le code source beaucoup plus facile à lire : il a supprimé la plupart des nombres magiques et les a remplacés par des variables pour faciliter la maintenance.
clang-format
implémenté. - Cong a édité le constructeur de la classe
Game
. - Tien Do a ajouté l'option « quitter » dans le menu principal, a mis à jour le fichier
CMakeLists.txt
et a transformé l'énumération Color
en une énumération étendue. - ScorrMorr a créé de nombreuses méthodes
const
. - tangmengqiu a corrigé une étape d'instruction provoquant une erreur dans le fichier readme.
Mainteneurs
- Mihir Chaturvedi
- cawvyoct
Remarques
[GameBoard].getTile(2,0)
fait référence à la 0ème tuile (ou colonne) de la 2ème ligne comme dans ce cas, x = 0 et y = 2. La tuile spécifique est désignée par le symbole « @ » dans le plateau de jeu suivant :
Remarque : l'indexation row
et column
commence à 0.
┌──────┬──────┬──────┬──────┐
│ │ │ │ │
├──────┼──────┼──────┼──────┤
│ │ │ │ │
├──────┼──────┼──────┼──────┤
│ @ │ │ │ │
├──────┼──────┼──────┼──────┤
│ │ │ │ │
└──────┴──────┴──────┴──────┘
Faire
Licence
Droit d'auteur (c) Mihir Chaturvedi. Tous droits réservés.
Sous licence MIT.