blackhelp!

Ayuda programadores
16 de Enero del 2004
Hay un error lógico en este programa que se encuentra cuando el gusano comienza a desplazarse; y este se come un caractér.
Me pueden ayudar por favor a resolverlo. Si quieren correrlo esta hecho en c++.
Apenas comienzo así que no esperen la gran cosa.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <dos.h>

int a,b,comida[78*50],gusano[78*50];

class sys
{
public:
void marco();
void poner_comida();
};

void sys::marco()
{
int a;

textcolor(7);
gotoxy(1,1); cprintf("É");
gotoxy(1,50); cprintf("È");
gotoxy(78,1); cprintf("»");
gotoxy(78,50); cprintf("¼");

for(a=2;a<=77;a++)
{
gotoxy(a,1); cprintf("Í");
gotoxy(a,50); cprintf("Í");

if(a<=49) { gotoxy(1,a); cprintf("º"); gotoxy(78,a); cprintf("º"); }
}

textcolor(3); gotoxy(2,2); cprintf("Û");
}

void sys::poner_comida()
{
comida[a,b]=0;
randomize();
a=random(78);
b=random(50);

if(a<=1) { a++; }
if(b<=1) { b++; }
if(a>=77) { a--; }
if(b>=77) { b--; }

comida[a,b]=1;
textcolor(10); gotoxy(a,b); cprintf("O");
}

void main(void)
{
int c,x=2,y=2,xf=2,yf=2,largo=1;
char tecla;

sys gus;
clrscr();
gus.marco();
gus.poner_comida();

for(;;)
{
if(kbhit()) { tecla=getch(); }

if((x>1 && x<78) && (y>1 && y<50))
{
switch(tecla)
{
case \'j\':
delay(85);
x--;




xf--;

for(c=0;c<=(largo-1);c++)
{
textcolor(3); gotoxy((x-c),y); cprintf("Û");
}

gusano[xf+largo,yf]=0;
textcolor(0); gotoxy(xf+largo,yf); cprintf("Û");
break;

case \'k\':
delay(85);
y++;
yf++;

for(c=0;c<=(largo-1);c++)
{
textcolor(3); gotoxy(x,(y+c)); cprintf("Û");
}

gusano[xf,yf-largo]=0;
textcolor(0); gotoxy(xf,yf-largo); cprintf("Û");
break;

case \'l\':
delay(85);
x++;
xf++;

for(c=0;c<=(largo-1);c++)
{
textcolor(3); gotoxy((x-c),y); cprintf("Û");
}

gusano[xf-largo,yf]=0;
textcolor(0); gotoxy(xf-largo,yf); cprintf("Û");
break;

case \'i\':
delay(85);
y--;
yf--;

for(c=0;c<=(largo-1);c++)
{
textcolor(3); gotoxy(x,(y-c)); cprintf("Û");
}

gusano[xf,yf+largo]=0;
textcolor(0); gotoxy(xf,yf+largo); cprintf("Û");
break;
}//switch

gusano[x,y]=1;

if(gusano[x,y]==comida[a,b])
{
largo++; gus.poner_comida();
}

}//if
else { goto salir; }
}//for

salir:
}