El codigo no esta acabado y quedan muchas cosas por hacer, el problema salta en la linea 61, si quito el kbhit compila bien
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ncurses.h>
#include <unistd.h> /*sleep*/
#include "kbhit.h"
#define F 20
#define C 20
char fondo [F][C];
char serpiente[F*C][F*C];
int contador = 0;
int a,b;/*comida*/
int x=2,y=2;/*movimiento*/
void imprime (char matriz[F][C]);
void iniciar_matriz (char matriz[F][C]);
void movimiento ();
void comida();
int main()
{
initscr();
nodelay(stdscr,TRUE);
erase();
iniciar_matriz(fondo);
comida();
movimiento();
getch();
endwin();
return 0;
}
void movimiento ()
{
char c='q',d;/*por ejemplo q*/
while (c!='x')
{
if((x==a)&&(y==b)){ contador++; comida();} /*para comer*/
fondo
imprime(fondo);
fondo
d=c;
if(kbhit()){c=getch();}
if(c=='x'){break;}
if(c=='w'){x=x-1;}
if(c=='a'){y=y-1;}
if(c=='s'){x=x+1;}
if(c=='d'){y=y+1;}
if(x<0){x=F-1;} /*si pongo F va a /0*/
if(y<0){y=C-1;}
if(x>(F-1)){x=0;}
if(y>(C-1)){y=0;}
sleep(1);
c=d;
}
}
void iniciar_matriz (char matriz[F][C])
{
int i, j;
for (i=0;i<F;i++)
{
for (j=0;j<C;j++)
{
fondo
[j]=' ';
}
}
}
void imprime (char matriz[F][C])
{
erase();
int i,j;
for(i=0;i<(C+2);i++){printw("_ ");}/*arriba*/
printw("\n");
for (i=0;i<F;i++)
{
printw("|");/*izquierda*/
for (j=0;j<C;j++)
{
printw("%c ",matriz[j]);
}
printw(" |\n");/*derecha*/
}
for(i=0;i<(C+2);i++){printw("_ ");}/*abajo*/
printw("\n");
printw("%d \n",contador);
}
void comida()
{
a=(rand() % F); /*parentesis para ver si para de salirse*/
b=(rand() % C);
fondo[a]='@';
imprime(fondo);
}