Código escrito en C++, se crea el efecto de Marquesina desplazándose de izquierda a derecha y viceversa.
#include <iostream>
#include <conio>
#include <windows>
#include <stdio>
main ()
{
int a=0, b=56, c=0, n=0;
char t[25] ="Bienvenido a Borland C++";
do
{
for (a=1;a<=56;a++)
{
clrscr ();
gotoxy(a,1);
cout<<t;
Sleep (50);
}
for (b=56;b>=1;b--)
{
clrscr ();
gotoxy(b,1);
cout<<t;
Sleep (50);
}
}while (c=1);
getch ();
}
Alguien que me pueda ayudar a traducir este mismo codigo y con el mismo efecto pero en codigo C para usarlo en el programa Dev C++ lo necesito para un proyecto, se lo agradecería mucho
MOD EDIT: Titulo y codigo modificado.
Si no me equivoco Dev-C++ tiene conio.h así que si modificas las lineas
cout<<t
por
printf("%s", t);
debe funcionar.
Gracias MAFUS si me sirvio!
me quedo de esta forma:
#include <conio.c>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main ()
{
char banner[]={"Este es un ejemplo de banner"};
unsigned short derecha, izquierda, repite, longitud;
longitud=strlen(banner);
for (repite=1; repite<=3; repite++)
{
for (derecha=1; derecha<=longitud; derecha++)
{
gotoxy(derecha,1);
printf("\b ");
printf("%s",banner);
usleep(100000);
}
for (izquierda=longitud; izquierda>=1; izquierda--)
{
printf("\b ");
gotoxy(izquierda,1);
printf("%s",banner);
usleep(100000);
}
}
return 0;
}
ya se deplaza de izquierda a derecha las tres veces que quiero pero ahora solo me falta una cosa por ejemplo cuando empieza desplazandose de izquierda a derecha y topa en la derecha debe salir como si estuviera escondiendose y luego entrar de derecha a izquierda y hacer lo mismo y viceversa pero no se como hacer eso
Debes saber cuantas columnas tiene esa consola y eso no es estandar que yo sepa.
salvo que esté muy errado las consolas tienen un máximo de 80 y cuando lo pasas con printf se imprime en la fila siguiente, asi que vas a la derecha y cuando el último caracter llega a 80 debe ser borrado (por ejemplo) y así con todos.
Debes tener en cuenta dos casos diferentes. Cuándo estés al principio de tu marquesina y cuándo te encuentres en el final.
Como sabrás cuándo le des una cadena a printf, éste se pone a escribir lo que le des hasta que encuentre un carácter de fin de cadena '\0', así si tienes la cadena ABCDEF
printf("%s", cadena+0);
obtienes ABCDEF
en cambio, si escribes
printf("%s", cadena+3);
obtienes DEF. Recuerda que cadena es un puntero y puedes usar la aritmética de punteros.
Esto te sirve para el inicio de la marquesina.
Ahora para el final de la marquesina printf tiene unos especificadores de formato que te pueden ser útiles, como el de precisión, que no solo funcionan con los números.
Si tienes la anterior cadena ABCDEF y te interesa solo coger los tres primeros caracteres puedes usar
printf("%.3s", cadena);
y obtienes ABC
Ese 3 es literal y no hay forma de cambiarlo a no ser que cambies la cadena de formato. Pero los diseñadores de printf, que son muy listos, han hecho posible que nosotros, los pobres usuarios, tengamos una forma de escribir cuántos caracteres queremos. Mediante el carácter * podemos usar un argumento de printf para dar un tamaño.
Si escribimos printf así
printf("%.*s", tam, cadena);
Si tam=3 entonces obtenemos CAD.