Need feedback for C++ Snake Game

Hello guys, im desperate, I dont know how these kind of errors are even fair:

Line 114 a function definition is not allowed here before ‘}’ token
Line 124 a function definition is not allowed here before ‘}’ token
Line 129 a function definition is not allowed here before ‘}’ token
Line 152 expected ‘}’ at end of input

I put the error lines in bold with a triple $$$

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

#define ARRIBA 72
#define IZQUIERDA 78
#define DERECHA 77
#define ABAJO 80
#define ESC 27

int cuerpo [200] [2];
int n = 1;
int tam = 4;
int x = 10, y = 12;
int dir = 7;
int xc = 30, yc = 15;

char tecla;

void gotoxy (int x, int y)
{
HANDLE hCon;
COORD dwPos;

dwPos.X = x;
dwPos.Y = y,
hCon = GetStdHandle (STD_OUTPUT_HANDLE);
SetConsoleCursorPosition (hCon, dwPos);

}

void pintar()
{
// lineas horizontales
for (int i = 2 ; i < 78 ; i++)
{
gotoxy (i,3); printf("%c", 205);
gotoxy (i,23); printf("%c", 205);

}
// lineas verticales
for (int i = 4 ; i < 23 ; i++)
  {
  	gotoxy  (2,i); printf("%c",186);
  	gotoxy (77,i); printf("%c",186);
  	 
}
// esquinas
{
  	gotoxy  (2,3); printf("%c", 201);
  	gotoxy (2,23); printf("%c", 200);
	gotoxy  (77,3); printf("%c", 287);
  	gotoxy (77,23); printf("%c", 188);	  
}

}

void guardar_posicion()
{
cuerpo[n][0] = x;
cuerpo[n][1] = y;
n++;
if (n == tam) n = 1;
}

void dibujar_cuerpo()
{
for (int i = 1 ; i < tam ; i++)
{
gotoxy(cuerpo[i][0], cuerpo[i][1] ); printf("*");
}
}

void borrar_cuerpo()
{

	gotoxy (cuerpo[n][0], cuerpo [n][1] ); printf(" ");

}

void teclear()
{

	if (kbhit())
	{
		tecla = getch ();
		switch (tecla)
		 {
			case ARRIBA :
				if (dir != 2)
				dir = 1;
				break;
			case ABAJO :
				if (dir != 1)
			 	dir = 2;
				 break;	
			case DERECHA :
				if (dir != 4)
				dir = 3;
				break;
			case IZQUIERDA :
			 	if (dir != 3)
				 dir = 4;
				 break;	
		 }	

}

void comida()
$$${
if (x == xc && y == yc)
xc = (rand()%73) + 4;
yc = (rand()%19) + 4;

tam ++;
gotoxy(xc. yc); printf("%c", 4); 

}

bool game_over()
$$${
if (y == 3 || y == 23 || x == 2 || x = 77) return true;
return false;
}

$$$int main () {

pintar ();
gotoxy(xc. yc); printf("%c", 4); 

while(tecla != ESC || !game_over())
  {
  	teclear()
	borrar_cuerpo();
	guardar_posicion();
	dibujar_cuerpo();	
	comida ();
	 }
  
 if (dir == 1) y--;
  if (dir == 2) y++;
  if (dir == 3) x++;
  if (dir == 4) x--;

Sleep(100);

system ("pause>null");
return 0;

$$$}