Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1129 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Tracer une ligne entre deux point en mode console

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tracer une ligne entre deux point en mode console

n°510195
xiluoc
un pc pour les unirs ....
Posté le 08-09-2003 à 16:00:15  profilanswer
 

Je vasi essayer de develloper un petit jeu genre pong and cie, en c++.
mais au lieu d utiliser un mode vga, j utilise une combinaison de system("cls" ) et gotoxy(int x, inty) (conio.c)
 
cette methode marche bien  :D ,  
 
j ai voulu recreer les bases
c a d class point, class ligne ect...
 

Code :
  1. class point
  2. {
  3.     public :
  4.    
  5.         point();
  6.         point(int x, int y);
  7.         void translate(int x, int y);
  8.         double distance(point b);
  9.         void setx(const int x);
  10.         void sety(const int y);
  11.         int xval ();
  12.         int yval ();
  13.        
  14.     private :
  15.    
  16.         int xcoord;
  17.         int ycoord;
  18. };


 

Code :
  1. class ligne
  2. {
  3.     public :
  4.    
  5.         ligne(point x, point y, int cl, char ch);
  6.         void drawligne ();
  7.        
  8.     private :
  9.    
  10.          point a;
  11.          point b;
  12.          int ligne_color;
  13.          int ligne_caracter;
  14.        
  15. };


 
 
et j en viens au probleme suivant, comment tracer une ligne d un point a a un point b ?
 
verticale, horizontal ok mais diagonale ?
 
en utilisant des gotoxy(x,y) pour chaque point ?
 
 :hello:

mood
Publicité
Posté le 08-09-2003 à 16:00:15  profilanswer
 

n°510218
xiluoc
un pc pour les unirs ....
Posté le 08-09-2003 à 16:41:43  profilanswer
 

:??:

n°510240
bjone
Insert booze to continue
Posté le 08-09-2003 à 16:50:57  profilanswer
 

déjà je t'arrêtes direct: faire un system("cls" ) entre chaque image va faire que ça va être vraiement très pourri.
 
je te conseillerai déjà de plustôt effacer l'ancienne position d'un objet pour ensuite traçer la nouvelle...
 
ensuite ton pong, les raquettes sont verticales non ?

n°510267
xiluoc
un pc pour les unirs ....
Posté le 08-09-2003 à 17:02:20  profilanswer
 

BJOne a écrit :

déjà je t'arrêtes direct: faire un system("cls" ) entre chaque image va faire que ça va être vraiement très pourri.
 
je te conseillerai déjà de plustôt effacer l'ancienne position d'un objet pour ensuite traçer la nouvelle...
 
ensuite ton pong, les raquettes sont verticales non ?


 
- ok pour le system("cls" ) je vais essayer
pour delter un char c \b ?
 
 
- oui les raquette sont verticale, mais je penssai reutiliser la classe ligne.  :sweat:

n°510423
bjone
Insert booze to continue
Posté le 08-09-2003 à 19:57:35  profilanswer
 

oulà...
 
tu veux vraiment traçer en mode texte via le bios (enfin le dos aussi :D) ?
 
remarque vu la puissance des machines, y'a ptet moyen de faire des trucs qui tournent via un appel dos->bios par pixel :D (heu patate)


Message édité par bjone le 08-09-2003 à 19:58:02
n°510445
Kristoph
Posté le 08-09-2003 à 20:28:33  profilanswer
 

BJOne a écrit :

oulà...
 
tu veux vraiment traçer en mode texte via le bios (enfin le dos aussi :D) ?
 
remarque vu la puissance des machines, y'a ptet moyen de faire des trucs qui tournent via un appel dos->bios par pixel :D (heu patate)


 
Je lis bien mes vidéo en mode texte grace à la combo mplayer + aalib :D

n°510451
bjone
Insert booze to continue
Posté le 08-09-2003 à 20:46:35  profilanswer
 

oué mais c'est de l'écriture direct en ram vidéo ? :D

n°510638
Kristoph
Posté le 09-09-2003 à 02:29:18  profilanswer
 

BJOne a écrit :

oué mais c'est de l'écriture direct en ram vidéo ? :D


 
Je ne pense pas mais c'est bien du temps réel en tout cas. Même sur mon vieux K6-2 300 MHz ça passait bien :D

n°510645
xiluoc
un pc pour les unirs ....
Posté le 09-09-2003 à 05:48:39  profilanswer
 

heuuu direct en ram video ??
non c est juste la console qui sert de mode "vga"
en 50*80 svp  [:alarmclock119]  
 
pour le cls ok j ai resolu avec une fonctio erase
c est vrai qu i lny a plus les clignotement.
 
masi le pb (je me repete  :whistle: )
 
 
50*80
 
point a(1,1)
point b(50,80)
 
 
je beus tracer un ligne comment je peus faire ?
 
1. calcule  (y2-y1) / (x2-x1)
 
ex si (y2-y1) =(x2-x1)
 
je trace un point (i++, j++) pour la longueur (x2-x1)
 
humm je vais voir ca  [:alarmclock119]  
 
 
 

n°510646
souk
Tourist
Posté le 09-09-2003 à 06:28:13  profilanswer
 

(i++,j++) c'est pas tres bien...
a part pour aller de (1,1) a (50,50) [NB: je prends 50, mais j'aurais pu prendre n'importe quel autre nombre)
 
mais de (1,1) a (50,80), t'es mal barre :D

mood
Publicité
Posté le 09-09-2003 à 06:28:13  profilanswer
 

n°510650
Joel F
Real men use unique_ptr
Posté le 09-09-2003 à 07:04:48  profilanswer
 

Deja tu pourras aps designer comme ca dans la console.
Utilise Allegro c plus simple.
 
Pour ta ligne, ben cherche des algos tout fait ca existe mais c pas trivial.

n°510658
souk
Tourist
Posté le 09-09-2003 à 07:40:10  profilanswer
 

deja je commencerai par distinguer deux cas dans l'algo:
coefficient directeur <1 et l'autre >1 (si = 1, c'est facile)
 
s'il est superieur a 1, ta "droite" sera constituee de plusieurs segments verticaux, sinon, les segments seront horizontaux.
 
a partir de la, c'est pas trop dur de tracer les differents segments....heureusement que c'est une droite :D
 
mais bon, y a d'autres methodes, sans s'embeter avec le coef directeur bien sur...mais c'est peut etre moins facile ;)


---------------
L'inventeur de la cédille est un certain monsieur Groçon .
n°510660
xiluoc
un pc pour les unirs ....
Posté le 09-09-2003 à 07:47:40  profilanswer
 

souk a écrit :

deja je commencerai par distinguer deux cas dans l'algo:
coefficient directeur <1 et l'autre >1 (si = 1, c'est facile)
 
s'il est superieur a 1, ta "droite" sera constituee de plusieurs segments verticaux, sinon, les segments seront horizontaux.
 
a partir de la, c'est pas trop dur de tracer les differents segments....heureusement que c'est une droite :D
 
mais bon, y a d'autres methodes, sans s'embeter avec le coef directeur bien sur...mais c'est peut etre moins facile ;)


voila c est a ce que je pensai en gros, je vais essayer ca et poster le code ici  [:alarmclock119]  
sinon pour allegro, justement je viens decouvrir ca, je lai downlaoder il me demande d utiliser "djgg" ou un truc comme ca pour compiler, bref j ai pas reussi a men servir avec devc++
(mailing list  :whistle: )
 

n°510668
xiluoc
un pc pour les unirs ....
Posté le 09-09-2003 à 08:26:17  profilanswer
 

Code :
  1. #ifndef GEOMETRY_DOS_LIGNE_H
  2. #define GEOMETRY_DOS_LIGNE_H
  3. #include "GEOMETRY_DOS_POINT.h"
  4. class ligne
  5. {
  6.     public :
  7.    
  8.         ligne(point x, point y, int cl, char ch);
  9.         void draw_ligne();
  10.        
  11.     private :
  12.    
  13.          point a;
  14.          point b;
  15.          int ligne_color;
  16.          char ligne_caracter;
  17.        
  18. };
  19. #endif


 

Code :
  1. #include "GEOMETRY_DOS_LIGNE.H"
  2. #include "GEOMETRY_DOS_POINT.h"
  3. #include <iostream>
  4. using namespace std;
  5. ligne::ligne(point x, point y, int cl, char ch)
  6. {
  7.     ligne_color = cl;
  8.     ligne_caracter = ch;
  9.     a = x;
  10.     b = y;
  11. }
  12. void ligne::draw_ligne()
  13. float coef = (float(b.yval())- a.yval()) / (b.xval() - a.xval());
  14. if (coef == 1)
  15. {
  16.     point x(a.xval(),a.yval());
  17.    
  18.     for (int i=0; i<(b.xval() - a.xval());i++)
  19.     {
  20.         x.draw(ligne_caracter);
  21.         x.translate(1,1);
  22.     } 
  23. }
  24. }


 
bon la diagonale ca marche  :D


Message édité par xiluoc le 09-09-2003 à 08:27:05

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Tracer une ligne entre deux point en mode console

 

Sujets relatifs
[VBa - Exel] Récupération du n° de la ligne d'une donnée saisieClearScreen sous un prog console
console mySQLExcel Duplication d'une ligne avec ses contrôles
[ASP] Erreur de syntaxe dans une ligne...[Power Point] Afficher un chrono ?
[TurboC] Combinaison mode texte/mode graphiqueligne d'en-tête fixe
Petit probleme avec le "DOS" de la console de recup XP[don] system simple et fiable de don en ligne ?
Plus de sujets relatifs à : Tracer une ligne entre deux point en mode console


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR