Bitbucket is a code hosting site with unlimited public and private repositories. We're also free for small teams!

Close
                ┌────────────────────────────────────────┐
                │              Carcassonne               │
                ├────────────────────────────────────────┤
                │                                        │
                │ Projet programmation C  /  Semestre 6  │
                │              ENSEIRB-MATMECA           │
                │ ~fbouquet, ~jdelhommeau, ~mherbreteau, │
                │     ~amacabies, ~gvandeneeckhoutte     │
                │                                        │
                └────────────────────────────────────────┘

                            │ Description │
                            └─────────────┘

Ce projet est écrit en C standard C99. Il implémente une interface
graphique pour jouer à « Carcassonne », un jeu où le but est de placer
des tuiles carrées sur un plateau afin de construire petit à petit une carte
constituée de champs, villes et routes. Chaque joueur gagne des points en posant
les pions lui appartenant sur certaines structures, lorsque cela est possible.
Le gagnant est le joueur ayant le plus de points à la fin de la partie.


                            │ Documentation │
                            └───────────────┘

La documentation du projet est générée par Doxygen. Elle peut être compilée
en se plaçant dans le dossier documentation/ et en entrant la commande :
  $ doxygen doxygen.conf

La documentation est alors générée en HTML et en LaTeX ; celle en HTML
peut être visionnée en lisant le fichier documentation/html/index.html
avec un navigateur.


                            │ Compilation │
                            └─────────────┘

Ce projet utilise la suite CMake pour automatiser la compilation. Les
bibliothèques suivantes sont nécessaires :
  - GNU Lib ou "GLib", version 2
  - SDL
  - OpenGL

La compilation peut se faire en exécutant :
  $ build.sh

Le binaire `carcassonne` est placé dans la racine du projet (dossier où se
trouve `build.sh`).


Alternativement, « à la main » :
  $ mkdir build && cd build
  $ cmake
  $ make

Le binaire `carcassonne` est généré dans `build/src`.


                            │ Utilisation │
                            └─────────────┘

Le jeu est lancé en exécutant le binaire `carcassonne`. Deux paramètres sont
requis : l'emplacement du fichier de tuiles ainsi que le nombre de joueurs
initaux, entre 2 et 6.

  $ ./carcassonne <chemin vers tile def> <nb joueurs initiaux>

Les définitions du jeu original sont disponibles dans
`ressources/tile_def.data`. On peut donc lancer, depuis la racine :

  $ ./carcassonne ressources/tile_def.data 4


## Mode d'emploi rapide ##

L'interface graphique permet une interaction plutôt intuitive avec le jeu.
Le déroulement du jeu peut se résumer ainsi :

  - Joueur A pioche une pièce (automatique).

  - Joueur A choisit un emplacement disponible où placer sa pièce.
    Les emplacements disponibles clignotent en vert, selon l'orientation de la
    pièce en main.

    Contrôles :
      Déplacer la pièce ........................... déplacement de la souris
      Faire tourner la pièce ...................... molette de la souris
      Naviguer dans la carte ...................... clic droit maintenu
                                                    + déplacement de la souris
      Zoomer / dézoomer ........................... <CTRL> maintenu
                                                    + molette de la souris
      Poser la pièce .............................. clic gauche

  - Joueur A choisit, s'il le peut et s'il le veut, où placer un pion sur la
    tuile tout juste posée.

    Les contrôles sont identiques à ceux de la tuile.
    Pour ne pas ajouter de pion, il suffit de cliquer en-dehors de la tuile
    posée.

  - Recommencer avec le joueur suivant.

Recent activity

Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.