Compilador
O software gerado por esse tutorial pode ser compilado a partir do Dev-C++ ou similares.Base do código
Digitar o códigoint main(void){
	return 0;
}Desenhar caracteres na tela
Incluir#include<stdio.h>Incluir
printf("%c",1);Se compilar e executar ainda não dá para ver nada porque o programa executa e fecha muito rápido.
Vamos por uma pausa:
#include<conio.h>getch();Caracter posição meio da tela
Para desenhar no meio da tela é preciso incluir a biblioteca windows.hE antes do printf:
COORD p={10,10};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);Eu acho que esse código que permite colocar texto no meio da tela merece ser difundido.
void mgotoxy(int x,int y){
	COORD p={x,y};
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
}
#include<windows.h>
#include<stdio.h>
#include<conio.h>
void mgotoxy(int x,int y){
	COORD p={x,y};
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
}
int main(void){
	mgotoxy(7,7);
	printf("%c",1);
	getch();
	return 0;
}
Paredes do jogo
Vamos declarar uma variavel int x e usar um 'for' para desenhar cada uma das quatro paredesint x;
for(x=0;x<18;x++){
	mgotoxy(0,x);
	printf("%c",219);
}
for(x=0;x<26;x++){
	mgotoxy(x,0);
	printf("%c",219);
}
for(x=0;x<18;x++){
	mgotoxy(26,x);
	printf("%c",219);
}
for(x=0;x<27;x++){
	mgotoxy(x,18);
	printf("%c",219);
}Movimentando letras no prompt
for(x=2;x<26;x++){
	mgotoxy(x-1,8);
	printf(" ");
	mgotoxy(x,8);
	printf("%c",219);
	Sleep(200);
}
Dirigindo o objeto
Vamos dar direção a esse ponto, de acordo com o tecladoVamos declarar uma variavel int 'direcao'
Se direcao==0 entao o ponto se move para a esquerda
Se direcao==1 entao o ponto se move para a cima
Se direcao==2 entao o ponto se move para a direita
Se direcao==3 entao o ponto se move para a baixo
vamos inicializar com 2
Vamos criar as variaveis int cx e cy que vão armazenar a coordenada do ponto
Vamos criar uma variavel char tecla
E vamos substituir aquele for por dois while. Na condição do segundo while vamos usar a função kbhit()
#include<windows.h>
#include<stdio.h>
#include<conio.h>
void mgotoxy(int x,int y){
	COORD p={x,y};
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
}
int main(void){
	int x,direcao=2,cx=0,cy=7;
	char tecla='a';
	for(x=0;x<18;x++){
		mgotoxy(0,x);
		printf("%c",219);
	}
	for(x=0;x<26;x++){
		mgotoxy(x,0);
		printf("%c",219);
	}
	for(x=0;x<18;x++){
		mgotoxy(26,x);
		printf("%c",219);
	}
	for(x=0;x<27;x++){
		mgotoxy(x,18);
		printf("%c",219);
	}
	while(tecla!='s'){
		while(tecla!='s'&&!(tecla=kbhit())){
			if(direcao==0)cx--;
			if(direcao==1)cy--;
			if(direcao==2)cx++;
			if(direcao==3)cy++;
			mgotoxy(cx,cy);
			printf("%c",219);
			Sleep(200);
			if(cy==0||cy==18||cx==0||cx==26)tecla='s';
		}
		if(tecla!='s')tecla=getch();
		if(tecla=='K')direcao=0;
		if(tecla=='H')direcao=1;
		if(tecla=='M')direcao=2;
		if(tecla=='P')direcao=3;
		if(cy==0||cy==18||cx==0||cx==26)tecla='s';
	}
	getch();
	return 0;
}Apagar o rastro da cobra
Vamos transformar cx e cy em arrays, assim agente pinta o primeiro elemento e apaga o ultimo.Vamos criar uma variavel int tamanho que armazena o tamanho da cobra, pra podermos apagar o fim da cobra qdo ela andar
#include<windows.h>
#include<stdio.h>
#include<conio.h>
void mgotoxy(int x,int y){
	COORD p={x,y};
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
}
int main(void){
	int x,direcao=2,cx[300]={1,2},cy[300]={7,7},tamanho=1;
	char tecla='a';
	for(x=0;x<18;x++){
		mgotoxy(0,x);
		printf("%c",219);
	}
	for(x=0;x<26;x++){
		mgotoxy(x,0);
		printf("%c",219);
	}
	for(x=0;x<18;x++){
		mgotoxy(26,x);
		printf("%c",219);
	}
	for(x=0;x<27;x++){
		mgotoxy(x,18);
		printf("%c",219);
	}
	while(tecla!='s'){
		while(tecla!='s'&&!(tecla=kbhit())){
			for(x=tamanho;x>0;x--){
				cx[x]=cx[x-1];
				cy[x]=cy[x-1];
			}
			if(direcao==0)cx[0]--;
			if(direcao==1)cy[0]--;
			if(direcao==2)cx[0]++;
			if(direcao==3)cy[0]++;
			mgotoxy(cx[tamanho],cy[tamanho]);
			printf(" ");
			mgotoxy(cx[0],cy[0]);
			printf("%c",219);
			Sleep(200);
			if(cy[0]==0||cy[0]==18||cx[0]==0||cx[0]==26)tecla='s';
		}
		if(tecla!='s')tecla=getch();
		if(tecla=='K')direcao=0;
		if(tecla=='H')direcao=1;
		if(tecla=='M')direcao=2;
		if(tecla=='P')direcao=3;
		if(cy[0]==0||cy[0]==18||cx[0]==0||cx[0]==26)tecla='s';
	}
	getch();
	return 0;
}A maçã
Vamos declarar duas variaveis int macax e macay que armazenam a coordenada da maçã no planoÉ preciso incluir as bibliotecas iostream e a time.h
#include<time.h>
#include<iostream>	srand(time(NULL));
	macax=(rand()%25)+1;
	macay=(rand()%17)+1;
mgotoxy(macax,macay);
printf("%c",1);
Deglutindo
Quando a cobra passa sobre a maçã ela deve aumentar de tamanho e outra maçã deve ser geradaEntre as linhas que apagam o fim da cobra e as linhas que desenham a ponta, Digite:
if(macax==cx[0]&macay==cy[0]){
	tamanho++;
	macax=(rand()%25)+1;
	macay=(rand()%17)+1;
}
Game Over
Só falta fazer o fim do jogo:Se a ponta da cobra estiver sobre ela mesma o jogo acaba
for(x=1;x<tamanho;x++){
	if(cx[0]==cx[x]&cy[0]==cy[x])tecla='s';
}
Código Fonte
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
//#include<stdlib.h>
#include<iostream>
void mgotoxy(int x,int y){
	COORD p={x,y};
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
}
int main(void){
	int x,direcao=2,cx[300]={1,2},cy[300]={7,7},tamanho=1,macax,macay;
	char tecla='a';
	//system("MODE con cols=27 lines=20");
	for(x=0;x<18;x++){
		mgotoxy(0,x);
		printf("%c",219);
	}
	for(x=0;x<26;x++){
		mgotoxy(x,0);
		printf("%c",219);
	}
	for(x=0;x<18;x++){
		mgotoxy(26,x);
		printf("%c",219);
	}
	for(x=0;x<27;x++){
		mgotoxy(x,18);
		printf("%c",219);
	}
	srand(time(NULL));
	macax=(rand()%25)+1;
	macay=(rand()%17)+1;
	while(tecla!='s'){
		while(tecla!='s'&&!(tecla=kbhit())){
			for(x=tamanho;x>0;x--){
				cx[x]=cx[x-1];
				cy[x]=cy[x-1];
			}
			if(direcao==0)cx[0]--;
			if(direcao==1)cy[0]--;
			if(direcao==2)cx[0]++;
			if(direcao==3)cy[0]++;
			mgotoxy(cx[tamanho],cy[tamanho]);
			printf(" ");
			if(macax==cx[0]&macay==cy[0]){
				tamanho++;
				macax=(rand()%25)+1;
				macay=(rand()%17)+1;
			}
			mgotoxy(cx[0],cy[0]);
			printf("%c",219);
			mgotoxy(macax,macay);
			printf("%c",1);
			Sleep(200);
			for(x=1;x<tamanho;x++){
				if(cx[0]==cx[x]&cy[0]==cy[x])tecla='s';
			}
			if(cy[0]==0||cy[0]==18||cx[0]==0||cx[0]==26)tecla='s';
		}
		if(tecla!='s')tecla=getch();
		if(tecla=='K')direcao=0;
		if(tecla=='H')direcao=1;
		if(tecla=='M')direcao=2;
		if(tecla=='P')direcao=3;
		if(cy[0]==0||cy[0]==18||cx[0]==0||cx[0]==26)tecla='s';
	}
	getch();
	return 0;
}