Git Product home page Git Product logo

chess's Introduction

Chess on terminal

Ce projet vise à réaliser un jeu d'échec complet sur le terminal avec le language séquentiel C.

Fonctionnalités:

  1. Lancer une partie multijoueur
  2. Sauvegarder une partie
  3. Charger une partie
  4. Analyser des parties
  5. Lancer une partie contre ia

Les fonctionnalités 4 et 5 ne sont pas encore implémenter.

chess0.png

Auteurs:

Installation

Pour lancer le jeu, veuillez suivre ces étapes.

git clone https://github.com/archiveSonf/chess.git ./chess
make install
make compil
make run

Architecture

  • dist : contient le fichier executables chess.exe
  • assets : contient les fichiers de données écrit en json.
  • src : module d'entrée du programme.
  • tools : module contenant les modules utiles dans le programme.
    • board : module contenant les méthodes de jeu.
    • menu : module contenant les méthodes de sélection d'options.
    • env : module contenant les méthodes de mise en place de l'interface.
    • data : module contenant les méthodes d'écriture et lecture de données.

Env

Menu

Les méthodes du module menu permettent de proposer des options de fonctionnalités pour qu'il les sélectionne via les touches de directions.

Permet de proposer 2 options

select_bool.png

option bools[2]={
  {run_game_2,"2 joueurs"},
  {run_game_ia,"contre IA"}
};

options res=select_bool("Quels types de partie voulez-vous jouer ?",bools);

//options est un type d'enumérateur, 
//prenant entre autre les valeurs run_game_2 et run_game_ia

select_list.png

option opts[5]={
  {run_game,"Lancer une partie"},
  {load_game,"Charger une partie"},
  {analyz_old_game,"Analyser les anciennes parties"},
  {see_scores,"Voir le tableau des scores"},
  {quitter,"Quitter le jeu"}
};

options res=select_list("Menu",5,opts);

//options est un type d'enumérateur, 
//prenant entre autre les valeurs run_game et quitter

select_partie utilise une méthode du module data pour récupérer une liste de parties et les proposer en options

select_partie.png

int select_partie(Partie *partie,int nbr_partie);

Board

Data

Les méthodes du module data utilise la bibliothèque jansson.h pour stocker lire des données au format json.

Cette méthode permet de sauvagarder une partie terminée ou encours, pour la continuer plustard ou l'analyser.

// Sauvegarde la partie
int SaveGame(char *db_file); 

// db_file => chemin relatif vers la fichier de base de données
// renvoie 1 si l'opération est une réussite.

LoadGame permet de charger une partie depuis une base de données.

int id=14; //id de la partie
char *db_file="chemin/vers/base/de/données";

GAME *game=LoadGame(id,db_file);
if(game!=NULL)
    runGame(game,NULL,NULL);

Cette méthode charge des informations sur les parties sauvegardées sous la structure Partie.

typedef struct _partie{
  int id;
  char* player1;
  char* player2;
  struct _partie *next;
  struct _partie *previous;
} Partie;
int nb_partie;
char *db_file="chemin/vers/base/de/données";

//Retourne la liste des parties
Partie *list_parties=LoadGames(db_file,&nb_partie);

chess's People

Contributors

roo7690 avatar yanndste avatar

Watchers

 avatar

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.