Quelqu'un peut-il m'aiguiller svp??

marc0591 Messages postés 1 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 21 juin 2007 - 21 juin 2007 à 16:27
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 22 juin 2007 à 13:04
Bonjour, je vais vous embêter pour une bêtise mais je ne parviens pas à avancer sur mon projet de fin d'année en c++, sûrement une bêtise mais pour moi c'est presque du chinois, je ne demande pas la charité simplement si quelqu'un se sent l'âme de m'aider, ce serait gentil, voici l'énoncé, merci

Enoncé :
Vous devez gérer une fabrique de robots pour l’exploitation d’une planète minière. Différents types de robots existent :

-    Des robots foreurs.
-    Des robots déblayeurs.
-    Des robots artificiers

Les caractéristiques similaires sont :

-    4 roues
-    Un moteur
-    Une cuirasse métallique

Les caractéristiques spécifiques de chaque robot sont détaillées ici :

Robots foreurs :
-    marteau piqueur
-    des tarières

Robots déblayeurs :
-    un container pour les déblais
-    une pelleteuse

Robots artificiers :
-    Stock d’explosifs
-    Commande à distance de détonation

Vous devez créer au maximum 12 robots au début de la simulation. (4 de chaque sorte)

Le but de ce programme est une simulation de vie des robots. C'est-à-dire qu’il faudra également simuler des pannes et les renvoyer en réparation. Vous devrez gérer également quels sont les robots en cours de réparation et le laps de temps avant qu’ils ne redeviennent opérationnels. Chaque robot est sujet à des pannes bien spécifiques et sont contraints à un laps de temps en réparation :

Pannes communes :
Panne hydraulique, 1 tour pour la réparation.
Essieu cassé, 3 tours pour la réparation.
Panne d’essence, 1 tour pour la réparation.
Panne de moteur, 3 tours pour la réparation.
Renouvellement de la cuirasse, 2 tours pour la réparation.
Victime d’un éboulement, 5 tours pour réparation.
… vous pouvez créer d’autres pannes communes si le cœur vous en dit.

Panne spécifique aux robots foreurs :
Défection des marteaux et des tarières, 3 tours pour la réparation.

Panne spécifique aux robots déblayeurs :
Réparation ou remplacement de la pelleteuse, 3 tours pour la réparation.

Panne spécifique aux robots artificiers :
Détonation prématurée, 5 tours pour la réparation

Vous échelonnerez la simulation sur 20 tours. Cela signifie qu’à chaque tour, vous simulerez entre 0 et 3 pannes au hasard. Chaque panne sera imputable au hasard à un des robots au choix. Il faut donner la possibilité au gestionnaire de consulter n’importe quand les tableaux des robots actifs et des robots en réparation. Il faut veiller également aux nombres de tours nécessaires aux réparations pour qu’un robot redevienne actif dans le tableau d’activité. A la fin de la simulation, vous afficherez un rapport général de l’ensemble de tous les tours qui contiendront les éventuelles pannes, les robots envoyés en réparation et ceux de retour au service actif.

Ceci en utilisant la virtualité et le polymorphisme.
Voici ce que j'ai déjà fait, même si c'est pas grand chose:

#include
#include <time.h>
class Robot    //Classe de base
{
    public:
    robot();
    int roues=4;                                                    //Composantes similaires
    int moteur=1;
    int cuirrasse=1;
    int panneHydraulique=0;
    int essieuCasse=0;
    int panneEssence=0;
    int panneMoteur=0;
    int renouvellementCuirrasse=0;
    int eboulement=0;

    char enPanne()
    {
        panneHydraulique=0;
        essieuCasse=0;
        panneEssence=0;
        panneMoteur=0;
        renouvellementCuirrasse=0;
        eboulement=0;
    }

    };

class RobotForeur:public Robot //Classe dérivée Foreur
{
    private:
    int marteauPiqueur=1;
    int tariere=1;
    public:
   
};

class RobotDeblayeur:public Robot  //Classe dérivée Deblayeur
{
    private:
    int pelleteuse=1;
    int container=1;
    public:
   
};

class RobotArtificier:public robot  //Classe dérivée Artificier
{
    private:
    int stockExplosif=1;
    int commandeADistance=1;
    public:
   
   
};   

class usine
{
    RobotForeur robotForeur = new RobotForeur();
    RobotDeblayeur robotDeblayeur = new RobotForeur();
    RobotArtificier robotArtcificier = new RobotForeur();
    RobotForeur robotForeur = new RobotForeur();
    for (i = 0; i < 20; i++)
    {
        if(robotForeur.enPanne())
        {
            cout<<"Le robot foreur est en panne: "<<endl;
            if (robotForeur->panneHydraulique)
                cout<<"panne hydraulique."<<endl;
        }
    }
   
   
}
   
int main(void)
{
            int i = srand();
        if (i > 0.5)
        {
            if (i > 0.5 && i < 0.59) panneHydraulique = 1;
             return 1;
        }
        return 0;
    }
   
return 0;   
}

D'avance je remercie toute personne voulant prendre le temps de m'en toucher un mot. Merci

1 réponse

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
22 juin 2007 à 13:04
Salut,

Hey, ton prof s'est casser le cerveau sur ce sujet ! Le coup des robots miniers c'est sympa. De suite ça (me) donne envie de bosser dessus.

Je pense qu'il faut que tu te déguste quelques bon tuto, nottement concernant l'héritage : tu pourras factoriser pas mal de code dans ton cas. Par exemple, tu as fais une classe robot, et une tu hérite une classe par type de robot. tu peux faire pareil pour les parties de robots : tu fais une classe partie de robot, et tu hérites roue moteur...

Ce n'est pas des entiers qu'il faut stocker dans tes robots, mais des classes.

Ce serait pas mal de regrouper tes robots dans un vector pour les parcourir plus facilement. Il peut peut être aussi être judicieux de regrouper les parties de robots elles aussi dans un vector contenu dans le robot.
Cours de C++ polymorphisme qu'à l'air pas mal du tout.

Des tutos C++.
0