Bouger le curseur en mode texte, plus de probleme grace a djl, merci !!!

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 730 fois - Téléchargée 32 fois

Contenu du snippet

Simple déplacement de texte dans la fenetre de commande MS-DOS par exemple.

Source / Exemple :


#include <iostream.h>
#include <conio.h>

struct coordonnees
{
int x;
int y;
};

unsigned int touche=80;

coordonnees bouger(unsigned int, coordonnees);
void afficher(coordonnees);

int main(void)
{
coordonnees objet={20,24};

while (touche!=13)
{
objet=bouger(touche,objet);
afficher(objet);
touche=getch();
}

return 0;
}

coordonnees bouger(unsigned int t, coordonnees o)
{
switch(t)
	{
   case 77 : if(o.x<80) o.x++; else o.x=1; break;
   case 75 : if(o.x>1) o.x--; else o.x=80; break;
   case 72 : if(o.y>1) o.y--; else o.y=25; break;
   case 80 : if(o.y<25) o.y++; else o.y=1; break;
   default : break;
   }

return o;
}

void afficher(coordonnees o)
{
if (touche==77) {if (o.x>1) {gotoxy(o.x-1,o.y); cout<<" ";} else {gotoxy(80,o.y); cout<<" ";} gotoxy(o.x,o.y); cout<<"X";}
else if (touche==75) {if (o.x<80) {gotoxy(o.x+1,o.y); cout<<" ";} else {gotoxy(1,o.y); cout<<" ";} gotoxy(o.x,o.y); cout<<"X";}
else if (touche==72) {if (o.y<25) {gotoxy(o.x,o.y+1); cout<<" ";} else {gotoxy(o.x,1); cout<<" ";} gotoxy(o.x,o.y); cout<<"X";}
else if (touche==80) {if (o.y>1) {gotoxy(o.x,o.y-1); cout<<" ";} else {gotoxy(o.x,25); cout<<" ";} gotoxy(o.x,o.y); cout<<"X";}
}

Conclusion :


Compilé sous borland C++ 5.02

A voir également

Ajouter un commentaire Commentaires
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
merci c cool pour le serpent, d'ailleur g vien de mettre une maj qui permet de choisir le type de terrain et meme de l'editer!
pour ton bug avec la fonction info() g pense que si tu rajoute
gotoxy(0,H+2); au debut de la fonction, ca devrait aller
a+
Messages postés
55
Date d'inscription
mardi 16 septembre 2003
Statut
Membre
Dernière intervention
4 août 2008

Djl, t'es le meilleur !!!!
Ca marche niquel maintenant, je vais changer mon code source en ligne :)
Au fait, j'ai regardé ton code source pour ton jeu de serpent, il est pas mal dis donc... Je vais essayer d'en faire un aussi, la, c'est un petit début pour moi, mais je vais doucement, à mon rythme...
J'ai adoré le truc que tu peux paramètrer tout le jeu, depuis les commandes de jeu, en passant par le niveau et le terrain... Super, encore bravo.
Cependant, sous borland y'a un petit probleme avec ta fonction info je crois, car lorsque je la met en commentaire, ça marche niquel. Sans cette précaution, le temps du jeu est écrit sur le terrain, et c'est un peu genant. Mais rien de grave. Bonne continuation à toi.
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
en fait l'erreur vient du getche() (en fait ca me faisait pas l'erreur car g l'ai compile sous vc++ et g instinctivement remplacer getche() par getch() )
la difference entre getche() et getch() c'est que getche() renvoie l'echo du caracter taper a l'ecran! d'ou les caracters en trop!!!
donc ta juste a remplacer getche() par getch() et ca marchera nikel
Messages postés
55
Date d'inscription
mardi 16 septembre 2003
Statut
Membre
Dernière intervention
4 août 2008

Voila djl, j'ai ajouté le screen de ma source et modifié celle-ci.
Mon probleme concerne les "H" qui s'ajoutent lorsque je monte, les "K" lorsque je tourne à gauche et les "P" lorsque je descend (je crois que c'est dans cet ordre), je n'ai rien vu d'anormal lorsque je choisi d'aller vers la droite!!!
Merci pour m'avoir éclairé sur le cout.flush();
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ca sert a vider le tampon de sortie (comme endl)
par contre c bien cout.flush() qu'il faut ecrire

>moi ca me fait pas d'erreur, tu pourrait joindre a ta source un screen de ton erreur pour voir precisement de quoi il s'agit?
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.