besoin d'aide sur un projet

besoin d'aide sur un projet - C - Programmation

Marsh Posté le 03-01-2005 à 21:01:16    

Bonjour a tous,
voila je suis en 1 ere année d'ecole d'inge a dominante chimie et je dois realisé d'ici trois semaines un logiciel de mots croisés en langage C sous dev C++ en utilisant la bibliotheque graphique fltk  :cry: .
Mes connaissances en programmation etant tres limité un petit coup de main serait vraiment po de refus
Si quelqu'un est interessé j'expliquerais un peu plus dans le detail le projet aisni que l'avancement
Merci

Reply

Marsh Posté le 03-01-2005 à 21:01:16   

Reply

Marsh Posté le 04-01-2005 à 12:51:20    

Voici un peu plus en detail le logiciel et ses fonctionnalité
 Projet de génie logiciel
 
Les mots croisés: cahier des charges
 
 
 
Introduction
 
 L'objectif du logiciel est double. Il doit permettre à l'utilisateur de composer une grille et de l'enregistrer dans une base de données ainsi que de jouer, c'est à dire chercher la solution d'une grille avec la difficulté et dans la langue et le thème de son choix.
 
 
 
 Modes d'utilisation du logiciel
 
 On peut distinguer deux modes d'utilisation du logiciel: le mode concepteur et le mode joueur. La selection sera faite par des boutons radios, le mode concepteur étant attribué par défaut. Les options du logiciel ainsi que la fenêtre graphique diffèreront suivant le mode choisi.
 
 
 
 Mode concepteur
 
 L'utilisateur a selectionné le mode concepteur. Il peut alors dimensionner sa grille en choisissant le nombre de colonnes et de lignes à l'aide de deux curseurs de saisie variant chacun de 4 à 10. La grille est définie par défaut à la dimension 7x7.
 La case de la grille selectionnée par le concepteur devient active en prenant une couleur jaune et facilite ainsi son remplissage. Les cases peuvent être remplies soit par des lettres, soit par des cases noires.Une fois la grille achevée le logiciel permettra d'entrer les définitions des mots.
 Enfin, le concepteur aura la possibilité de sauvegarder ou de charger une grille selon son état d'achèvement par l'intermédiaire de deux boutons: « Sauver» et « Charger ». Au moment de la sauvegarde, il doit indiquer la langue, la difficulté et éventuellement le thème du mot croisé dans le type du fichier.
 
Les langues sont à choisir parmi le français (f), l'anglais (e) et l'allemand (d)
La difficulté est par ordre croissant force1 (1), force2 (2) et force3 (3)
Les thèmes seront à préciser par le concepteur.
 
Exemple: pour une grille en français, de force2 et sans thème précis le type du fichier sera  « .grf2 »
 
 
 Mode joueur
 
 Le mode joueur étant choisi l'utilisateur peut alors charger une grille selon la langue, la difficulté et le thème de son choix. La grille et les définitions apparaissent alors à l'écran et il peut commencer à la compléter. Comme pour le concepteur, le remplissage de la grille sera facilité par la case active. Cependant un clic droit de la souris mettra en évidence le mot vertical associé tandis qu'à un clic gauche correspondra le mot horizontal. Les cases deviendront grises.
 Le logiciel proposera au joueur différentes fonctionnalités:
 
un bouton « Effacer tout » qui réinitialise la grille
un bouton « Tester » qui laisse dans le mot selectionné seulement les lettres justes
un bouton « Afficher mot » qui affiche le mot correspondant aux cases selectionnées
un bouton « Solution » qui affiche la grille complète

 
 
En cherchant un peu sur le net j'ai trouvéun mots croisés a peu pres similaire sur www.mots-croises.ch  
J'ai besoin de veaucoup notamment pour dessiner la grille avec les curseurs de saisie  
Pour l'instant j'ai fait un programme permettant de lire et ecrire la grille pour cela j'utilise un fichier txt
Merci de me donner un coup de pouce

Reply

Marsh Posté le 04-01-2005 à 23:07:50    

Voila ce que j'ai fait a present sur le projet en fait les grilles de mots croisés seront sauvegarder sous forme de fichier txt dont voici un exemple
 
1  (drapeau pour indique achevement de la grille)
4,4  (nombre de lignes et de colonnes de la grille)
ANES  
IULE   (composition de la grille)
DEUX
E-SE
4 (Nombre de mots horizontaux)
0,0,4 (position de la premiere lettre du mot ligne, colonne, nb de lettres)
Sots (definition du mot)
1,0,4
Ver
2,0,4
Après un
3,2,2
Selenium
4 (Nombre de mots horizontaux)
0,0,4 (ligne, colonne de la premiere lettre, nb de lettres)
Coup de main
0,1,3
Sans effets
0,2,4
Saints
0,3,4
Homme ou femme

 
Pour l'instant j'ai fait un prog (qui a l'air de marcher ) me permettant de lire ce document txt et de l'ecrire  
le voici
 
//Prototypes des fonctions de bibliothèques
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
//Déclarations/définitions des constantes nommées
#define TailleMaximaleEnregistrement 100
#define MaxLC 10
#define MaxDef 100
#define MaxLongDef 50
//Prototypes des fonctions réalisées pour ce programme
int WriteGrid(char NomFichier[32]);
int ReadGrid(char NomFichier[32]);
 
 
int gStatut,gLignes,gColonnes,gDNHor,gDNVer;
int gDHLig[MaxDef],gDHCol[MaxDef],gDHNLet[MaxDef];
int gDVLig[MaxDef],gDVCol[MaxDef],gDVNLet[MaxDef];
char gGrilleH[MaxLC][MaxLC+1];
char gDefH[MaxDef][MaxLongDef];
char gDefV[MaxDef][MaxLongDef];
 
 
 
// Programme principal
main()
 {
 // Déclarations des variables
 
 char String[80],File[80];
 int i,WriteOk,ReadOk;
 
 strcpy(String,"H:\\RLC\\ESSAI.GRF" );
 ReadOk=ReadGrid(String);
 printf("%d",ReadOk);
 strcpy(String,"H:\\RLC\\ESSAY.GRF" );
 WriteOk=WriteGrid(String);
 printf("%d",WriteOk);
 printf("C'est fini!" );
 gets(String);
 }
 
 
int WriteGrid(char NomFichier[32])
{
 int Num,WriteOK;
 FILE *FichierSortie;
 
 if ((FichierSortie = fopen(NomFichier,"wt" ))== NULL)
  {
  WriteOK=0;
  }
  else
  {
  WriteOK=1;
     fprintf(FichierSortie,"%d\n",gStatut);
     fprintf(FichierSortie,"%d,%d\n",gLignes,gColonnes);
  for (Num=0;Num<gLignes;Num=Num+1)
   {
   fprintf(FichierSortie,"%s\n",gGrilleH[Num]);
   }
     fprintf(FichierSortie,"%d\n",gDNHor);
  for (Num=0;Num<gDNHor;Num=Num+1)
   {
         fprintf(FichierSortie,"%d,%d,%d\n",gDHLig[Num],gDHCol[Num],gDHNLet[Num]);
   fprintf(FichierSortie,"%s\n",gDefH[Num]);
   }
     fprintf(FichierSortie,"%d\n",gDNVer);
  for (Num=0;Num<gDNVer;Num=Num+1)
   {
         fprintf(FichierSortie,"%d,%d,%d\n",gDVLig[Num],gDVCol[Num],gDVNLet[Num]);
   fprintf(FichierSortie,"%s\n",gDefV[Num]);
   }
  }
 fclose(FichierSortie);
 return(WriteOK);
}
 
 
int ReadGrid(char NomFichier[32])
{
 int Num,Long,ReadOK;
 char TamponLecture[TailleMaximaleEnregistrement];
 FILE *FichierEntree;
 
 if ((FichierEntree = fopen(NomFichier,"rt" ))== NULL)
  {
  ReadOK=0;
  }
  else
  {
  ReadOK=1;
  fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
     sscanf(TamponLecture,"%d",&gStatut);
  fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
     sscanf(TamponLecture,"%d,%d",&gLignes,&gColonnes);
  for (Num=0;Num<gLignes;Num++)
        {
        fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
        Long=strlen(TamponLecture);
        TamponLecture[Long-1]=0;
        strcpy(gGrilleH[Num],TamponLecture);
        }
  fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
     sscanf(TamponLecture,"%d",&gDNHor);
  for (Num=0;Num<gDNHor;Num++)
        {
        fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
        sscanf(TamponLecture,"%d,%d,%d",&gDHLig[Num],&gDHCol[Num],&gDHNLet[Num]);
        fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
        Long=strlen(TamponLecture);
        TamponLecture[Long-1]=0;
        strcpy(gDefH[Num],TamponLecture);
        }
  fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
     sscanf(TamponLecture,"%d",&gDNVer);
  for (Num=0;Num<gDNVer;Num++)
        {
        fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
        sscanf(TamponLecture,"%d,%d,%d",&gDVLig[Num],&gDVCol[Num],&gDVNLet[Num]);
        fgets(TamponLecture,TailleMaximaleEnregistrement,FichierEntree);
        Long=strlen(TamponLecture);
        TamponLecture[Long-1]=0;
        strcpy(gDefV[Num],TamponLecture);
        }
  }
 fclose(FichierEntree);
 return(ReadOK);
}

 
Il me reste encore beacoup de chose a faire notamment tout ce qui concerne la partie graphique avec la conception de la grille mais aussi toute la prog permettant a partir du fichier txt de remplir la grille
Merci pour votre aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed