Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ana Fontoura

Programa que movimenta uma string na tela

Recommended Posts

Olá...estou tendo problemas para fazer esse programa, onde o usuario tem que informar uma frase com no max 30 caracteres, e para movimentar a frase na tela pode-se usar: p ou seta para cima para imprimir uma linha acima, m ou seta para baixo para imprimir uma linha abaixo de onde estava, j ou seta para esquerda para imprimir para esquerda, k ou seta para direita para imprimir para a direita..mas quando aperto seta para cima ou para esquerda ele nao vai, assim como o p e o j...Obrigada!

 

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

class Teclas
{
	private:
		int pos_x, pos_y, tam;
		char str[31], str2[31];
	public:
		Teclas();
		void movimento(int n);	// n pode ser 1, 2, 3 ou 4, subir, descer, esquerda e direita respectivamente
};

Teclas::Teclas()
{
	cout << "\Informe uma frase (tamanho max 30):\n";
	gets(str);
	tam=strlen(str);
	pos_x=40-(tam/2);
	pos_y=12;
	strcpy(str2, "                              ");
}

void Teclas::movimento(int n)
{
	switch(n)
	{
		case 1:	// para cima
			gotoxy(pos_x,pos_y);
			cout << str2;
			pos_y--;
			gotoxy(pos_x,pos_y);
			cout << str;
		case 2:	// para baixo
			gotoxy(pos_x,pos_y);
			cout << str2;
			pos_y++;
			gotoxy(pos_x,pos_y);
			cout << str;
		case 3: // para esquerda
			gotoxy(pos_x,pos_y);
			cout << str2;
			pos_x--;
			gotoxy(pos_x,pos_y);
			cout << str;
		case 4:	// para direita
			gotoxy(pos_x,pos_y);
			cout << str2;
			pos_x++;
			gotoxy(pos_x,pos_y);
			cout << str;
	}
}

void main (void)
{
	char ch1='\0', ch2='\0';
	clrscr();
	Teclas t;
	while(ch1!=120)
	{
		if(kbhit())
		{
			ch1=getch();
			if(ch1==0)
			{
				ch2=getch();
				if(ch2==72)	// seta para cima
					t.movimento(1);
				else
				{
					if(ch2==80)	// seta para baixo
						t.movimento(2);
					else
					{
						if(ch2==75)	// seta para esquerda
							t.movimento(3);
						else
						{
							if(ch2==77)	// seta para direita
								t.movimento(4);
						}
					}
				}
			}
			else
			{
				if(ch1==112)	// tecla p
					t.movimento(1);
				else
				{
					if(ch1==109)	// tecla m
						t.movimento(2);
					else
					{
						if(ch1==106)	// tecla j
							t.movimento(3);
						else
						{
							if(ch1==107)	// tecla k
								t.movimento(4);
						}
					}
				}
			}
		}
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

use pcCurses se estiver em Windows, ou nCurses em um Unix.

 

E outra coisa...

if (a == B)
     //... code ....
else if ( a == c)
    //... code ....
else
    //... code ....

 

é igual a:

if (a == B)
    //... code ....
else
{
    if (a == c)
        //... code ....
    else
        //.... code ...
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.