Ayuda --- ! marquesina en c++ a c ! --- ayuda

Iniciado por EduardoSaenz, 8 Mayo 2016, 21:52 PM

0 Miembros y 1 Visitante están viendo este tema.

EduardoSaenz

Código escrito en C++, se crea el efecto de Marquesina desplazándose de izquierda a derecha y viceversa.

Código (cpp) [Seleccionar]
#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.

MAFUS

Si no me equivoco Dev-C++ tiene conio.h así que si modificas las lineas
cout<<t
por
printf("%s", t);
debe funcionar.

EduardoSaenz

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

HardForo

Debes saber cuantas columnas tiene esa consola y eso no es estandar que yo sepa.
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

tincopasan

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. 

MAFUS

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.