Olá pessoal…
Hoje vou mostrar um jogo que desenvolvi, que na verdade é apenas de pintar ou despintar (preencher ou limpar) uma posição do terminal.
Primeiramente ao abrir o jogo, é mostrado a tela principal, sendo necessário apertar o -Enter- para prosseguir.
Em seguida, a tela do jogo, onde as setas mexem a posição, o -Espaço- define se irá pintar ou despintar (preencher com #, ou limpar com espaço em branco), e o -Enter- finaliza o jogo.
Ao apertar o -Enter- é mostrado os créditos do jogo.
O jogo foi pensado para ser rodado tanto no Windows como em distros Linux, para distros Linux é necessário ter a biblioteca gconio.h (saiba mais em Programação: GCC + GConio.h).
Abaixo um print rodando no Windows.
Abaixo o código completo.
/*================================================*
* Jogo - Pinta Pinta |
* Versao - 1.2 |
* Autor - Daniel Atilio |
*================================================*/
//Biblioteca
#include <stdio.h>
//Se o sistema for Windows, utiliza a conio e a limpeza é via cls
#ifdef WIN32
#include <conio.h>
#include <windows.h>
#define LIMPA_TELA system("cls");
int ENTER = 13;
int SETA_CIMA = 72;
int SETA_BAIXO = 80;
int SETA_DIREITA = 77;
int SETA_ESQUERDA = 75;
void gotoxy(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
//Se for Linux, utiliza a gconio e a limpeza fica o usr/bin/clear
#else
#include <gconio.h>
#define LIMPA_TELA system("/usr/bin/clear");
int ENTER = 10;
int SETA_CIMA = 65;
int SETA_BAIXO = 66;
int SETA_DIREITA = 67;
int SETA_ESQUERDA = 68;
#endif
//Espera 2 segundos
#define ESPERA sleep(2);
//Funções utilizadas
void pintaQuadro(); //função que desenha o quadro utilizado no programa
void titulo(); //função que desenha a tela de título
void traduz(char cChar); //função que traduz um caracter conforme tabela asciii
void limpar(); //função para limpar a tela
void ee(); //Easter Egg
//Variáveis utilizadas no fonte inteiro
int nLinFin = 23;
int nColFin = 43;
char sTexto[50] = "[Espaco]=(Des)Pinta [Enter]=Finalizar\0";
//programa principal
main(){
char cOpc = ' ';
char cCarac = '#';
char cCar1 = ' ', cCar2 = ' ', cCar3 = ' ', cCar4 = ' ', cCar5 = ' ', cCar6 = ' ';
int nLinAtu = 5;
int nColAtu = 5;
//montagem da tela de título
limpar();
titulo();
pintaQuadro();
gotoxy(2,nLinFin-1);
printf(" Pressione [ENTER] para iniciar...");
//Aguardando o usuário apertar o [Enter]
cOpc = getch();
while (cOpc != ENTER) {
cOpc = getch();
}
//Criação do quadro e posicionamento para começar o jogo
limpar();
cOpc = ' ';
pintaQuadro();
gotoxy(2, nLinFin-1);
printf("%s", sTexto);
gotoxy(nColAtu, nLinAtu);
//Enquanto não for pressionado [Enter]
while (cOpc != ENTER) {
//Pega a tecla digitada
cOpc = getch();
//Se for a tecla espaço, inverte o caracter, ou sustenido ou espaço em branco
if (cOpc == 32){
if (cCarac == '#')
cCarac = ' ';
else
cCarac = '#';
}
//Se for seta pra direita, aumenta a posição da coluna
if (cOpc == SETA_DIREITA)
nColAtu++;
//Se for seta para esquerda, diminui a posição da coluna
if (cOpc == SETA_ESQUERDA)
nColAtu--;
//Se for seta para cima, aumenta a posição da linha
if (cOpc == SETA_BAIXO)
nLinAtu++;
//Se for seta para baixo, diminui a posição da linha
if (cOpc == SETA_CIMA)
nLinAtu--;
//Se tiver na última coluna, não prossegue (para não estourar a tela)
if (nColAtu == nColFin)
nColAtu--;
//Se tiver na primeira coluna, não prossegue (para não estourar a tela)
if (nColAtu == 1)
nColAtu++;
//Se tiver na última linha, não prossegue (para não estourar a tela)
if (nLinAtu == nLinFin-3)
nLinAtu--;
//Se tiver na primeira linha, não prossegue (para não estourar a tela)
if (nLinAtu == 1)
nLinAtu++;
//Posicionando no fim da tela, e imprimindo a tecla apertada e a tradução conforme a tabela ASCII
gotoxy(3,nLinFin-2);
printf("[%4d] ",cOpc);
traduz(cOpc);
//Posicionando na linha atual e coluna atual e imprimindo o caracter (ou sustenido ou espaço em branco)
gotoxy(nColAtu, nLinAtu);
printf("%c",cCarac);
gotoxy(nColAtu, nLinAtu);
//Atualizando caracteres extras
cCar1 = cCar2;
cCar2 = cCar3;
cCar3 = cCar4;
cCar4 = cCar5;
cCar5 = cCar6;
cCar6 = cOpc;
//Se os caracteres formarem a palavra atilio, mostra um Easter Egg ao usuário
if (cCar1 == 'a' && cCar2 == 't' && cCar3 == 'i' && cCar4 == 'l' && cCar5 == 'i' && cCar6 == 'o'){
limpar();
cOpc = ' ';
cCar1 = ' ';
cCar2 = ' ';
cCar3 = ' ';
cCar4 = ' ';
cCar5 = ' ';
cCar6 = ' ';
pintaQuadro();
ee();
gotoxy(2,nLinFin-1);
printf("%s",sTexto);
gotoxy(nColAtu, nLinAtu);
}
}
//Limpando a tela, desenhando o quadro e imprimindo dados do projeto e espera o tempo pré estipulado
limpar();
pintaQuadro();
gotoxy(2,4);
printf(" ------------------");
gotoxy(2,6);
printf(" Desenvolvedor ......... Daniel Atilio");
gotoxy(2,nLinFin-6);
printf(" Pinta Pinta v1.2");
gotoxy(2,nLinFin-5);
printf(" 18/07/2016");
gotoxy(2,nLinFin-1);
printf(" Apertou o [Enter] ne safadao!\n\n");
ESPERA;
}
void pintaQuadro(){
int nAtu;
//percorrendo as colunas e imprimindo na tela
for (nAtu = 2; nAtu <= nColFin; nAtu++){
gotoxy(nAtu, 1);
printf("=");
gotoxy(nAtu, nLinFin);
printf("=");
gotoxy(nAtu, nLinFin-3);
printf("-");
}
//percorrendo as linhas e imprimindo na tela
for (nAtu = 2; nAtu <= nLinFin; nAtu++){
gotoxy(1, nAtu);
printf("|");
gotoxy(nColFin, nAtu);
printf("|");
}
//imprimindo os asteriscos
gotoxy(1,1);
printf("*");
gotoxy(nColFin, 1);
printf("*");
gotoxy(1, nLinFin);
printf("*");
gotoxy(nColFin, nLinFin);
printf("*");
gotoxy(1, nLinFin-3);
printf("*");
gotoxy(nColFin, nLinFin-3);
printf("*");
}
void titulo(){
//posicionando no começo do quadro e imprimindo
gotoxy(0,2);
printf(" >>>> >>> >>> >>> >>>>>>> >>>\n");
printf(" > > > > > > > > >> >> > >\n");
printf(" > > > > > > > > > > >\n");
printf(" > > > > > > > > > > >>> >\n");
printf(" > > > > > >> > > > > > > >\n");
printf(" > > > > > > > > > > > > > >\n");
printf(" >>> >>> >>> >>> >>> >>> >>>\n");
printf("\n");
printf(" >>>> >>> >>> >>> >>>>>>> >>>\n");
printf(" >###> >#> >##> >#> >>###>> >###>\n");
printf(" >####> >#> >###>##> >#> >#####>\n");
printf(" >###> >#> >#>####> >#> >#>>>#>\n");
printf(" >##> >#> >#>>###> >#> >#> >#>\n");
printf(" >#> >#> >#> >##> >#> >#> >#>\n");
printf(" >>> >>> >>> >>> >>> >>> >>>\n");
printf("\n");
printf(" Pinta Pinta v1.2\n");
}
void limpar(){
int nLinha = 0, nColuna = 0;
//limpando a tela pelo comando do sistema
LIMPA_TELA;
//por precaução, percorre as linhas e colunas e imprime um espaço em branco, para não ficar nenhuma sujeira na tela
for (nLinha = 1; nLinha <= nLinFin; nLinha++){
for (nColuna = 1; nColuna <= nColFin; nColuna++){
gotoxy(nColuna,nLinha);
printf(" ");
}
}
}
void traduz(char cChar){
//imprimindo um texto em branco para limpar a última saída
gotoxy(10,nLinFin-2);
printf(" ");
//imprimindo a descrição do caracter da tabela ASCII
gotoxy(10,nLinFin-2);
if (cChar == 0) printf("Null");
if (cChar == 1) printf("Start of Heading");
if (cChar == 2) printf("Start of Text");
if (cChar == 3) printf("End of Text");
if (cChar == 4) printf("End of Transmission");
if (cChar == 5) printf("Enquiry");
if (cChar == 6) printf("Acknowledge");
if (cChar == 7) printf("Bell, rings terminal bell");
if (cChar == 8) printf("BackSpace");
if (cChar == 9) printf("Horizontal Tab");
if (cChar == 10) printf("Line Feed");
if (cChar == 11) printf("Vertical Tab");
if (cChar == 12) printf("Form Feed");
if (cChar == 13) printf("Enter");
if (cChar == 14) printf("Shift-Out");
if (cChar == 15) printf("Shift-In");
if (cChar == 16) printf("Data Link Escape");
if (cChar == 17) printf("Device Control 1");
if (cChar == 18) printf("Device Control 2");
if (cChar == 19) printf("Device Control 3");
if (cChar == 20) printf("Device Control 4");
if (cChar == 21) printf("Negative Acknowledge");
if (cChar == 22) printf("Synchronous idle");
if (cChar == 23) printf("End Transmission Block");
if (cChar == 24) printf("Cancel line");
if (cChar == 25) printf("End of Medium");
if (cChar == 26) printf("Substitute");
if (cChar == 27) printf("Escape");
if (cChar == 28) printf("File Separator");
if (cChar == 29) printf("Group Separator");
if (cChar == 30) printf("Record Separator");
if (cChar == 31) printf("Unit Separator");
if (cChar == 32) printf("Space");
if (cChar == 33) printf("!");
if (cChar == 34) printf("\"");
if (cChar == 35) printf("#");
if (cChar == 36) printf("$");
if (cChar == 37) printf("%");
if (cChar == 38) printf("&");
if (cChar == 39) printf("'");
if (cChar == 40) printf("(");
if (cChar == 41) printf(")");
if (cChar == 42) printf("*");
if (cChar == 43) printf("+");
if (cChar == 44) printf(",");
if (cChar == 45) printf("-");
if (cChar == 46) printf(".");
if (cChar == 47) printf("/");
if (cChar == 48) printf("0");
if (cChar == 49) printf("1");
if (cChar == 50) printf("2");
if (cChar == 51) printf("3");
if (cChar == 52) printf("4");
if (cChar == 53) printf("5");
if (cChar == 54) printf("6");
if (cChar == 55) printf("7");
if (cChar == 56) printf("8");
if (cChar == 57) printf("9");
if (cChar == 58) printf(":");
if (cChar == 59) printf(";");
if (cChar == 60) printf("<");
if (cChar == 61) printf("=");
if (cChar == 62) printf(">");
if (cChar == 63) printf("?");
if (cChar == 64) printf("@");
if (cChar == 65) printf("A / Seta para Cima");
if (cChar == 66) printf("B / Seta para Baixo");
if (cChar == 67) printf("C / Seta para Direita");
if (cChar == 68) printf("D / Seta para Esquerda");
if (cChar == 69) printf("E");
if (cChar == 70) printf("F");
if (cChar == 71) printf("G");
if (cChar == 72) printf("H");
if (cChar == 73) printf("I");
if (cChar == 74) printf("J");
if (cChar == 75) printf("K");
if (cChar == 76) printf("L");
if (cChar == 77) printf("M");
if (cChar == 78) printf("N");
if (cChar == 79) printf("O");
if (cChar == 80) printf("P");
if (cChar == 81) printf("Q");
if (cChar == 82) printf("R");
if (cChar == 83) printf("S");
if (cChar == 84) printf("T");
if (cChar == 85) printf("U");
if (cChar == 86) printf("V");
if (cChar == 87) printf("W");
if (cChar == 88) printf("X");
if (cChar == 89) printf("Y");
if (cChar == 90) printf("Z");
if (cChar == 91) printf("[");
if (cChar == 92) printf("\\");
if (cChar == 93) printf("]");
if (cChar == 94) printf("^");
if (cChar == 95) printf("_");
if (cChar == 96) printf("`");
if (cChar == 97) printf("a");
if (cChar == 98) printf("b");
if (cChar == 99) printf("c");
if (cChar == 100) printf("d");
if (cChar == 101) printf("e");
if (cChar == 102) printf("f");
if (cChar == 103) printf("g");
if (cChar == 104) printf("h");
if (cChar == 105) printf("i");
if (cChar == 106) printf("j");
if (cChar == 107) printf("k");
if (cChar == 108) printf("l");
if (cChar == 109) printf("m");
if (cChar == 110) printf("n");
if (cChar == 111) printf("o");
if (cChar == 112) printf("p");
if (cChar == 113) printf("q");
if (cChar == 114) printf("r");
if (cChar == 115) printf("s");
if (cChar == 116) printf("t");
if (cChar == 117) printf("u");
if (cChar == 118) printf("v");
if (cChar == 119) printf("w");
if (cChar == 120) printf("x");
if (cChar == 121) printf("y");
if (cChar == 122) printf("z");
if (cChar == 123) printf("{");
if (cChar == 124) printf("|");
if (cChar == 125) printf("}");
if (cChar == 126) printf("~");
if (cChar == 127) printf("Delete");
if (cChar == 128) printf("Ç");
if (cChar == 129) printf("ü");
if (cChar == 130) printf("é");
if (cChar == 131) printf("â");
if (cChar == 132) printf("ä");
if (cChar == 133) printf("à");
if (cChar == 134) printf("å");
if (cChar == 135) printf("ç");
if (cChar == 136) printf("ê");
if (cChar == 137) printf("ë");
if (cChar == 138) printf("è");
if (cChar == 139) printf("ï");
if (cChar == 140) printf("î");
if (cChar == 141) printf("ì");
if (cChar == 142) printf("Ä");
if (cChar == 143) printf("Å");
if (cChar == 144) printf("É");
if (cChar == 145) printf("æ");
if (cChar == 146) printf("Æ");
if (cChar == 147) printf("ô");
if (cChar == 148) printf("ö");
if (cChar == 149) printf("ò");
if (cChar == 150) printf("û");
if (cChar == 151) printf("ù");
if (cChar == 152) printf("ÿ");
if (cChar == 153) printf("Ö");
if (cChar == 154) printf("Ü");
if (cChar == 155) printf("ø");
if (cChar == 156) printf("£");
if (cChar == 157) printf("Ø");
if (cChar == 158) printf("×");
if (cChar == 159) printf("ƒ");
if (cChar == 160) printf("á");
if (cChar == 161) printf("ù");
if (cChar == 162) printf("ó");
if (cChar == 163) printf("ú");
if (cChar == 164) printf("ñ");
if (cChar == 165) printf("Ñ");
if (cChar == 166) printf("a");
if (cChar == 167) printf("o");
if (cChar == 168) printf("¿");
if (cChar == 169) printf("®");
if (cChar == 170) printf("¬");
if (cChar == 171) printf("1⁄2");
if (cChar == 172) printf("1⁄4");
if (cChar == 173) printf("¡");
if (cChar == 174) printf("«");
if (cChar == 175) printf("»");
if (cChar == 176) printf("░");
if (cChar == 177) printf("▒");
if (cChar == 178) printf("▓");
if (cChar == 179) printf("│");
if (cChar == 180) printf("┤");
if (cChar == 181) printf("Á");
if (cChar == 182) printf("Â");
if (cChar == 183) printf("À");
if (cChar == 184) printf("©");
if (cChar == 185) printf("╣");
if (cChar == 186) printf("║");
if (cChar == 187) printf("╗");
if (cChar == 188) printf("╝");
if (cChar == 189) printf("¢");
if (cChar == 190) printf("¥");
if (cChar == 191) printf("┐");
if (cChar == 192) printf("└");
if (cChar == 193) printf("┴");
if (cChar == 194) printf("┬");
if (cChar == 195) printf("├");
if (cChar == 196) printf("─");
if (cChar == 197) printf("┼");
if (cChar == 198) printf("ã");
if (cChar == 199) printf("Ã");
if (cChar == 200) printf("╚");
if (cChar == 201) printf("╔");
if (cChar == 202) printf("╩");
if (cChar == 203) printf("╦");
if (cChar == 204) printf("╠");
if (cChar == 205) printf("═");
if (cChar == 206) printf("╬");
if (cChar == 207) printf("¤");
if (cChar == 208) printf("ð");
if (cChar == 209) printf("Ð");
if (cChar == 210) printf("Ê");
if (cChar == 211) printf("Ë");
if (cChar == 212) printf("È");
if (cChar == 213) printf("ı");
if (cChar == 214) printf("Í");
if (cChar == 215) printf("Î");
if (cChar == 216) printf("Ï");
if (cChar == 217) printf("┘");
if (cChar == 218) printf("┌");
if (cChar == 219) printf("█");
if (cChar == 220) printf("▄");
if (cChar == 221) printf("¦");
if (cChar == 222) printf("Ì");
if (cChar == 223) printf("▀");
if (cChar == 224) printf("Ó");
if (cChar == 225) printf("ß");
if (cChar == 226) printf("Ô");
if (cChar == 227) printf("Ò");
if (cChar == 228) printf("õ");
if (cChar == 229) printf("Õ");
if (cChar == 230) printf("μ");
if (cChar == 231) printf("þ");
if (cChar == 232) printf("Þ");
if (cChar == 233) printf("Ú");
if (cChar == 234) printf("Û");
if (cChar == 235) printf("Ù");
if (cChar == 236) printf("ý");
if (cChar == 237) printf("Ý");
if (cChar == 238) printf(" ̄");
if (cChar == 239) printf(" ́");
if (cChar == 240) printf("");
if (cChar == 241) printf("±");
if (cChar == 242) printf(" ̳");
if (cChar == 243) printf("3⁄4");
if (cChar == 244) printf("¶");
if (cChar == 245) printf("§");
if (cChar == 246) printf("÷");
if (cChar == 247) printf(" ̧");
if (cChar == 248) printf("°");
if (cChar == 249) printf(" ̈");
if (cChar == 250) printf("·");
if (cChar == 251) printf("1");
if (cChar == 252) printf("3");
if (cChar == 253) printf("2");
if (cChar == 254) printf("■");
if (cChar == 255) printf("");
}
void ee(){
int nLin = 8;
//imprimindo 'joinha' e mensagem
gotoxy(12,nLin);
printf(" ### ");
gotoxy(12,nLin+1);
printf(" # ## #### ");
gotoxy(12,nLin+2);
printf(" ##### ### # ");
gotoxy(12,nLin+3);
printf(" ## # # ");
gotoxy(12,nLin+4);
printf(" ## ## # ");
gotoxy(12,nLin+5);
printf(" ###### #### ");
gotoxy(15,nLinFin-2);
printf("Dani approves...",sTexto);
}
Bom pessoal, por hoje é só.
Abraços e até a próxima.



