/** * \fn void Animal::perte(void) * \brief actualisation des stats * * Fait baisser les stats de l'animal et provoque certain évenement * */ void Animal::perte(void) { if(faim > 90 || faim < 10) { sante -= 1; if(faim < 10) emit chercherNouriture(); } if(plaisir < 10) { emit joueSeul(); } if(hygiene < 10) { if(type == 2) { emit seLaveSeul(); ///cas du chat } else sante -= 10; } if(sante <= 0) emit mort(); faim --; plaisir --; hygiene --; verifStat(); }
void gestionVie (perso p, grille g, int type, int i) { if (mort(p) == 1) { if (type == 0) //joueur gameover(p, g); else killBob(p, i); } }
void disp_menu(t_data *data) { my_back_mort(data->pixarray); data->menu.pos.x--; if (data->menu.pos.x <= -data->letters) data->menu.pos.x = data->menu.scr->clipable.clip_width; fire(data->menu.fire); mort(data->menu.mort); rohan(data, data->menu.rohan); disp_text(data->menu.txt, &data->menu, data->str); bunny_blit(&data->window->buffer, &data->menu.scr->clipable, NULL); }
void piege(emplacement) { FILE* fichier = NULL; long int nbaleatoire = 0; long int nbaleatoire2 = 0; long int i,j, choix = 0; long int evite, degat = 0; char nom[50]; char path[50]; long int taille_max = 50; long int pv = 1; long int nombre = 0; fichier = fopen("pieges/liste.ars", "r+"); fscanf(fichier, "%ld", &nombre); fclose(fichier); nbaleatoire = (rand() % (nombre - 1 + 1)) +1 ; sprintf(path, "pieges/piege%ld.ars", nbaleatoire); fichier = fopen(path, "r+"); fscanf(fichier, "%s\n%ld, %ld", nom, &evite, °at); printf("Il s\'agit d\'un piège mortel nommé %s\n", nom); fclose(fichier); nbaleatoire2 = (rand() % (100 - 1 +1)) +1; if (nbaleatoire2 <= evite) { printf("\nVous avez évité le piège\n"); } else { printf("\nVous n'avez pas réussi à éviter le piège et vous subissez %ld dégats.\n", degat); pv = appel_carac_joueur(emplacement,8); pv = pv - degat; if (pv <= 0) { mort(emplacement); pv = 0; } sauvegarde_carac(emplacement,8,pv); } printf("\nVoulez-vous continuer à jouer (1), ou arrêter (2) ?\n"); scanf("%ld", &choix); if(choix == 1) game(emplacement); else { quitter(); } }
void combat (emplacement) { //variables FILE* fichier = NULL; char path[50]; long int nombre = 0; long int choix = 1; char nom[35]; long int alea = 1; long min = 1; long max = 0; float degat = 0; float nbaleatoire = 0; long int i = 0; //caracs monstre & joueurs long int monstre_attaque, monstre_endu, monstre_pv, monstre_exp; long int joueur_force, joueur_intelligence, joueur_endurance, joueur_pv, joueur_pv_total; long int joueur_classe = 0; long int joueur_attaque = 0; long int joueur_niv; long int new_niveau = 1; long int niv_actuel = 1; fichier = fopen("monstres/liste.ars", "r+"); fscanf(fichier, "%ld", &nombre); max = nombre; alea = (rand() % (max - min + 1)) + min; //Alea indique le numero du monstre ! // printf("Nombre : %ld\n", alea); sprintf(path, "monstres/monstre%ld.ars", alea); fichier = fopen(path, "r+"); fgets(nom, 35, fichier); printf("Il s\'agit d\'un %s", nom); //Maintenant qu'on a le nom du monstre, on prend ses caracs monstre_attaque = appel_carac_monstre (alea, 2); //INVOCATIOOOOOOOOOOOOOOOOOOOOOOOONNNNNNNN !!!!!! monstre_endu = appel_carac_monstre(alea, 3); //INVOCATION 2222222222222222222222222222222222 !!!!!!!!!!!!!! monstre_pv = appel_carac_monstre(alea, 4); //KAMAHAMEHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!!!! monstre_exp = appel_carac_monstre(alea, 5); // printf("Attaque : %ld\nEndu: %ld\npv:%ld\nexp : %ld\n", monstre_attaque, monstre_endu, monstre_pv, monstre_exp); // printf("Attaque : %ld\n", monstre_attaque); //On prend les caracs du persos joueur_force = appel_carac_joueur(emplacement, 5); joueur_intelligence = appel_carac_joueur(emplacement, 6); joueur_endurance = appel_carac_joueur(emplacement, 7); joueur_pv = appel_carac_joueur(emplacement, 8); joueur_pv_total = appel_carac_joueur(emplacement, 9); joueur_niv = appel_carac_joueur(emplacement, 10); joueur_classe = appel_carac_joueur(emplacement, 4); // printf("Attaque : %ld\n", joueur_niv); fclose(fichier); if (joueur_classe == 1) { joueur_attaque = joueur_force ; } else { joueur_attaque = joueur_intelligence ; } printf("\n%s vous attaque !\n",nom); while ((monstre_pv > 0) && (joueur_pv > 0)) { nbaleatoire = floor(((rand() % ((joueur_attaque*5) - 1 + 1)) + 1)/50); degat = (joueur_attaque + nbaleatoire) - monstre_endu; if(degat < 0) degat = 0; printf("Vous attaquez %s et lui infligez %0.0f points de dégats\n", nom, degat); monstre_pv = monstre_pv - degat; nbaleatoire = floor(((rand() % ((monstre_attaque*5) - 1 + 1)) + 1) / 50); degat = (monstre_attaque + nbaleatoire) - joueur_endurance; if(degat < 0) degat = 0; printf("%s vous attaque et vous inflige %0.0f points de dégats\n", nom, degat); joueur_pv = joueur_pv - degat; } if ((monstre_pv <= 0) && (joueur_pv > 0)) { printf("\nVous avez vaincu %s !!! \n", nom); monstre_exp *= 4; printf("\nVous gagnez %ld points d'experience !\n\n", monstre_exp); niv_actuel = joueur_niv; //sauvegarde des xp du joueur // printf("niv_actuel : %ld", niv_actuel); niv_actuel = conversion_xp(niv_actuel); //conversion des xp en niveau avant nouveaux xp joueur_niv = joueur_niv + monstre_exp; //gain de xp du monstre sauvegarde_carac(emplacement, 10, joueur_niv); //On sauvegarde le nombre de xp sauvegarde_carac(emplacement, 8, joueur_pv); // new_niveau = conversion_xp(joueur_niv); //On genere le lvl du perso avec ses nouveaux xp if(niv_actuel < new_niveau) lvl_up(emplacement, new_niveau); } else if((joueur_pv <= 0) && (monstre_pv > 0)) { printf("\nVous avez été vaincu par %s ...\n\n",nom); mort(emplacement); } else { printf("\n Dans une lutte sanglante, vous et %s vous êtes entretués, . \n\n", nom); mort(emplacement); } printf("\nVoulez-vous continuer à jouer (1), ou arrêter (2) ?\n"); scanf("%ld", &choix); if(choix == 1) game(emplacement); else { quitter(); } }