Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme

et pas seulement un a mon avis

30 décembre 2005 à 4:21:56

Bonsoir, tout d'abord, je voulais dire que j'adore les guides pour apprendre le C, c'est super bien fait, on comprend "assez" vite. Par contre des que je passe de la comprehension à la pratique, là je deguste. :p

Tout d'abord, je pense ne pas avoir totalement compris le foncionnement de srand(), ensuite je suis pas sur de mon header "combat.h".J'ai utilisé des variables globales parceque je savais pas faire autrement, malgres le fait que j'ai lu que c'etait pas bien et je me sent coupable ( :euh: ). Je tien a dire pour infos que avant que je mette le combat.c & combat.h, et les srand, tout marché bien . ^^

//main.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "combat.h"

int main(int argc, char *argv[]);

    long classe;
    long force;
    long agilite;
    long intelligence;
    double resultat_attaque_ennemi;
    double MAX;
    double MIN;
    double resultat_attaque;
 
   
   
    {
           
    classe=0;
    force=2;
    agilite=2;
    intelligence=2;
    MAX = (force+intelligence+agilite) ;
    MIN = (force+intelligence+agilite)/3
   
   
       
    printf("________Gedeon'Story________\n\nBienvenue dans le 1er jeux d'aventure cree par Gdon.\n\nVous etes un hero, mais vous ne le savez pas encore.Pour l'instant vous n'etes qu'un paysan, mais dans quelque instant votre vie va basculer.\nLaissez vous entrainer dans un monde feerique...\n\n");
    system("PAUSE");
    system("CLS");
   
   
   
   
    printf("Veuillez choisir votre classe.\n\n1.Guerrier\n2.Archer\n3.Magicien\n\nEt bien?...");
    scanf("%ld",&classe);
    /*
    Guerrier = force +1
    Archer = agilité +1
    Magicien = intelligence +1
   
    Base hero : force=2 ; agilité=2 ; intelligence=2
    */
             
                 
   
   
   
    if (classe == 1)
               {
               force=3;     
               printf("Vous etes desormais un guerrier. Le maniement d'une lame est un art acquis pour vous.\n");
               }
    else if (classe == 2)
               {
               agilite=3;     
               printf("Vous etes desormais un archer. Vos yeux sont aussi precis que ceux d'un aigle.\n");
               }
    else if (classe == 3)
               {
               intelligence=3;     
               printf("La puissance des arcanes vous possedes. Vous etes desormais un magicien.\n");
               }
    else
               {
               classe = 4;
               force = 1;
               agilite = 1;
               intelligence = 1;           
               printf("Vous n'etes qu'un paysan !\n");
               }
               
    system("PAUSE");
    system("CLS");
   
   
   
   
   
   
   
   
    printf("Vous etes au bord d'une paisible riviere, vos doigt carressant l'eau si douce et pur a vos yeux. Puis vous decide d'allez vous reposer sous un grand chene.\n\n");
    system("PAUSE");
    system("CLS");
   
   
   
   
   
    switch(classe)
                  {
                  case 1:
                       printf("En vous dirigeant vers le grand chene, vous marchais sur un grand baton.\n*** Vous venez d'acquerir un baton ***\nVous voila bien installer sous le grand chene.\n\n");
                       break;
                  case 2:
                       printf("Vous decidez de faire un detour chez votre grand pere. Vous tappez a la porte mais il ne repond pas, vous decidez alors de passer par le jardin. Toujours aucune trace de votre grand pere, cependant vous remarquer une cible et un arc.\n*** Vous venez d'acquerir un arc***\nNi une ni deux vous retournez pres de votre arbre.\nVous voila bien installer sous le grand chene.\n\n");
                       break;
                  case 3:
                       printf("En vous dirigeant vers le grand chene, quelque chose attire votre attention.Vous vous abaissez et vous ramassez une pierre qui brille.\n*** Vous obtenez une orbe ***\nVous voila bien installer sous le grand chene\n.\n");
                       break;
                  default:
                       printf("Vous devez allez labourer les champs !\n\n");
                       break;
                  }                 
    system("PAUSE");
    system("CLS");
   
   
   
   
   
    printf("Morphee s'empare petit a petit de vous, vous plongeant dans un monde qui vous appartient totalement.\n\n!!! OUCH !!!\n\nVous vous reveillez en fracas. Un gland de la taille d'une pomme venait de vous etre lancer par un sale gosse du village.\n\n");
    system("PAUSE");
    system("CLS");
   
   
   
   
    printf("N'ecoutant votre courage, vous decidez de repliquer. Vous vous emparez du premier caillou a votre portee et le balancait de votre plus grande force.\n\n");
    system("PAUSE");
    system("CLS");
   
   
   
   
    printf("\n\n\n\n\n\n\n\n\n!-!COMBAT!-!\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
   
    // Ennemi : force 1 agilite 1 intelligence 1
    srand(time(NULL));
    resultat_attaque_ennemi = (rand() % ((1+1+1) - ((1+1+1)/3) + 1)) + ((1+1+1)/3);
   
   
    if (resultat_attaque<resultat_attaque_ennemi)
                                   {
                                   printf("Vous avez fait un score de %lf.\nVotre ennemi a fait un score de %ld\n\nLe caillou s'ecrase lamentablement sur votre pied.",resultat_attaque,resultat_attaque_ennemi);
                                   }
    if else {resultat_attaque>resultat_attaque_ennemi)
                                   {
                                   printf("Vous avez fait un score de %lf.\nVotre ennemi a fait un score de %ld\n\nLe caillou attein la tete de votre ennemi, il tombe K.O",resultat_attaque,resultat_attaque_ennemi);
                                   }
   
   
   
   
   
   
    system("PAUSE");   
  return 0;
}

//combat.c
#include <time.h>

double combat (long force, long agilite, long intelligence)
{
    srand(time(NULL));
    resultat_attaqye = (rand() % (MAX - MIN + 1)) + MIN;

return resultat_attaque;
}

//combat.h
double combat (long force, long agilite, long intelligence)


Alors c'est grave docteur? :(

PS: J'ai utilisé la formulé donné "resultat_attaqye = (rand() % (MAX - MIN + 1)) + MIN;" parceque je ne savais vraiment pas comment marche rand...
PPS: En faite, je voudrais que rand donne un nombre entre [(force+agilite+intelligence)-(force+intelligence+agilite)/3] en fonction de la classe, sachant que guerrier ( classe ==1 ) a un bonus de 1 en force ( sur 2), ect....

Voila j'espere avoir etait clair dans mes explications, sinon je suis pret a fournir plus de details de comment et pourquoi :p

PPPPS : Faite pas attention à l'orthographe :-° Merki ^^
  • Partager sur Facebook
  • Partager sur Twitter
30 décembre 2005 à 4:31:30

Salut ! ET bien deja, dans le fichier combat.c, dans ta fonctions, tu mentionne la variable

resultat_attaqye

alors que tu retourne la variable

resultat_attaque


faudrait se mettre daccord non ? ;)
  • Partager sur Facebook
  • Partager sur Twitter
30 décembre 2005 à 4:34:17

Arf, il fait tard ^^
Merci ! Deja une chose de corriger :p
  • Partager sur Facebook
  • Partager sur Twitter
30 décembre 2005 à 4:38:03

Et sinon, je comprend pas ta fonctions, pourquoi tu demande force, agilité et intelligence comme parametre alors que tu ne les utilises pas dans la fonctions ?...

EDIT : Et pour le prototype de la fonction combat, tu as oublier le point virgule ;)
  • Partager sur Facebook
  • Partager sur Twitter
30 décembre 2005 à 4:41:40

Parceque MAX et MIN demandent force/intelligence/agilite. Non? o_O
  • Partager sur Facebook
  • Partager sur Twitter
30 décembre 2005 à 4:49:18

Dans ce cas, tu devrais assigné les valeurs de MIN et MAX apres le choix de la classe....les valeurs de forces, intelligence et agilité sont alors DANS MIN et MAX, dont pas besion d'eux ^^ ta fonction peut ainsi se passer de parametre ^^
  • Partager sur Facebook
  • Partager sur Twitter
30 décembre 2005 à 10:41:18

Le gros problème que je vois c'est que tu sais pas faire un truc qui veut dire quelque chose.
  • Partager sur Facebook
  • Partager sur Twitter
30 décembre 2005 à 14:09:01

Oulala double post mais c'est pour la bonne cause. En fait, je le ferme pour titre non explicite, et non pas "truc" comme marqué plus haut.
En aucun, je ne jugeais de son travail de programmation, seulement son titre qui n'est pas vraiment parlant.

Gédéon, tu peux rouvrir un topic (avec un meilleur titre cette fois-ci quand même :) ), et encore toutes mes excuses pour cette phrase malheureuse qui donne à penser que je crachais sur ton travail.
  • Partager sur Facebook
  • Partager sur Twitter