Code Monkey home page Code Monkey logo

timeline_informatique's Introduction

Projet de jeu de carte "Timeline Informatique"

Réalisé pour la fête de la science 2017 au département informatique de l'Université Claude Bernard Lyon 1.

Le rendu final est accessible ici

TODO

Présentation

Le jeu est généré en PDF en utilisant LaTeX à partir de la description des cartes dans un fichier CSV. Le processus de génération est entièrement automatisé, ce qui inclut :

  • le téléchargement des images (option --download);
  • le renommage "de courtoisie" des images téléchargées;
  • le recentrage automatique (option --resize) des images;
  • la génération des fichiers LaTeX individuels (un verso, un recto) (option --generate);
  • la génération des planches LaTeX (soit 1 soit 9 carte par page) avec padding de cartes blanches si le nombre de cartes n'est pas multiple de 9 (options --nine-by-page et --one-by-page);

La génération de carte dans un autre format que les cartes poker (par défaut) n'est pas complètement automatisée, elle nécessite de modifier les bases de cartes LaTeX.

Dépendances

  • Node.js et npm pour gérer les dépendances Node.js;
  • la génération des .pdf finaux nécessite une chaine pdflatex avec TikZ;
  • éventuellement, Makefile et rubber pour la génération.

Installation et exécution

git clone https://github.com/romulusFR/timeline_informatique.git
npm install

node build.js -drg19 ./content/computer_history_timeline.csv
make

# one_card_by_page.pdf
# nine_cards_by_page.pdf

Licence

Licence du projet

Le présent projet est en licence Crative Commons BY-NC-SA 3.0, par Romuald THION

Vous devez créditer l'oeuvre, vous n'êtes pas autorisé à faire un usage commercial de cette oeuvre et de tout ou partie du matériel la composant. Dans le cas où vous effectuez un remix, que vous transformez, ou créez à partir du matériel composant l'oeuvre originale, vous devez diffuser l'oeuvre modifiée dans les même conditions.

https://creativecommons.org/licenses/by-nc-sa/3.0/fr/

Modèle de carte LaTeX

Le modèle de carte LaTeX est adapté de celui de Arvid. Il utilise TikZ, voir les fichiers ./latex/tikzcards.tex et ./latex/packages.tex

Licences des contenus

  • les contenus textuels des cartes sont sous licence CC BY-SA 3.0 de wikipedia
  • les images des cartes sont créditées individuellement (domaine public, CHM Timeline, Wikipedia etc.) dans les définitions des cartes

Contenu et description des cartes

Les cartes sont créées à partir d'un fichier csv au format id,type,title,year,picture,credits,description,credits_color.

  • id : le numéro de la carte, n'apparait pas sur la carte
  • type : son type à choisir dans pop, hard, soft, lang, theory, game, web, univ (apparait verticalement sur la gauche de la carte)
  • tile : le nom de l'invention, de l'événement, de la personne ...
  • year : l'année de découverte (apparait avec le texte de la description au verso de la carte)
  • picture : une url vers une image dans un format supporté par pdfLaTeX
  • credits : crédits de l'illustration (apparait au recto de la carte uniquement)
  • description : court texte (apparait au verso de la carte)
  • credits_color : couleur dans laquelle rendre les crédits de l'illustration

Le fichier ./content/computer_history_timeline.csv contient l'ensemble des cartes du jeu. La carte des règles est gérée séparément, elle est décrite (en dur) dans le dépôt (fichiers ./special_cards/0_rules_front.tex et ./special_cards/0_rules_back.tex). Des cartes "blanches", sur le modèle ./special_cards/00_blank.tex sont aussi automatiquement ajoutée au jeu si celui-ci n'est pas un multiple de 9 cartes.

Génération des cartes

Le script javascript build.js va parser le fichier csv de description pour :

  • -d ou --download : télécharger les images dont les urls sont données dans le csv (champ picture)
  • -r ou --resize : recadrer des images (marche pour des images déjà téléchargées via -r)
  • -g ou --generate : générer les .tex des cartes individuelles (un .tex pour le recto, un .tex pour le verso)
  • -1 ou --nine-by-page : générer le jeu de cartes avec une face par page
  • -2 ou --one-by-page : générer le jeu de cartes avec neuf faces par page

Exécuter node build.js --help pour l'aide. Pour tout regénérer (c-à-d, télécharger les images, les recadrer, générer les .tex individuels, le jeu une face par page et le jeu 9 faces par page) les commandes sont les suivantes :

# download
node build.js -d  ./content/computer_history_timeline.csv            
# resize des images
node build.js -r  ./content/computer_history_timeline.csv   
# generation des cartes individuelles .tex
node build.js -g -1 -9 ./content/computer_history_timeline.csv             
# génération des planches
node build.js -1 -9 ./content/computer_history_timeline.csv

# les options sont combinables
node build.js -dg19r ./content/computer_history_timeline.csv

Pour activer le mode debug, avec la bibliothèque debug il suffit de fixer la variable shell DEBUG comme ceci :

DEBUG=timeline node build.js [options] <fichiers>

Ensuite, il faut compiler les fichiers .tex avec pdfLaTeX, voir le fichier Makefile. Pour tout regénérer, taper simplement make, la cible par défaut générant les pdfs avec une face par page et celui avec 9 faces par page en utilisant rubber. Pour générer à la main, utiliser pdflatex nine_cards_by_page.tex ou pdflatex one_card_by_page.tex.

Attention il faut une installation TeXLive assez complète, avec nottamment le paquet anttor (dans texlive-fonts-extra sous Ubuntu)

Jeu de test

Le dossier test_deck comprend quelques cartes de test, telles que générées à partir du csv. Elle servent à mettre au point ou modifier le fichier ./latex/tikzcards.tex.

timeline_informatique's People

Contributors

dependabot[bot] avatar romulusfr avatar sblondon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

timeline_informatique's Issues

Ajout de cartes ?

Intéressé par l'ajout des cartes ?
Il serait probablement facile d'augmenter le nombre des cartes de la catégorie 'lang' ainsi que dans la catégorie 'web' si elle était transformée en 'network' ou 'internet'.

     12 soft
     11 pop
      9 game
      7 theory
      6 hard
      4 lang
      3 web
      1 univ

D'un autre côté, la fête de la science 2017 est largement passée...

Different licence for content and code

Hi @romulusFR , thanks for sharing this repository, I was just planning to do the same thing when I found your repository on SO. I created a fork of this repository to create a game for high-school students at terra-numerica.org during my internship at INRIA. I rewrited the build script in Python. Are you OK if I licence this rewrited code using MIT and using CC-BY SA for tex files based on SO answers.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.