Simulation d'ascenceur

Résolu/Fermé
angel lestat Messages postés 233 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 17 mars 2015 - 1 févr. 2008 à 11:09
angel lestat Messages postés 233 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 17 mars 2015 - 3 avril 2008 à 12:48
Bonjour,
S'il vous plait je voudrai savoir si quelqu'un as un lien ou je pourrai trouver les codes en c/c++ pour la simulation d'un ascenceur c'est un projet qu'on m'a attribuer @ l'ecole
Je compte sur votre comprehension
merci

10 réponses

angel lestat Messages postés 233 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 17 mars 2015 14
3 avril 2008 à 12:48
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<dos.h>
#include<math.h>

#define tailbtn 10

void initdessin();
void afficheSouris();
void immeuble();
void openclose();
void desBouton(int X, int Y,int CoulT);
void openclose();
void couloir();
void deplacerAsc(int arr,int appel);
void cage(int pt1, int pt2,int hauteur,int largeur, int CouleurTrait,int CouleurRemplissage);
//int clickInto(int ab, int ord);
int left, top, right, bottom;
int ascd;
int ecart;
int yAsc;
int main(void)
{
initdessin();
left = getmaxx() /2 -150;
top = getmaxy()/10 ;
right = getmaxx();
bottom = getmaxy() - 10;
ascd = 3 * getmaxx()/4-45; //refer to right line of lifter
ecart = 9 * getmaxy()/100 - 1;//ecart entre chak nivo de l'immbl
yAsc=bottom-ecart-2; //position en ordonn‚e de l'ascenseur au repos
immeuble(left,top,right,bottom,ascd,ecart);
openclose();

while(onClick() !=11);
closegraph();
return 0;
}
void initdessin()
{ int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "C:\\TC\\BGI");
}
void immeuble()
{ //cette fonction trace l'immeubl
int i;
rectangle(left,top,right,bottom);
line(ascd,top,ascd,bottom);
line(ascd-70,top,ascd-70,bottom);
setcolor(2);

for(i=top+ecart;i<getmaxy();i=i+ecart)
{ desBouton(ascd-85,i-top+ecart/2,3);
line(left,i,ascd-70,i);
line(ascd,i,getmaxx(),i);
if(i+ecart<bottom) outtextxy(left+50, i-ecart/2,"Etage");
else outtextxy(left+50, i-ecart/2,"Rez de Chauss‚e");
}
couloir();
bar(ascd-69,top+2,ascd-1,bottom-2);
desBouton(10,5,3); outtextxy(30,7,"QUITTER");
afficheSouris();


}
void couloir()
{ //dessine le couloir de l'ascenseur
setfillstyle(SLASH_FILL, 14);
bar(ascd-69,top+2,ascd-1,bottom-2);
}
void desBouton(int X, int Y,int CoulT)
{ setcolor(CoulT);
setfillstyle(BKSLASH_FILL,2);
bar(X,Y,X+tailbtn,Y+tailbtn);
//outtextxy(X,Y-tailbtn/2,texte);
}


void cage(int pt1, int pt2,int largeur,int hauteur, int CouleurTrait,int CouleurRemplissage)
{ //dessine la cage d'ascenseur
setcolor(CouleurTrait);
setfillstyle(SOLID_FILL,CouleurRemplissage);
rectangle(pt1,pt2,pt1+largeur,pt2+hauteur);
bar(pt1,pt2,pt1+largeur,pt2+hauteur+1);
}
void afficheSouris(void)
{
_AX = 0; geninterrupt(0x33);
_AX = 1; geninterrupt (0x33);
}

void openclose()
{ //commande l'open/close de la porte d'ascenseur
int x1, x2=68;
while(x2>0)
{
cage(ascd-69,yAsc,68,ecart-3,2,10);
cage(ascd-69,yAsc,x2,ecart-3,3,8);
x2 -=1; delay(50);
}
sleep(4);
x1=0;
while(x1<=68)
{ cage(ascd-69,yAsc,68,ecart-3,2,10);
cage(ascd-69,yAsc,x1,ecart-3,3,8);
x1 +=1; delay(50);
}
delay(500);
}
void deplacerAsc(int arr,int appel) //arr designe l'etage d'arrˆt
{ //dep nombre d'etage de deplacement
/* si appel=1 alors le boutton est externe
sinon le boutton est interne … l'ascenseur*/
int dep =1+ (bottom-yAsc)/(ecart +1);
int y1=yAsc; //position standard de la cage
if(dep==arr)
{ openclose();
return;
}
if(dep<1 || dep > 10) return;
if(arr<1 || arr > 10) return;
if(arr>=dep)
{ int y2=bottom - arr * ecart;
while(y1>y2)
{ couloir();
if(appel==1)
cage(ascd-69,y1,68,ecart,2,8);
else cage(ascd-69,y1,68,ecart,3,10); delay(50);
delay(50);
y1 -=1;
}
yAsc = y1;
}
else
{ int y2 = bottom - arr * ecart;
while(y1<y2)
{ couloir();
if(appel==1)
cage(ascd-69,y1,68,ecart,2,8);
else cage(ascd-69,y1,68,ecart,3,10); delay(50);
delay(50);
y1 +=1;
}
yAsc =y1;
}
openclose();
}


int clickInto(int ab, int ord)
{ /*permet de rep‚rer sur quel bouton appartient le point de
coordonn‚es (ab,ord) coordonn‚es du point de destination */
int xg = ascd-85, yg = 21 * ecart/2;
int xc,yc;
//coordonn‚es du bouton Quitter
xc = 10; yc =5;
if((abs(xc-ab)<=80/2)&&(abs(yc-ord)<=(tailbtn+5)/2)) return 11;

//reconnaitre les clicks sur les boutons d'appel externes
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 12;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 13;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 14;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 15;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 16;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 17;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 18;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 19;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 20;
yg = yg-ecart;
if((abs(xg-ab)<=tailbtn/2)&&(abs(yg-ord)<=tailbtn/2)) return 21;

return 0;
}


/*est lanc‚ aprŠs chaque clic de souris pour identifier le bouton
qui a ‚t‚ cliqu‚*/
int onClick(void)
{ int valclick, ab , ord;
do
{ _AX = 3; geninterrupt(0x33);
}
while(!_BX); //_BX vaut toujours 0 tant qu'on n'a pas cliqu‚
//aprŠs le click: _CX contient l'abscisse du point cliqu‚ et
// _DX son ordonn‚e
ab = _CX; ord = _DX;
valclick = clickInto(ab,ord);
if(valclick==11) return 11 ;
if(valclick==4)
{ deplacerAsc(4,0);
return 1;
}
if(valclick==3)
{ deplacerAsc(3,0);
return 1 ;
}
if(valclick==2)
{ deplacerAsc(2,0);
return 1;
}
if(valclick==1)
{ deplacerAsc(1,0);
return 1;
}

if(valclick==12)
{ deplacerAsc(1,1);
return 1;
}
if(valclick==13)
{ deplacerAsc(2,1);
return 1;
}
if(valclick==14)
{ deplacerAsc(3,1);
return 1;
}
if(valclick==15)
{ deplacerAsc(4,1);
return 1;
}

if(valclick==16)
{ deplacerAsc(5,1);
return 1;
}

if(valclick==17)
{ deplacerAsc(6,1);
return 1;
}

if(valclick==18)
{ deplacerAsc(7,1);
return 1;
}

if(valclick==19)
{ deplacerAsc(8,1);
return 1;
}

if(valclick==20)
{ deplacerAsc(9,1);
return 1;
}

if(valclick==21)
{ deplacerAsc(10,1);
return 1;
}
return 0;
}
3
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
1 févr. 2008 à 11:33
c'est un projet graphique ou juste fonctionnel?
parce que rien que du point de vue fonctionnel, il y a pas mal de choses à faire... gérer les incidents, gérer les temps d'ouverture des portes, gérer à qui on répond en premier quand on a plusieurs demandes simultannées, etc...
c'est quoi l'intitulé exact de ton projet?.. il ne faudrait pas que tu sois hors sujet.
1
angel lestat Messages postés 233 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 17 mars 2015 14
1 févr. 2008 à 18:44
tatou tu m'excuse si j'ai parru vouloir rechercher la facilité, ce ke je veux c'est avoir de la doc sur la prog en interface graphique. Je vais pas toujours attendre tout de l'ecole: l'informatique c'est d'abord l'esprit de recherche.
deja je vais commencer par faire de simple affichage de tableau pour ne pas faire du sur-place
merci
1
tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 120
1 févr. 2008 à 11:17
Ton école t'as demandé de trouver le code ou de le créer ?

Dans le premier cas c'est de l'apprentissage à l'utilisation d'internet, ce n'est pas ce que souhaite ton école ?
Dans le deuxième cas ce ne serait pas te rendre service de te les donner !

Réfléchis de par toi même et essaye d'imaginer comment tu pourrais faire. Donne ce que tu as imaginé et tu trouveras de l'aide, et ainsi tu auras appris quelque chose.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
angel lestat Messages postés 233 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 17 mars 2015 14
1 févr. 2008 à 11:24
ce n'est en rien la facilite que je recherche je voudrais juste tomber un site ou je pourrai aprendre @ le faire. Je suis tomber sur un manuel de programmation avec gtk+ mais c sous linux. Mon niveau en prog n'est pas assez eleve pour faire des graphismes c'est pk je demande de l'aide.
0
tatou_38 Messages postés 1928 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 5 août 2015 120
1 févr. 2008 à 11:35
Ok, excuse moi pour ma réaction un peu "brutale", mais j'en ai assez de tous ces élèves qui attendent que les membres du forum fassent les devoirs à leur place.

Ne mets pas la charrue avant les boeufs, avant de voir comment réaliser ton projet, essaye de définir ce dont tu as besoin et les différentes fonctionnalités dont tu as besoin. par exemple : ai-je besoin d'un affichage graphique ? ai-je besoin d'une base de données ? Quels sont les algorithmes à implémenter ? Qu'est ce que souhaite exactement l'utilisateur (ici le prof !). Après avoir défini le cahier des charges, tu pourras rentrer dans la technique et faire des choix.

Après tu pourras choisir toutes les différentes solutions en fonction du cahier des charges que tu as fait.

Sinon, n'exclues pas linux car c'est en fait plus simple souvent, ne serait-ce que par la diversité des outils disponibles.

0
angel lestat Messages postés 233 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 17 mars 2015 14
1 févr. 2008 à 11:41
le sujet est "realiser une simulation d'ascenceur en C". j'ai jamais fait d'interface grafique dc je sais pas par koi commencer je alle ici "nader.salman-circle.com/Paradigmes.pdf" mais il y a des fichiers .h qui manquent
0
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
1 févr. 2008 à 11:57
le C n'est pas le plus approprié pour faire des interfaces graphiques... et de plus, si tu n'as jamais eu de cours là dessus, je ne pense pas que ton école te le demande "à froid"
je pense donc que c'est du point de vue fonctionnel qu'on te demande ça, et qu'on te demande en fait de créer le programme qui va gérer le comportement de l'ascenseur (avec entrées/sorties au clavier sur une invite de commande par printf/scanf)
0
SebManfred Messages postés 484 Date d'inscription mardi 28 août 2007 Statut Membre Dernière intervention 20 mai 2011 128
4 févr. 2008 à 10:56
pour les interfaces graphiques, ça n'est pas en C que tu pourras y arriver facilement
en JAVA, tu trouvera plus ton bonheur. les MFC, sn C++, te proposent aussi de quoi construire une IHM, et comme apparament tu connais déjà le C, je pense que c'est l'étape suivante. mais si tu n'as encore jamais fait de C++, attend de voir ce qu'est le C++ à l'école, ne brule pas les étapes.
0
angel lestat Messages postés 233 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 17 mars 2015 14
17 mars 2008 à 13:32
merci les amis j'ai terminé mais en langage c g pourrai vous ecrire le code plus tard pour avoir votre avis
salut
0