begin process at 2012 05 28 16:50:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

besoin d'aide pour programme d'affichage graphique


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

besoin d'aide pour programme d'affichage graphique

dimanche 13 août 2006 à 16:29:35 | besoin d'aide pour programme d'affichage graphique

prado

salut je suis un jeune etudiant senegalais debutant en informatique . j'ai un probleme avec mon programme .le libele est le suivant : on souhaite simuler a l'ecran la chute d'une balle qui rebondit sur le sol et qui remonte , a chaque rebond , des deux tiers de la hauteur de sa precedente chute .
lundi 14 août 2006 à 09:21:59 | Re : besoin d'aide pour programme d'affichage graphique

Galmiza

Salut,

Qu'est ce qui te pose probleme exactement ?
L'affichage, le calcul de la position de la balle, l'histoire des 2/3 ... ?
mardi 15 août 2006 à 16:01:41 | Re : besoin d'aide pour programme d'affichage graphique

prado

c'est la boucle pour afficher la chute de la balle apres chaque variantion de la hauteur des 2/3. 

mardi 15 août 2006 à 16:01:42 | Re : besoin d'aide pour programme d'affichage graphique

prado

c'est la boucle pour afficher la chute de la balle apres chaque variantion de la hauteur des 2/3. 

mardi 15 août 2006 à 18:16:30 | Re : besoin d'aide pour programme d'affichage graphique

Galmiza

J'ai toujours pas compris ou tu avais des soucis (utilisation de librairie graphique pour l'affichage, problemes de physique pour calculer les positions consécutives de la balle...).

Sinon, un indice:
L'énergie de ta balle est proportionelle a sa hauteur
donc tu dois retirer 1/3 de l'énergie de la balle a chaque rebond.
Sachant que l'énergie cinétique est proportionelle au carré de la vitesse,
tu dois avoir en valeur absolue v_apres_rebond = v_avant_rebond/racine(3).

Bonne chance
mercredi 16 août 2006 à 14:00:47 | Re : besoin d'aide pour programme d'affichage graphique

prado

merci beaucoup pour l'aide que tu m'apporte mais le probleme de mon programme ne ce situe pas a ce niveau . en faite le probleme sais que je j'ai deja une bonne partie du code sur a chute de ballle mais j'ai besoin de faire tomber la balle sur le sol avec emission d'un son a chaque fois quelle touche le sol et la balle dois remonter a 2/3 de sa chute jusqu'a un arrete total . mais ce probleme de chuute de balle ne tient pas conmpte des notion de physique ou de math spécialiser sais une chute simple . j'utilise le borlan c++ pour compiler . je te passe le code que j'ai pour te donner une idée . donc comme je t'ai expliquer le but rechercher est de faire rebondire la bale sur le sol jusqu'a un arrete total avec emission de son a chaque fois que la balle touche le sol . voici le code :

/*************************************************************/
/* NOM : EFFA OBAME          */
/* PRENOM : PRADINO                                          */
/* EXERCICE : Lancer d'une balle                             */
/*************************************************************/

#include<graphics.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<dos.h>
#include<math.h>
#include<iostream.h>


class Point
 {protected:int x;
     int y;
     short visible;
     int couleur_trace;
  public:   Point(int initx,int inity);
     int getx(void);
     int gety(void);
     short isvisible(void);
     void moveto(int newx,int newy);
 };

 

class Cercle : public Point
 {protected:int couleur_plein;
     short colorie;
     int rayon;
  public:   Cercle(int initx, int inity, int initradius);
     void setfillcolor(int newfillcolor);
     void show(void);
     void hide(void);
 };

 

class Rectangle : public Point
 {protected:int couleur_plein;
     short colorie;
     int base_x, hauteur_y;
     double angle_z;
  public:   Rectangle(int initx, int inity, int base, int hauteur,double angle);
     void setfillcolor(int newfillcolor);
     void show(void);
     void hide(void);
     void moveto(int,int,double);
 };


       
class Homme : public Rectangle
 {protected: Cercle tete, poid, oeil, soleil;
      Rectangle piedG,piedD,corps,jambeG,jambeD,bra,bouche,pencasquette,casquette;
      Rectangle herbe, ciel;
  public:    Homme(int xcsg,int ycsg,int base,int hauteur,double angle);
      void show(void);
      void hide(void);
      void moveto(int newx,int newy,double newangle);
      void movebra(double newangle);
      void movepoidetbra(int newx);
      void movepoid(int newx);
 };


Point :: Point(int initx,int inity)
 {x = initx;
  y = inity;
  visible=0;
  couleur_trace = getcolor();
 }

int Point :: getx(void)
 {return x;
 }

int Point :: gety(void)
 {return y;
 }

short Point :: isvisible(void)
 {return visible;
 }

void Point :: moveto(int newx, int newy)
 {x = newx;
  y = newy;
  return;
 }

Cercle :: Cercle(int initx, int inity, int initradius) : Point(initx, inity)
 {rayon = initradius;
  couleur_plein = getbkcolor();
  colorie=0;
 }

void Cercle :: setfillcolor(int newfillcolor)
 {colorie=1;
  couleur_plein = newfillcolor;
  if (isvisible()) show();
  return;
 }

void Cercle :: show(void)
 {setcolor(couleur_trace);
  if (colorie)
   {setfillstyle(SOLID_FILL,couleur_plein);
    fillellipse(x,y,rayon,rayon);
   }
  else circle(x,y,rayon);
  return;
 }

void Cercle :: hide(void)
 {setcolor(getbkcolor());
  if (colorie)
   {setfillstyle(EMPTY_FILL, getbkcolor());
    fillellipse(x, y, rayon, rayon);
   }
  else circle(x, y, rayon);
  return;
 }

Rectangle::Rectangle(int initx, int inity, int base, int hauteur,double angle) :
Point (initx, inity)
 {base_x=base;
  hauteur_y=hauteur;
  angle_z=angle;
  colorie=0;
  return;
 }


void Rectangle::show(void)
 {int poly[8];
  setcolor(couleur_trace);
  if(colorie)
   {setfillstyle(SOLID_FILL,couleur_plein);
    poly[0]=getx()-base_x/2;
    poly[1]=gety();

    poly[2]=(getx()-base_x/2)+base_x*cos(angle_z);
    poly[3]=gety()-base_x*sin(angle_z);

    poly[4]=(getx()-base_x/2)+base_x*cos(angle_z)+hauteur_y*sin(angle_z);
    poly[5]=gety()+hauteur_y*cos(angle_z)-base_x*sin(angle_z);

    poly[6]=(getx()-base_x/2)+hauteur_y*sin(angle_z);
    poly[7]=gety()+hauteur_y*cos(angle_z);

    fillpoly(4,poly);
   }
  else rectangle(x-base_x/2,y,x+base_x/2,y+hauteur_y);
  return;
 }


void Rectangle::hide(void)
 {int poly[8];
  setcolor(getbkcolor());
  if(colorie)
   {setfillstyle(SOLID_FILL,getbkcolor());

    poly[0]=getx()-base_x/2;
    poly[1]=gety();

    poly[2]=(getx()-base_x/2)+base_x*cos(angle_z);
    poly[3]=gety()-base_x*sin(angle_z);

    poly[4]=(getx()-base_x/2)+base_x*cos(angle_z)+hauteur_y*sin(angle_z);
    poly[5]=gety()+hauteur_y*cos(angle_z)-base_x*sin(angle_z);

    poly[6]=(getx()-base_x/2)+hauteur_y*sin(angle_z);
    poly[7]=gety()+hauteur_y*cos(angle_z);

    fillpoly(4,poly);

   }
  if(angle_z==0) rectangle(getx()-base_x/2,gety(),getx()+base_x/2,gety()+hauteur_y);
  return;
 }

void Rectangle::setfillcolor(int newfillcolor)
 {colorie=1;
  couleur_plein=newfillcolor;
  if (isvisible()) show();
  return;
 }

void Rectangle::moveto(int newx,int newy,double newangle)
 {hide();
  Point::moveto(newx,newy);
  angle_z=newangle;
  show();
 }

Homme::Homme(int xcsg, int ycsg, int base, int hauteur,double angle) :
 corps(xcsg,ycsg+50,30,55,0),
 jambeG(xcsg,ycsg+100,base/7,55,angle),
 jambeD(xcsg,ycsg+100,base/7,55,(-angle)),
 piedD(xcsg+32,ycsg+110+(hauteur*cos(angle)),25,12,0),
 piedG(xcsg-20,ycsg+90+80-hauteur*sin(angle),25,12,0),
 bra(xcsg,ycsg+60, 10, 40, 4),
 tete(xcsg, ycsg+33,hauteur/2.7),
 soleil(xcsg+8,ycsg-160,hauteur/1.8),
 poid(xcsg-30,ycsg+30,hauteur/4-2),
 Rectangle(xcsg,ycsg-18,35,80,0),
 bouche(xcsg+10,ycsg+38,8,0.5,0),
 oeil(xcsg+9,ycsg+28,3),
 pencasquette(xcsg+21,ycsg+21,15,3,0),
 casquette(xcsg,ycsg+16,27,8,0),
 herbe(xcsg+10,ycsg+162,1200,120,0),
 ciel(xcsg+10,ycsg-220,1200,40,0)

{
  tete.setfillcolor(6);
  soleil.setfillcolor(14);
  corps.setfillcolor(1);
  jambeG.setfillcolor(1);
  jambeD.setfillcolor(1);
  piedD.setfillcolor(1);
  piedG.setfillcolor(1);
  bra.setfillcolor(1);
  poid.setfillcolor(8);
  bouche.setfillcolor(1);
  pencasquette.setfillcolor(4);
  casquette.setfillcolor(4);
  herbe.setfillcolor(18);
  ciel.setfillcolor(9);
 }

void Homme::show(void)
 {
  tete.show();
  soleil.show();
  corps.show();
  jambeG.show();
  jambeD.show();
  piedG.show();
  piedD.show();
  bra.show();
  poid.show();
  bouche.show();
  oeil.show();
  pencasquette.show();
  casquette.show();
  //ciel.show();
  herbe.show();
  return;
 }

void Homme::hide(void)
 {
  piedD.hide();
  piedG.hide();
  jambeG.hide();
  jambeD.hide();
  corps.hide();
  tete.hide();
  bra.hide();
  poid.hide();
  bouche.hide();
  oeil.hide();
  pencasquette.hide();
  casquette.hide();
  return;
 }

void Homme::moveto(int newx,int newy,double newangle)
 {hide();
  x=newx;
  y=newy;
  tete.moveto(newx,tete.gety());
  corps.moveto(newx,corps.gety(),0);
  jambeG.moveto(newx,jambeG.gety(),newangle);
  jambeD.moveto(newx,jambeD.gety(),-newangle);
  corps.moveto(newx,corps.gety(),0);
  piedD.moveto(newx+55*sin(-newangle),jambeD.gety()+50*cos(newangle),-newangle);
  piedG.moveto(newx+55*sin(newangle),jambeG.gety()+50*cos(newangle),newangle);
  bra.moveto(newx+10,corps.gety()+10,4);
  poid.moveto(newx-30,poid.gety());
  oeil.moveto(9+newx,oeil.gety());
  bouche.moveto(10+newx,bouche.gety(),0);
  pencasquette.moveto(21+newx,pencasquette.gety(),0);
  casquette.moveto(newx,casquette.gety(),0);
  show();
  delay(50);
  return;
 }


void Homme::movebra(double newangle)
 {
 bra.moveto(bra.getx(),corps.gety()+10,newangle);
 poid.show();
 tete.show();
 casquette.show();
 pencasquette.show();
 bouche.show();
 oeil.show();
 corps.show();
 bra.show();
 poid.show();
 delay(15);
 }

void Homme::movepoidetbra(int newx)
{
poid.hide();
poid.moveto(poid.getx()+(newx/2.5),poid.gety()-(pow((newx)/2.5,0.5))*1.2);
poid.show();
delay(50);
}

void Homme::movepoid(int newx)
 {
 poid.hide();
 poid.moveto(poid.getx()+newx,poid.gety()-(pow(newx,0.5))*1.2);
 poid.show();
 casquette.show();
 pencasquette.show();
 delay(80);
 }


/*******************************************************************/
/*                                                                 */
/*    Programme principal                        */
/*                                                                 */
/*******************************************************************/

int main(void)
 {int i,j;
  int gdriver;
  int gmode;
  int errorcode;
  int cax=40,cay=200,cab=80,cah=45;
  double ang=0.5;

  gdriver = DETECT;
  initgraph(&gdriver,&gmode,"C:\\borlanc\\bgi");
  errorcode = graphresult();
  if (errorcode != grOk)
   {printf("Erreur graphique: %s\n",grapherrormsg(errorcode));
    printf("Taper une touche pour arreter");
    printf("\nModifier le chemein d'acces au compilateur dans le programme principale!!!");
    getch();
    exit(1);
   }

  setbkcolor(9);
 
  Homme hom(cax,cay,cab,cah,ang);

  for(i=0;i<110;i++)
  {
  ang=0.5;
     for(j=0;j<20;j++)
     {
     ang=ang-0.09;
     hom.moveto(cax+i+j,cay,ang);
     j++;
     }
  i=i+15;
  }


  i=0;
  ang=4;

    do
    {
    hom.movebra(ang);
    i++;
    hom.movepoidetbra(cax+i);
    ang=ang-0.5;
    }while(ang!=2);


  for(i=0;i<11;i++)
   {
   hom.movepoid(cax+i);
   }

  getch();
  closegraph();
  return 0;
 }

je compte sur ton aide . je te remerci de tout coeur .

mercredi 16 août 2006 à 16:17:42 | Re : besoin d'aide pour programme d'affichage graphique

Galmiza

En fait tu vas mettre l'animation de la balle a la suite.
Attention ton programme ne tournera pas a la meme vistesse sur tous les ordinateurs.

Tu peux créer une classe balle qui contiendrait un objet cercle, une vitesse suivant x, suivant y, une masse... tout ce que tu veux.

Pour simplifier
m la masse
vx vitesse suivant x
vy vitesse suivant y

Deja tu auras une infinité de rebond, donc il faut fixer une limite, disons 10.


float deta_temps = 0.01f;
float hauteur_sol = 0.0f;

for (k=0;k<10;k++) // on ne fait que 10 rebond
{
while (y>hauteur_sol)
{
vy = vy - 9.81*delta_temps; // acceleration de la pesanteur
y = y + vy*delta_temps;
x = x + vx*delta_temps;
// Affichage
balle.moveto(x,y);
balle.show();
}
y=y+2*(hauteur_sol-y);
vy = vy/sqrt(3); // vrai que si vx=0, mais ca ne choquera pas les yeux
}

Bien sur il n'y a que les grandes lignes, il te faut trouver les bons parametres pour ton pc.
vendredi 18 août 2006 à 00:24:20 | Re : besoin d'aide pour programme d'affichage graphique

prado

salut mon frere excuse moi de te deranger j'ai finalement concu un code beaucoup plus simple mais le problement qui ce pose a moi est d'emeliorer mon afichage graphique pour rendre mon travaille plus plaisent a regarder donc j'aurai besoin de ton aide pour ameliorer ma presentation , je laisse ton imagination faire je te fais confiance merci d'avance . le code est le suivant :

salut sais tres sympa tous ce que vous m'avez dit . j'ai suivie vos conseilles je me suis debrouiller . ce que je vous demande maintenent sais de m'aider a ameliorer la presentation de mon travailler en me proposent des graphique qui sorte de l'ordinaire . merci d'avance je vous passe le code de mon travail qui compile .
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>

void balletombe(int hauteur)
{
 int i;
 for(i=hauteur;i<450;i++)
 {
  cleardevice();
  circle(300,i,30);
  delay(5);
 }
}

void ballemonte(int hauteur)
{
 int i;
 for(i=450;i>hauteur;i--)
 {
  cleardevice();
  circle(300,i,30);
  delay(5);
 }
}
void son(int frequence)
{
sound(frequence);
delay(20);
nosound();
}
void main()
{
 int x,y,r,carte,mode,h;
 carte = DETECT;
 mode = 0;
 initgraph(&carte,&mode,"C:\\borlanc\\BGI");
 cleardevice();
 outtextxy(15,15," Entrer la hauteur : ");
 gotoxy(15,3);
 scanf("%d",&h);
 h = 450-h;
 setcolor(12);
 while(h<450)
{
  balletombe(h);
  h=h+(h*2/3);
  son(2000);
 ballemonte(h);
  }
 getch();
}


/* j'ai du reduire mon delay car chez moi la balle prend trop de temps pour decendre . merci d'avance

vendredi 18 août 2006 à 09:55:59 | Re : besoin d'aide pour programme d'affichage graphique

Galmiza

Pour les graphismes, utilise des librairies.
SDL (qui utilise OpenGL et DirectX) doit etre le plus simple.
OpenGL aussi.
DirectX est plus compliqué mais avec ca t'es sur de pouvoir faire des graphismes qui sortent de l'ordinaire !

Je n'utilise que DirectX, fais des recherches sur le Net. Internet regorge de tutoriaux.
samedi 19 août 2006 à 01:39:02 | Re : besoin d'aide pour programme d'affichage graphique

prado

stp passe moi bien les adresses des cites ou je peux trouver ses infos . merci beaucoup


Cette discussion est classée dans : aide, programme, graphique, affichage, chute


Répondre à ce message

Sujets en rapport avec ce message

Affichage graphique en temps réel [ par xb79 ] Bonjour!J'ai un programme en C++ tout simple qui n'a aucune interaction avec l'utilisateur, on peut le lancer et l'arrêter c'est tout. Ce programme fa economiseur d'ecran [ par philippexxx ] philippeje souhaite savoir la difference entre un programme graphique simple en visual c++ et un economiseur d'ecranoucomment transformer un programme Besoin d'aide urgent sur affichage boite de dialogue [ par mista ] mistaSalut, je réitere ma question...Est-ce que quelqu'un pourrais m'aider pour que je puisse afficher un foutu boite de dialogue, via un programme en strcat() ???? [ par supergrey ] Salut tout le monde, jai un petit probleme avec la fonction strcat() , je commence a peine un programme que deja je bloque la dessus jaimerai de l'aid DE L'AIDE SVP [ par srle ] Voilà je suis en train de faire un programme FTP permettant d'envoyer des fichiers de n'importe quelle taille, mais le problèmes c'est que j'ai un bug aide conception interface graphique c++ [ par lizarajim ] bonjour,je souhaiterais réaliser une interface BASIQUE à partir de visual c++ 6.je cherche une source ou une documentation SIMPLE me permettant de cré affichage au fur et à mesure [ par llandry ] Bonjours,Je crée un programme devant déplacer des lettres sur la fenetre.Le probleme est que le déplacement des lettres s'effectuent bien mais je ne v aide sur visual c++ svp [ par morgandetoi06 ] alors deja bonjour ;)j aimerait savoir comment faire pour que la console d un programme ms-dos compilé par visual c++ ne se voit pas.pour dev c++ j al DEV-C++/ affichage de texte en mode graphique [ par FLASH92 ] Bonjour mesdames, messieurs,Mon problème actuellement est que je ne peux pas afficher un texte quelconque en couleur et avec une police bien défini su DEV-C++/ affichage de texte en mode graphique [ par FLASH92 ] Bonjour mesdames, messieurs,Mon problème actuellement est que je ne peux pas afficher un texte quelconque en couleur et avec une police bien défini su


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales