/* Execute une commande indiquee en parametre lors d'un achat dans la boutique */ void executerCommandeAcheterBoutique(const char *commande) { char typePotion[TAILLE_MAX]; unsigned int quantitePotion, niveauPotion; unsigned int prixCommande; unsigned int choixJoueur; /* Si la commande est -1 (le joueur veut revenir a la boutique) on retourne a la boutique */ if(strcmp(commande, "-1") == 0) boutique(); /* Sinon si on peut lire la quantite, le type de la potion et son niveau (commande correcte) */ else if(sscanf(commande, "%d %s %d", &quantitePotion, typePotion, &niveauPotion) == 3) { /* On formate le nom de la potion entree pour que le joueur puisse entrer de n'importe quelle forme le nom de la potion (Sante, sante, SaNtE etc.) */ formaterNomPotion(typePotion); /* On affiche la commande */ printf("Vous souhaitez donc acheter %d potion(s) de %s de niveau %d.\n", quantitePotion, typePotion, niveauPotion); /* On calcule le prix de la commande */ prixCommande = calculerPrixPotionAcheterBoutique(quantitePotion, typePotion, niveauPotion); /* On affiche le prix */ printf("Ca vous fera %d tek.\n", prixCommande); /* On demande si le joueur est sur de faire l'achat */ choixJoueur = demanderConfirmation("Etes vous sur de vouloir faire cet achat ? (0/1)", SEPARATION); /* Si le joueur veut effectuer l'achat */ if(choixJoueur == OUI) { /* On lui enleve le prix de la commande, si le joueur a assez d'argent on lui ajoute sa commande dans son inventaire */ if(peutAcheterCommande(prixCommande)) { enleverTekInventaire(prixCommande); ajouterPotionInventaire(quantitePotion, recupererTypePotion(typePotion), niveauPotion); } } /* Si le joueur ne veut pas effectuer l'achat, on le redirige juste vers la categorie achat de la boutique */ /* On retourne dans la categorie achat de la boutique */ acheterBoutique(); } /* Sinon c'est une commande incorrecte */ else { /* On affiche un message d'erreur, on attend un certain temps et on retourne dans la categorie achat de la boutique */ printf("Veuillez entrer une commande correcte !\n"); attendre(1.2); acheterBoutique(); } }
void selectBou2(SDL_Surface *ecran) { if( positionSelect.y == 250 && inv_hero.gold >= 100) { boutique(ecran); } else if( positionSelect.y == 350 && inv_hero.gold >= 100) { boutiqueO(ecran); } }
/* Affiche un texte lorsque le joueur se trouve sur la porte de la sortie */ void afficherTextePorteSortie(void) { effacer(); titre("Porte de sortie", VERT); /* Si le joueur possede la cle de fin de niveau */ if(inventaire.possedeCleFinNiveau) { unsigned int choixJoueur; /* On affiche un texte indiquant le passage du prochain niveau */ lireEtAfficher("Sortie/Texte_Porte_Sortie_Cle.txt"); /* On demande si le joueur veut faire un tour a la boutique avant de passer au prochain niveau */ choixJoueur = demanderConfirmation("Voulez-vous aller dans la boutique ? (0/1)", SEPARATION); /* S'il veut */ if(choixJoueur == OUI) /* On appelle la fonction boutique */ boutique(); appuyezEntree("\nAppuyez sur ENTREE pour acceder au prochain niveau"); /* On enleve la cle de fin de niveau de l'inventaire du joueur */ inventaire.possedeCleFinNiveau = 0; /* On incremente de 1 la variable niveauActuel du joueur pour indiquer le passage au prochain niveau */ ++(personnage.niveauActuel); /* On sauvegarde l'inventaire pour que le joueur conserve l'inventaire entre le passage de niveau */ sauvegarderInventaire(); /* On vide le dossier de sauvegarde sur le niveau (car on va changer de niveau) */ viderDossierNiveauSauvegarde(personnage.nom); /* On relance le jeu */ jeu(); } /* Sinon */ else { /* On affiche un texte indiquant qu'il faut une cle au joueur pour passer la porte */ lireEtAfficher("Sortie/Texte_Porte_Sortie.txt"); appuyezEntree("\nAppuyez sur ENTREE pour continuer"); } }
/* Categorie vente de la boutique */ void vendreBoutique(void) { unsigned int choixJoueur; int indexTresor; effacer(); titre("Boutique", VERT); /* Si le joueur a des tresors a vendre */ if(joueurPossedeTresor()) { /* On recupere l'index du tresor que le joueur souhaite vendre */ indexTresor = demanderObjetAvendre(); if(indexTresor != -1) { /* On demande la confirmation de la vente */ choixJoueur = demanderConfirmation("Etes vous sur de vouloir vendre cet objet ? (0/1)", SEPARATION); /* Si le joueur veut */ if(choixJoueur == OUI) { /* On vend le tresor */ vendreTresor(indexTresor); appuyezEntree("Appuyez sur ENTREE pour continuer vos ventes"); } /* Si le joueur ne veut pas vendre, on le redirige simplement dans la categorie vente de la boutique*/ /* On revient a la categorie vente de la boutique */ vendreBoutique(); } } /* Sinon le joueur n'a aucun tresor */ else { /* On affiche qu'il n'a rien a vendre et on le redirige vers la boutique */ printf("Vous n'avez rien a vendre ! :'(\n"); appuyezEntree("Appuyez sur ENTREE pour revenir a la boutique"); boutique(); } }
/* Demande et renvoie l'index du tresor que le joueur souhaite vendre */ int demanderObjetAvendre(void) { compteur indexTresor; int choixJoueur; /* On demande ce que le joueur veut vendre et on affiche tous ses tresors */ printf("Que souhaitez-vous vendre ?\n\n"); for(indexTresor = 0; indexTresor < NB_TRESOR_MAX; ++indexTresor) { if(strcmp(inventaire.tresor[indexTresor].nom, "Rien") != 0) { printf("\t%d - ", indexTresor + 1); afficherTresorIndividuelInventaire(indexTresor); putchar('\n'); } } putchar('\n'); /* On lit le choix du joueur */ choixJoueur = choisirMenu(inventaire.tresorActuel + 1); /* Si il veut revenir en arriere ou quitter, on le redirige vers la boutique et on retourne -1 */ if(choixJoueur == REVENIR_ARRIERE || choixJoueur == QUITTER) { boutique(); return -1; } /* Sinon on retourne l'index du tresor qu'il veut vendre (choixJoueur - 1) */ else return choixJoueur - 1; }