C/Visual C - movimiento de la serpiente.

 
Vista:

movimiento de la serpiente.

Publicado por pincho00 (3 intervenciones) el 11/03/2005 18:43:07
Hola.
Estoy haciendo el famoso juego de la serpiente en c++, y el codigo que tengo hecho solo me mueve la cabeza y el primer cuerpo, el resto lo deja en el mismo sitio. El codigo que he creado es el siguiente:

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

class gusano
{
struct
{
int fila;
int columna;
}cuerpo[10],aux;

int tamano;
int color_cabeza;
int color_cuerpo;
int arriba;
int abajo;
int izquierda;
int derecha;

void mover_arriba()
{
desplazar_cuerpo();
if (cuerpo[0].fila>1)
cuerpo[0].fila--;
else cuerpo[0].fila=25;
pintar();
}

void mover_abajo()
{
desplazar_cuerpo();
if (cuerpo[0].fila<25)
cuerpo[0].fila++;
else cuerpo[0].fila=1;
pintar();
}

void mover_izquierda()
{
desplazar_cuerpo();
if (cuerpo[0].columna>1)
cuerpo[0].columna--;
else cuerpo[0].columna=79;
pintar();
}

void mover_derecha()
{
desplazar_cuerpo();
if (cuerpo[0].columna<79)
cuerpo[0].columna++;
else cuerpo[0].columna=1;
pintar();
}

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:movimiento de la serpiente2.

Publicado por pincho00 (3 intervenciones) el 11/03/2005 18:45:53
void pintar() /*PINTAR CABEZA Y PINTAR EL CUERPO*/
{
gotoxy(cuerpo[0].columna,cuerpo[0].fila);
textcolor(color_cabeza);
cprintf("%c",2);
int i;
gotoxy(cuerpo[5].columna,cuerpo[5].fila);
cprintf(" ");

for (i=1;i<tamano;i++)
{
gotoxy(cuerpo[i].columna,cuerpo[i].fila);
textcolor(color_cuerpo);
cprintf("%c",'#');
}
}

void desplazar_cuerpo() /*DESPLAZAR CUEPO DE LA SERPIENTE*/
{
int i;
gotoxy(cuerpo[5].columna,cuerpo[5].fila);
cprintf(" ");

for (i=1;i<6;i++)
{
cuerpo[i].columna=cuerpo[i-1].columna;
cuerpo[i].fila=cuerpo[i-1].fila;

}
}

public:

//CONSTRUCTOR CON PARAMETROS

gusano(int _fila,int _columna,int _tamano,int _color_cabeza,int _color_cuerpo,int _arriba,int _abajo,int _izquierda,int _derecha)
{
cuerpo[0].fila=_fila;
cuerpo[0].columna=_columna;
int i;
for (i=0;i<tamano;i++)
{
cuerpo[i].fila=cuerpo[0].fila;
cuerpo[i].columna=cuerpo[0].columna-i;
}
tamano=_tamano;
color_cabeza=_color_cabeza;
color_cuerpo=_color_cuerpo;
arriba=_arriba;
abajo=_abajo;
izquierda=_izquierda;
derecha=_derecha;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:movimiento de la serpiente3.

Publicado por pincho00 (3 intervenciones) el 11/03/2005 18:46:25
void controla(int tecla)
{

pintar();
if (tecla==arriba)
{
mover_arriba();
}
else if (tecla==abajo)
{
mover_abajo();
}
else if (tecla==izquierda)
{
mover_izquierda();
}
else if (tecla==derecha)
mover_derecha();
}

};

main()
{

gusano juan(10,10,6,RED,LIGHTGREEN,'w','s','a','d');

int tecla1;

do
{
tecla1=getch();
juan.controla(tecla1);
}while(tecla1!=27);

}

Supongo que el error estara en la funcion desplazar_cuerpo, pero no consiguo averiguarlo, si a alguien se le ocurre algo que no dude en escribir.
Un saludo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar