Você está na página 1de 18

// https://pubs.opengroup.org/onlinepubs/7908799/xcurses/curses.h.

html

#include <curses.h>
#include <stdlib.h>
#include <time.h>

// 8 colors for standard Curses


#define PALLETE_SIZE (COLOR_WHITE - COLOR_BLACK + 1)
int linhas = 30, colunas = 120; //resolucao do jogo, x120y30
int x = 0, y = 0, xmax, ymax; //coordenadas x, y e maximas
// Estrutura com estado interno da aplicação
typedef struct gameData //guardar valor
{
int v1, v2, v3, v4, bit, ver, hp ,pontos;
int ultimaTecla;
char state;
} gameData;

//////////////////////////////////////////////////////////////////////
// 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();

for(bg = COLOR_BLACK; bg <= COLOR_WHITE; bg++)


for(fg = COLOR_BLACK; fg <= COLOR_WHITE; fg++)
init_pair(bg*PALLETE_SIZE + fg + 1, fg, bg); // color 0 is system
default (reserved)
}

// Trata a tecla Enter como \n


//nl();
resize_term(linhas, colunas); //redimensionar na resolução definida
// Teclas digitadas pelo usuário não aparecem na tela
noecho();
// 0 para cursor invisível
curs_set(0);
// Define getch como non-blocking de acordo com o timeout abaixo
nodelay(stdscr, TRUE);
// Timeout em 0 determina getch como non-blocking, não espera entrada do
usuário
timeout(0);
// Habilita teclas de function (F1, F2, ...), flechas, etc
keypad(stdscr, TRUE);
}
void setColor(short int fg, short int bg, chtype attr)
{
chtype color = COLOR_PAIR(bg*PALLETE_SIZE + fg + 1);
color |= attr;
attrset(color);
}

void initGame(gameData * game) //definir valor padrao da variavel


{
game ->bit = 0;
game ->v1=0;
game ->v2=0;
game ->v3=0;
game ->v4=0;
game ->ver=0;
game ->pontos=0;
game->hp = 100;
game->state = 'a';
game->ultimaTecla = -1;
}

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");

setColor(COLOR_GREEN, COLOR_BLACK, A_INVIS);


move (y+21, x+45);
printw("Tecle 1 para iniciar o jogo\n" );
move (y+23, x+45);
printw("Para sair do jogo, aperte ESC" );
move (y+27, x+17);
setColor(COLOR_RED, COLOR_BLACK, A_BOLD);
printw("(c) 2022 ESPARTANOS DO SILICIO (Lucas Parteka, Caio Kraus, Carlos
Augusto e Ivan Wolf)");

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");
}

// Gerencia entradas do usuário e controla o estado interno em game


// Há diversas opções de teclas na Curses, como KEY_UP, KEY_DOWN, etc.
void handleInputs(gameData * game)
{
int entrada = getch();

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;
}
}

void doUpdate(gameData * game)


{
//inserir algo aqui
}

void drawScreen(gameData * game)


{

int box(WINDOW *, chtype, chtype);


clear();

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->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;

if(game->ver==1) game->state = 'b';


break;
case 'b':
clear();
comojogar();

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); //se game v1 igual ou maior que 1, volte a valer 0


game->v1=0;

if(game->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;

if(game->ver==1) game->state = 'c';


break;
case 'c':
clear();
prologo();
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); //se game v1 igual ou maior que 1, volte a valer 0


game->v1=0;

if(game->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;
if(game->ver==1) game->state = 'd';
break;
case 'd':
clear();
batalha1();
vetor();
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move (y+19, x+96);
printw("%d",game->hp);
move (y+21, x+88);
printw("Pontuacao:%d", game->pontos);

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->v1 >=1); //se game v1 igual ou maior que 1, volte a valer 0


game->v1=0;

if(game->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;
if(game->ver==1) game->state = 'e';
if(game->hp<=0) game->state = 'i';
break;
case 'e':
clear();
batalha1();
espaguete();
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move (y+19, x+96);
printw("%d",game->hp);
if(game->hp<=0)
printw("0");
move (y+21, x+88);
printw("Pontuacao:%d", game->pontos);
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 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->v1 >=1); //se game v1 igual ou maior que 1, volte a valer 0


game->v1=0;

if(game->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;
if(game->ver==1) game->state = 'f';
if(game->hp<=0) game->state = 'i';
break;
case 'f':
clear();
batalha1();
espaguete2();
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move (y+19, x+96);
printw("%d",game->hp);
move (y+21, x+88);
printw("Pontuacao:%d", game->pontos);
if(game->ver >=1); //se game ver igual ou maior que 1, volte a valer 0
game->ver=0;

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->v1 >=1); //se game v1 igual ou maior que 1, volte a valer 0


game->v1=0;

if(game->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;
if(game->ver==1) game->state = 'g';
if(game->hp<=0) game->state = 'i';
break;
case 'g':
clear();
batalha1();
bife();
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move (y+19, x+96);
printw("%d",game->hp);
move (y+21, x+88);
printw("Pontuacao:%d", game->pontos);
if(game->ver >=1); //se game ver igual ou maior que 1, volte a valer 0
game->ver=0;

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->v1 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v1=0;

if(game->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;
if(game->ver==1) game->state = 'h';
if(game->hp<=0) game->state = 'i';
break;
case 'h':
clear();
batalha1();
ponteiro();
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move (y+19, x+96);
printw("%d",game->hp);
move (y+21, x+88);
printw("Pontuacao:%d", game->pontos);
if(game->ver >=1); //se game ver igual ou maior que 1, volte a valer 0
game->ver=0;

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->v1 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v1=0;

if(game->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;
if(game->ver==1) game->state = 'i';
if(game->hp<=0) game->state = 'i';
break;
case 'i':
clear();
gameover();
setColor(COLOR_GREEN, COLOR_BLACK, A_BOLD);
move (y+16, x+49);
printw("Seu HP final: %d",game->hp);
move (y+16, x+62);
if(game->hp<=0)
{
printw(" 0");
}
setColor(COLOR_CYAN, COLOR_BLACK, A_BOLD);
move (y+14, x+49);
printw("Sua pontuacao foi: %d", game->pontos);
move (y+27, x+10);
printw("Aperte 2 para continuar\n");
move (y+27, x+36);
printw("Para sair do jogo, aperte ESC" );
move (y+27, x+68);
printw("Para salvar um relatorio do jogo, aperte 3" );

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;
}

if(game->v1 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v1=0;

if(game->v2 >=1); //se game v2 igual ou maior que 1, volte a valer 0


game->v2=0;

if(game->v3 >=1); //se game v3 igual ou maior que 1, volte a valer 0


game->v3=0;

if(game->v4 >=1); //se game v4 igual ou maior que 1, volte a valer 0


game->v4=0;
if(game->ver==1) game->state = 'a';
break;
} //end switch
refresh();
// Exibe o conteúdo na tela (stdscr), getch() também ativa um refresh

int main(int argc, char *argv[])


{
// estrutura com dados internos da aplicação
gameData game;

// inicializa a tela pelo Curses e o estado inicial da aplicação


initScreen();
initGame(&game);

// 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);

// Controla o FPS da aplicação


napms(33);
}

// Encerra a tela inicializada em initScreen


endwin();

return 0;

Você também pode gostar