void		replay(char *choice, int i)
{
	char	input;

	input = ' ';
	while(input != 'o' && input != 'n')
	{
		my_putstr("Voulez-vous recommencer?(o/n)\n");
		input = getchar();
		vider_buffer();
	}
	if (input == 'o')
		(*(fmenu[i]))(choice);
}
Exemple #2
0
void verifier_position_score(scoreJoueur* tableauScores, int *nbScore, scoreJoueur scoreAenregistrer)
{
    int i;
    /* A partir d'un tableau deja trie, on decale chaque element existant vers la droite,
        jusqu'à ce qu'on tombe sur un score superieur a celui qu'on doit enregistrer, ou
        jusqu'à ce qu'on parcourt tout le tableau. */
    for(i = *nbScore; i > 0 && tableauScores[i - 1].score < scoreAenregistrer.score; i--)
    {
        tableauScores[i] = tableauScores[i - 1];
    }
    if(*nbScore != 10)
    {
        *nbScore += 1;
    }
    if(i != 10)
    {
        printf("\n---------------------------------------------------------------------------\n");
        printf("\n\tBravo! Votre score va etre enregistre !\n");
        printf("\tEntrez votre nom : ");
        scanf("%s", scoreAenregistrer.nomJoueur);
		vider_buffer();
        tableauScores[i] = scoreAenregistrer;
    }
}
Exemple #3
0
void jouer(char *laby, size_t nbLignes, size_t nbColonnes, char *nomLabyrinthe)
{
    int score = 0;
    int scoreTotal = 0;

    char touche = 'l';

    time_t debut = time(NULL);
    time_t fin;
    int tempsPartie;
    int tailleTabMonstres;

    Monstre *tabMonstres = analyser_monstres(laby, nbLignes, nbColonnes, &tailleTabMonstres);
    clear();
    laby[nbColonnes * 1 + 0] = 'o';
    afficher_labyrinthe(laby, nbLignes, nbColonnes, score, nomLabyrinthe, tabMonstres, tailleTabMonstres, 0);

    vider_buffer();
    while(touche != 'f')
    {
        touche = getch();
        switch(touche)
        {
            case 'd':   fin = time(NULL);
                        deplacer_monstres(tabMonstres, nbLignes, nbColonnes, tailleTabMonstres, laby, &score);
                        deplacer_joueur(laby, nbLignes, nbColonnes, 0, 1, &score, nomLabyrinthe, tabMonstres, tailleTabMonstres, (int)difftime(fin, debut));
                        break;

            case 'q':   fin = time(NULL);
                        deplacer_monstres(tabMonstres, nbLignes, nbColonnes, tailleTabMonstres, laby, &score);
                        deplacer_joueur(laby, nbLignes, nbColonnes, 0, -1, &score, nomLabyrinthe, tabMonstres, tailleTabMonstres, (int)difftime(fin, debut));
                        break;

            case 's':   fin = time(NULL);
                        deplacer_monstres(tabMonstres, nbLignes, nbColonnes, tailleTabMonstres, laby, &score);
                        deplacer_joueur(laby, nbLignes, nbColonnes, 1, 0, &score, nomLabyrinthe, tabMonstres, tailleTabMonstres, (int)difftime(fin, debut));
                        break;

            case 'z':   fin = time(NULL);
                        deplacer_monstres(tabMonstres, nbLignes, nbColonnes, tailleTabMonstres, laby, &score);
                        deplacer_joueur(laby, nbLignes, nbColonnes, -1, 0, &score, nomLabyrinthe, tabMonstres, tailleTabMonstres, (int)difftime(fin, debut));
                        break;
        }
        if(verifier_position_gagnante(nbLignes, nbColonnes)==1)
        {
            fin = time(NULL);
            tempsPartie = (int)difftime(fin, debut); /* Le temps que le joueur a mit a trouver la sortie, en sec */
            scoreTotal = score - tempsPartie / 2; /* Le malus du temps est le temps total divise par deux */

            printf("\tMalus de temps : -%d points\n", tempsPartie / 2);

            if(scoreTotal < 0) /* On n'enregistre pas des scores negatifs */
            {
                scoreTotal = 0;
            }
            printf("\tScore total    : %d points\n", scoreTotal);
            enregistrer_topscore(scoreTotal, nomLabyrinthe);
            touche = 'f';
        }
    }

    positionActuelle_X = 1;
    positionActuelle_Y = 0;
    laby[nbColonnes * (nbLignes-2) + (nbColonnes - 1)] = ' ';

    return;
}
Exemple #4
0
void enregistrer_topscore(int score, char *nomLaby)
{
    char nomFichier[31];
    char chaineTemporaire[31];
    char ligneAinserer[51];
    char caractereLu;

    int auMoinsUnJoueur = 0;
    int enregistrementNom = 1;
    int nbScore = 0;
    int position_caractere = 0;

    scoreJoueur scoreAenregistrer;
    scoreJoueur scoreLu;
    scoreJoueur tableauScore[10];

    FILE* fichier;

    strcpy(nomFichier, nomLaby);
    strcat(nomFichier, ".cfg");

    fichier = fopen(nomFichier, "a+");
    fseek(fichier, 0, SEEK_SET);


    scoreAenregistrer.score = score;
    memset(&scoreLu.nomJoueur[0], 0, sizeof(scoreLu.nomJoueur));
    memset(&chaineTemporaire[0], 0, sizeof(chaineTemporaire));

    if(fichier != NULL)
    {
        while((caractereLu = fgetc(fichier)) != EOF)
        {
            if(caractereLu == '\n')
            {
                /* Apres la lecture d'un joueur et de son score, on stock dans le tableau */
                scoreLu.score = atoi(chaineTemporaire);
                tableauScore[nbScore] = scoreLu;

                /* On vide les variables de lectures */
                memset(&scoreLu.nomJoueur[0], 0, sizeof(scoreLu.nomJoueur));
                memset(&chaineTemporaire[0], 0, sizeof(chaineTemporaire));

                enregistrementNom = 1;
                position_caractere = 0;
                nbScore += 1;
            }
            else
            {
                if(caractereLu == ':')
                {
                    /* On passe a la lecture du score si on rencontre le caractere ':'*/
                    position_caractere = 0;
                    enregistrementNom = 0;
                }
                else
                {
                    if(enregistrementNom == 1)
                    {
                        /* On lit le nom du joueur */
                        scoreLu.nomJoueur[position_caractere] = caractereLu;
                    }
                    else
                    {
                        /* On lit le score du joueur*/
                        chaineTemporaire[position_caractere] = caractereLu;
                    }
                    position_caractere += 1;
                }
            }
            auMoinsUnJoueur = 1;
        }

        /* Ce passage est obligatoire. S'il y a au moins un joueur enregistre dans le classement,
            il faut faire une derniere sauvagarde dans le tableau */
        if(auMoinsUnJoueur == 1)
        {
            scoreLu.score = atoi(chaineTemporaire);
            tableauScore[nbScore] = scoreLu;

            memset(&scoreLu.nomJoueur[0], 0, sizeof(scoreLu.nomJoueur));
            memset(&chaineTemporaire[0], 0, sizeof(chaineTemporaire));

            enregistrementNom = 1;
            position_caractere = 0;
            nbScore += 1;
        }

        if(nbScore == 0) /* Si le classement est vide */
        {
            printf("\n---------------------------------------------------------------------------\n");
            printf("\n\tBravo! Votre score va etre enregistre !\n");
            printf("\tEntrez votre nom : ");
            scanf("%s", scoreAenregistrer.nomJoueur);
			vider_buffer();
            sprintf(chaineTemporaire, "%d", scoreAenregistrer.score);
            strcpy(ligneAinserer, scoreAenregistrer.nomJoueur);
            strcat(ligneAinserer, ":");
            strcat(ligneAinserer, chaineTemporaire);

            fputs(ligneAinserer, fichier);

            printf("\n--CLASSEMENT----------------------------------------------------------------\n");
            printf("\n             Nom                           Score                            \n\n");
            printf("\t%2d : %-30s%d\n", 1, scoreAenregistrer.nomJoueur, scoreAenregistrer.score);
        }
        else
        {
            int *p_nbScore = &nbScore;
            int i;

            verifier_position_score(&tableauScore[0], p_nbScore, scoreAenregistrer);

            fclose(fichier);
            fichier = fopen(nomFichier, "w+");

            printf("\n--CLASSEMENT----------------------------------------------------------------\n");
            printf("\n             Nom                           Score                            \n\n");

            for(i = 0; i < nbScore; i++)
            {
                memset(&ligneAinserer[0], 0, sizeof(ligneAinserer));
                memset(&chaineTemporaire[0], 0, sizeof(chaineTemporaire));

                sprintf(chaineTemporaire, "%d", tableauScore[i].score);
                strcpy(ligneAinserer, tableauScore[i].nomJoueur);
                strcat(ligneAinserer, ":");
                strcat(ligneAinserer, chaineTemporaire);
                printf("\t%2d : %-30s%d\n", i + 1, tableauScore[i].nomJoueur, tableauScore[i].score);

                if(i != 0)
                {
                    fputs("\n", fichier);
                }
                fputs(ligneAinserer, fichier);
            }
        }
        fclose(fichier);
    }
    else
    {
        printf("Impossible d'ouvrir\n");
    }
}