Simulation d'ascenceur

Résolu/Fermé
Signaler
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
-
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
-
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

Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
14
#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
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
126
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
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
14
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
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
120
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
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
14
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
Messages postés
1928
Date d'inscription
vendredi 21 avril 2006
Statut
Membre
Dernière intervention
5 août 2015
120
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
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
14
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
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
126
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
Messages postés
484
Date d'inscription
mardi 28 août 2007
Statut
Membre
Dernière intervention
20 mai 2011
126
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
Messages postés
233
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
17 mars 2015
14
merci les amis j'ai terminé mais en langage c g pourrai vous ecrire le code plus tard pour avoir votre avis
salut
0