4
« en: Sábado 7 de Julio de 2007, 02:15 »
necesito ayuda con mi codigo para q tenga un efecto de marquesina , el programa solo mueve el texto pero al llegar a las esquinas se salta de linea y nose como arreglarlo.
*********************************
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <dos.h>
#include <bios.h>
#define ESC 0x11b
int opcion,indice,espacio1,largo;
char arreglo[5][80];
int letra[5][5][5]=
{{{0,1,1,1,0},{1,0,0,0,1},{1,1,1,1,1},{1,0,0,0,1},{1,0,0,0,1}}, //A
{{1,0,0,0,1},{1,0,0,0,1},{1,1,1,1,1},{1,0,0,0,1},{1,0,0,0,1}}, //H
{{1,0,0,0,0},{1,0,0,0,0},{1,0,0,0,0},{1,0,0,0,0},{1,1,1,1,1}}, //L
{{1,1,1,1,1},{1,0,0,0,1},{1,0,0,0,1},{1,0,0,0,1},{1,1,1,1,1}}}; //O
char abc[5]={'a','h','l','o'};
// FUNCIONES
void tam1(int esp, int ind);
void busca(char frase1[]);
void markesina( char frase[5][80]);
//******************************
int main()
{
char frase[5]={'h','o','l','a'};
textcolor(GREEN);
largo=strlen(frase);
busca(frase);
markesina(arreglo);
return 0;
}
void busca(char frase1[])
{
espacio1=0;
int conta1=0,conta2=0;
for(conta1=0;conta1<=largo ;conta1++)
{ espacio1=espacio1+6;
for( conta2=0;conta2 < 5;conta2++)
{
if (frase1[conta1] == abc[conta2])
{ indice=conta2;
tam1(espacio1,indice); }
}
}
}
void tam1(int esp,int ind) // aka lo guardo en un arreglo
{
int fil,col,i,j;
for ( fil=0, i=5; i <=9; i++,fil++ )
{
for ( col=0,j=5; j <=9; j++,col++ )
{
if (letra[ind][fil][col] == 0)
{ arreglo[fil][col+esp-6]=' '; }
else
{ arreglo[fil][col+esp-6]='*'; }
}
}
}
void markesina( char frase[5][80])
{
int xz=0,dr=0;
int a=79;
int tecla=0;
clrscr();
do
{ if(kbhit())
{ tecla=bioskey(0);
}
for (xz=0;xz<=4;xz++)
{
for (dr=0;dr<=79;dr++)
{
gotoxy(a+dr,xz+5); cprintf("%c", frase[xz][dr]);
}
}
delay(150);
a--;
if(a==1) {a=79; clrscr();}
}
while(tecla != ESC);
}