Escolar Documentos
Profissional Documentos
Cultura Documentos
html
#include <curses.h>
#include <stdlib.h>
#include <time.h>
//////////////////////////////////////////////////////////////////////
// Funções auxiliares para a biblioteca Curses
//////////////////////////////////////////////////////////////////////
void initScreen()
{
#ifdef XCURSES
Xinitscr(argc, argv);
#else
initscr();
#endif
if (has_colors())
{
int bg = 0, fg = 0;
start_color();
void menu()
{
int i;
setColor(COLOR_YELLOW, COLOR_BLACK, A_BOLD);
move(y+4, x+36);
printw(" ||||| ||||| || \n");
move(y+5, x+36);
printw ("|| || || || || ||| ||| || \n");
move(y+6, x+36);
printw("|| |||| || || || || || || || ||||||\n");
move(y+7, x+36);
printw("|| || || || || |||| || || \n");
move(y+8, x+36);
printw("|| || || || || || || || \n");
move(y+9, x+36);
printw(" ||||| ||||||| |||| ||| ||| \\/ \n");
setColor(COLOR_BLUE, COLOR_BLACK, A_BOLD);
move(y+10, x+36);
printw("------------------------------------ O RPG do C");
void batalha1()
{
getmaxyx(stdscr, ymax, xmax);
WINDOW * janela = newwin(10,(xmax-38), (ymax-11),19);
box(janela, 0, 0);
refresh();
wrefresh(janela);
WINDOW * janela2 = newwin(3,(xmax-38), (ymax-12),19);
box(janela2, 0, 0);
refresh();
wrefresh(janela2);
WINDOW * janela3 = newwin(3,(xmax-76), (ymax-29),19);
box(janela3, 0, 0);
refresh();
wrefresh(janela3);
WINDOW * janela4 = newwin(3,(xmax-111), (ymax-12),92);
box(janela4, 0, 0);
refresh();
wrefresh(janela4);
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move (y+19, x+93);
printw("HP:");
void ponteiro()
{
setColor(COLOR_BLUE, COLOR_BLACK, A_BOLD);
move (y+6, x+50);
printw(" # #\n");
move (y+7, x+50);
printw(" # #\n");
move (y+8, x+50);
printw(" # #\n");
move (y+9, x+50);
printw(" # #\n");
move (y+10, x+50);
printw(" # #\n");
move (y+11, x+50);
printw("#####################\n");
move (y+12, x+50);
printw(" # #\n");
move (y+13, x+50);
printw(" # #\n");
move (y+14, x+50);
printw(" # #\n");
move (y+15, x+50);
printw(" # #\n");
move (y+16, x+50);
printw(" # #\n");
setColor(COLOR_WHITE, COLOR_BLACK, A_BOLD);
move (y+2, x+21);
printw("E um asteristico!");
move (y+19, x+21);
printw("Qual a funcao do ponteiro em C?");
move (y+21, x+21);
printw("1 - Ponteiro de relogio");
move (y+23, x+21);
printw("2 - Estrelinha");
move (y+25, x+21);
printw("3 - Um ponto bem pequeno no codigo");
move (y+27, x+21);
printw("4 - Indicar o endereço de uma reserva de memoria");
}
void vetor()
{
setColor(COLOR_BLUE, COLOR_BLACK, A_BOLD);
move (y+4, x+45);
printw(" ||||| |||||\n");
move (y+5, x+45);
printw(" ||||| |||||\n");
move (y+6, x+45);
printw(" ||| |||\n");
move (y+7, x+45);
printw(" ||| |||\n");
move (y+8, x+45);
printw(" ||| |||\n");
move (y+9, x+45);
printw("||| ||| ||| |||\n");
move (y+10, x+45);
printw(" ||| ||| ||| |||\n");
move (y+11, x+45);
printw(" ||| ||| ||| |||\n");
move (y+12, x+45);
printw(" ||| ||| ||| |||\n");
move (y+13, x+45);
printw(" ||| ||| ||| |||\n");
move (y+14, x+45);
printw(" ||| ||| ||| |||\n");
move (y+15, x+45);
printw(" ||||| ||| |||\n");
move (y+16, x+45);
printw(" ||| ||||| |||||\n");
move (y+17, x+45);
printw(" | ||||| |||||\n");
setColor(COLOR_WHITE, COLOR_BLACK, A_BOLD);
move (y+2, x+21);
printw("Um Vetor selvagem apareceu!");
move (y+19, x+21);
printw("O que e um vetor?");
move (y+21, x+21);
printw("1 - Reserva de memoria");
move (y+23, x+21);
printw("2 - Segmento com mesma direcao, sentido e modulo");
move (y+25, x+21);
printw("3 - Personagem de Meu Malvado Favorito");
move (y+27, x+21);
printw("4 - Formato de imagem sem pixels");
}
void bife()
{
setColor(COLOR_WHITE, COLOR_BLACK, A_BOLD);
move (y+5, x+17);
printw(" ,pm ,,
mq. \n");
move (y+6, x+17);
printw(" 6M *MM
Mb \n");
move (y+7, x+17);
printw(" MM MM
MM \n");
move (y+8, x+17);
printw(" .gP'Ya `7MMpMMMb.`7MM `7MM `7MMpMMMb.pMMMb. M9 ,6'Yb.
MM,dMMb. ,p6'bo YM \n");
move (y+9, x+17);
printw(",M' Yb MM MM MM MM MM MM MM _.d'' 8) MM MM
`Mb 6M' OO `'b._\n");
move (y+10, x+17);
printw("8M'''''' MM MM MM MM MM MM MM `'bp. ,pm9MM MM
M8 8M ,qd''\n");
move (y+11, x+17);
printw("YM. , MM MM MM MM MM MM MM Mb 8M MM ,,
MM. ,M9 ,, YM. , 6M \n");
move (y+12, x+17);
printw(" `Mbmmd'.JMML JMML.`Mbod'YML..JMML JMML JMML. MM `Moo9^Yo.dg
P^YbmdP' dg YMbmd' MM \n");
move (y+13, x+17);
printw(" YM ,j
,j M9 \n");
move (y+14, x+17);
printw(" `bm ,'
,' md' \n");
setColor(COLOR_WHITE, COLOR_BLACK, A_BOLD);
move (y+2, x+21);
printw("Codigo tem identidade?");
move (y+19, x+21);
printw("O que seria um Enum em C?");
move (y+21, x+21);
printw("1 - Estrutura de numeros");
move (y+23, x+21);
printw("2 - Identidade do codigo");
move (y+25, x+21);
printw("3 - E um conjunto de valores inteiros representados por
identificadores.");
move (y+27, x+21);
printw("4 - EnumSEInaum");
}
void espaguete()
{
setColor(COLOR_YELLOW, COLOR_BLACK, A_BOLD);
move (y+4, x+31);
printw(" |||\n");
move (y+5, x+31);
printw(" |||||,\n");
move (y+6, x+31);
printw(" ESSE ESPAGUETE FICARA \\|||||/\n");
move (y+7, x+31);
printw(" /) DELICIOSO `|||||/\n");
move (y+8, x+31);
printw(" ,-''//-. ______ |`''''|\n");
move (y+9, x+31);
printw(" ==|`-.//.-'|,-----'======================| G |====\n");
move (y+10, x+31);
printw(" | Code |---,---, .---,((--------. | O |\n");
move (y+11, x+31);
printw(" | Blocks| /(_)/ / (()))` ;'', \\ | T |\n");
move (y+12, x+31);
printw(" `-.____.-' /_ / / /| `;',`;; ,/( \\ | O |\n");
move (y+13, x+31);
printw(" /(_)/ / // ; ` ' ((()) \\ | |\n");
move (y+14, x+31);
printw(" .-::-. /_ / / /) '' ; ; `;'' \\`-...-'\n");
move (y+15, x+31);
printw(" (::::::) /(_)/ `=//===================' \n");
move (y+16, x+31);
printw(" `-::-' / / (/\n");
move (y+17, x+31);
printw("----------'---'\n");
setColor(COLOR_WHITE, COLOR_BLACK, A_BOLD);
move (y+2, x+21);
printw("Estao fazendo espaguete!");
move (y+19, x+21);
printw("Porque nao devemos usar a declaracao goto?");
move (y+21, x+21);
printw("1 - Goto nao tem problema no arduino");
move (y+23, x+21);
printw("2 - O codigo deixara de ser estruturado e ficara dificil de ler");
move (y+25, x+21);
printw("3 - Parece esgoto");
move (y+27, x+21);
printw("4 - nao sei;-;");
}
void espaguete2()
{
setColor(COLOR_YELLOW, COLOR_BLACK, A_BOLD);
move (y+4, x+31);
printw(" |||\n");
move (y+5, x+31);
printw(" |||||,\n");
move (y+6, x+31);
printw(" ESSE CODIGO FICARA \\|||||/\n");
move (y+7, x+31);
printw(" /) HORROROSO `|||||/\n");
move (y+8, x+31);
printw(" ,-''//-. ______ |`''''|\n");
move (y+9, x+31);
printw(" ==|`-.//.-'|,-----'======================| G |====\n");
move (y+10, x+31);
printw(" | Code |---,---, .---,((--------. | O |\n");
move (y+11, x+31);
printw(" | Blocks| /(_)/ / (()))` ;'', \\ | T |\n");
move (y+12, x+31);
printw(" `-.____.-' /_ / / /| `;',`;; ,/( \\ | O |\n");
move (y+13, x+31);
printw(" /(_)/ / // ; ` ' ((()) \\ | |\n");
move (y+14, x+31);
printw(" .-::-. /_ / / /) '' ; ; `;'' \\`-...-'\n");
move (y+15, x+31);
printw(" (::::::) /(_)/ `=//===================' \n");
move (y+16, x+31);
printw(" `-::-' / / (/\n");
move (y+17, x+31);
printw("----------'---'\n");
setColor(COLOR_WHITE, COLOR_BLACK, A_BOLD);
move (y+2, x+21);
printw("Eca! Isso fede!");
move (y+19, x+21);
printw("Porque esse codigo fede? O que significa um codigo fedorento?");
move (y+21, x+21);
printw("1 - Se nao tivesse goto, nao estaria fedendo");
move (y+23, x+21);
printw("2 - Porque goto se parece com esgoto ");
move (y+25, x+21);
printw("3 - Esse codigo fede pois esta mal feito, usaram goto nele.");
move (y+27, x+21);
printw("4 - continuo nao sabendo;-;");
}
void comojogar()
{
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move (y+2, x+21);
printw("Como jogar:\n");
move (y+3, x+21);
printw("Tecle 1, 2, 3 ou 4 para escolher a alternativa correta\n");
move (y+4, x+21);
printw("Aperte ESC para sair do jogo\n");
move (y+27, x+50);
printw("Aperte 1 para continuar\n");
}
void gameover()
{
setColor(COLOR_RED, COLOR_BLACK, A_BOLD);
move(y+4, x+14);
printw(" _______ ___ .___ ___. _______ ______ ____ ____
_______ .______ \n");
move(y+5, x+14);
printw(" / _____| / \\ | \\/ | | ____| / __ \\ \\ \\ /
/ | ____|| _ \\ \n");
move(y+6, x+14);
printw("| | __ / ^ \\ | \\ / | | |__ | | | | \\ \\/
/ | |__ | |_) | \n");
move(y+7, x+14);
printw("| | |_ | / /_\\ \\ | |\\/| | | __| | | |
| \\ / | __| | / \n");
move(y+8, x+14);
printw("| |__| | / _____ \\ | | | | | |____ | `--' | \\ /
| |____ | |\\ \\----.\n");
move(y+9, x+14);
printw(" \\______| /__/ \\__\\ |__| |__| |_______| \\______/ \\__/
|_______|| _| `._____|\n");
void prologo()
{
setColor(COLOR_WHITE, COLOR_BLACK, A_BOLD);
move(y+5, x+3);
printw(" ,---------------------------, \n");
move(y+6, x+3);
printw(" | /---------------------\\ | \n");
move(y+7, x+3);
printw(" | | | | \n");
move(y+8, x+3);
printw(" | | | | \n");
move(y+9, x+3);
printw(" | | O onde | | \n");
move(y+10, x+3);
printw(" | | -|- estou? | | \n");
move(y+11, x+3);
printw(" | | / \\ | | \n");
move(y+12, x+3);
printw(" | \\_____________________/ | \n");
move(y+13, x+3);
printw(" |___________________________| \n");
move(y+14, x+3);
printw(" ,---\\_____ [] _______/------, \n");
move(y+15, x+3);
printw(" / /______________\\ /| \n");
move(y+16, x+3);
printw(" /___________________________________ / | ___ \n");
move(y+17, x+3);
printw(" | | | ) \n");
move(y+18, x+3);
printw(" | _ _ _ [-------] | | ( \n");
move(y+19, x+3);
printw(" | o o o [-------] | / _)_\n");
move(y+20, x+3);
printw(" |__________________________________ |/ / / \n");
move(y+21, x+3);
printw(" /-------------------------------------/| ( )/ \n");
move(y+22, x+3);
printw(" /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ / \n");
move(y+23, x+3);
printw("/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ / \n");
move(y+24, x+3);
printw("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n");
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move(y+5, x+61);
printw("Era uma vez um entusiasta de Hardware que decidiu se\n");
move(y+6, x+61);
printw("aventurar com programacao, comecou a fazer um jogo\n");
move(y+7, x+61);
printw("RPG no qual suas maiores dificuldades eram chefes.\n");
move(y+8, x+61);
printw("Porem, ele declarou uma variavel tao erroneamente que\n");
move(y+9, x+61);
printw("conseguiu fazer o scanner de seu PC virar um portal\n");
move(y+10, x+61);
printw("que o transportou para dentro do PC lhe transformando \n");
move(y+11, x+61);
printw("em codigo.");
move(y+12, x+61);
printw("Dentro do computador ele achou a personificacao das \n");
move(y+13, x+61);
printw("declaracoes e etc em C tao temiveis como ele imaginava \n");
move(y+14, x+61);
printw("por ter trauma com codigo e comecou a fugir, os monstros\n");
move(y+15, x+61);
printw("acharam que ele era uma ameaca e comecaram a correr atras\n");
move(y+16, x+61);
printw("dele para derrota-lo.\n");
move(y+17, x+61);
printw("Entao nao resta outra alternativa a nao ser se defender.\n");
move(y+18, x+61);
printw("Para derrotarmos o inimigo, temos que saber sobre ele, e\n");
move(y+19, x+61);
printw("o entusiasta nao sabe quase nada, por isso, ele pede sua\n");
move(y+20, x+61);
printw("ajuda para conseguir sair vivo dessa e voltar ao mundo\n");
move(y+21, x+61);
printw("normal.");
move (y+27, x+50);
printw("Aperte 1 para continuar\n");
}
if(entrada != -1)
game->ultimaTecla = entrada;
switch(entrada)
{
case '1':
game->v1 = 0;
game->v1++;
break;
case '2':
game->v2 = 0;
game->v2++;
break;
case '3':
game->v3 = 0;
game->v3++;
break;
case '4':
game->v4 = 0;
game->v4++;
break;
case 27:
curs_set(1);
endwin();
exit(EXIT_SUCCESS);
break;
case 'a':
curs_set(1);
break;
case 'd':
curs_set(1);
break;
case KEY_LEFT:
curs_set(1);
break;
case KEY_RIGHT:
curs_set(1);
break;
case KEY_RESIZE:
// Finaliza a tela atual e cria uma nova
endwin();
initScreen();
clear();
refresh();
break;
}
}
switch(game->state)
{
case 'a':
menu();
if(game->ver >=1); //se game ver igual ou maior que 1, volte a valer 0
game->ver=0;
if(game->pontos>0)
{
game->pontos=0;
}
if(game->hp<100)
{
game->hp=100;
}
if(game->v1==1)
{
game->ver++; //se verdadeiro, incremente ver
}
if(game->v1 >=1); //se game v1 igual ou maior que 1, volte a valer 0
game->v1=0;
if(game->ver >=1); //se game ver igual ou maior que 1, volte a valer 0
game->ver=0;
if(game->v1==1)
{
game->ver++; //se verdadeiro, incremente ver
}
if(game->v1==1)
{
game->ver++; //se verdadeiro, incremente ver
}
if(game->ver >=1); //se game ver igual ou maior que 1, volte a valer 0
game->ver=0;
if(game->v1==1)
{
game->ver++; //se verdadeiro, incremente ver
}
if(game->v1==1)
{
game->pontos++; //se verdadeiro, incremente pontuacao
}
if(game->v2==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v3==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v4==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v2==1)
{
game->ver++; //se verdadeiro, incremente ver
}
if(game->v2==1)
{
game->pontos++; //se verdadeiro, incremente pontuacao
}
if(game->v1==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v3==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v4==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v3==1)
{
game->ver++; //se v3 verdadeiro, incremente ver
}
if(game->v3==1)
{
game->pontos++; //se v3 verdadeiro, incremente pontuacao
}
if(game->v1==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v2==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v4==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v3==1)
{
game->ver++; //se v3 verdadeiro, incremente ver
}
if(game->v3==1)
{
game->pontos++; //se v3 verdadeiro, incremente pontuacao
}
if(game->v1==1)
{
game->hp=game->hp-34; //se verdadeiro, decremente HP
}
if(game->v2==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v4==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v4==1)
{
game->ver++; //se v3 verdadeiro, incremente ver
}
if(game->v4==1)
{
game->pontos++; //se v3 verdadeiro, incremente pontuacao
}
if(game->v1==1)
{
game->hp=game->hp-34; //se verdadeiro, decremente HP
}
if(game->v2==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->v3==1)
{
game->hp=game->hp-34; //se verdadeiro, incremente ver
}
if(game->ver >=1); //se game ver igual ou maior que 1, volte a valer 0
game->ver=0;
if(game->v2==1)
{
game->ver++; //se v3 verdadeiro, incremente ver
}
if(game->v3==1)
{
FILE *arq;
char relatorio[100];
arq = fopen("relatorio.txt", "w");
if(game->hp>0)
{
fprintf(arq, "Parabens, voce fez %d pontos! e terminou com %d de HP",
game->pontos, game->hp, relatorio);
}
else
{
fprintf(arq, "Parabens, voce fez %d pontos! e terminou com 0 de HP",
game->pontos, relatorio);
}
fclose(arq); //colocar malloc
return game->v2==1;
}
// Laço principal sem retorno, pode ser removido para exibição direta de
informação na tela
while(1)
{
// Gerencia entradas do usuário pelo teclado
handleInputs(&game);
// Gerencia lógica da aplicação
doUpdate(&game);
// Atualiza a tela
drawScreen(&game);
return 0;