void batalha(Jogador eu, Jogador foe) { /* Toca a música especificada indefinidamente */ tocaMusica("bgm/ffvi.wav"); while (eu.status.hp > 0 && foe.status.hp > 0) { /* Exibe barras de vida na tela */ lifebar(eu); lifebar(foe); /* Loop até chegar a vez de um personagem. O (+1) nesses dois casos impede o personagem de nunca jogar caso SPD == 0. */ while (eu.atb < MAX_ATB && foe.atb < MAX_ATB) { eu.atb += eu.status.spd + 1; foe.atb += foe.status.spd + 1; } if (eu.atb >= MAX_ATB) { eu.atb -= MAX_ATB; do { printf("\nSua vez! Digite 1 para atacar,\n" "2 para carregar o golpe ou 3 para defender: "); scanf("%d", &eu.acao); if (eu.acao == 2 && eu.potencia == MAX_POW) { puts("\n>Limite atingido! Impossível carregar mais."); eu.acao = 0; } } while (eu.acao < 1 || eu.acao > 3); turno(&eu, &foe); } else { /* (foe.atb >= MAX_ATB) */ congela(1); foe.atb -= MAX_ATB; do foe.acao = randomInteger(1, 3); while (foe.potencia == MAX_POW && foe.acao == 2); turno(&foe, &eu); } } /* Encerra a execução da música */ paraMusica(); /* Exibe resultado da batalha */ lifebar(eu); lifebar(foe); printf("\n> %s foi aniquilado.\n", (eu.status.hp <= 0) ? eu.nome : foe.nome); printf("\n***** Você %s! *****\n\n", (eu.status.hp > 0) ? "ganhou" : "perdeu"); }
int main (){ player_t jogador[MAX_PLAYERS]; int Nnumero_jogadores, i, recursiva; recursiva=-1; Nnumero_jogadores=0; for(i=0;i<MAX_PLAYERS;i++){ //atribui vida e dinheiro inicial aos jogadores(constantes linha 7-10) jogador[i].bag=START_MONEY; jogador[i].life=START_LIFE; jogador[i].controle=START_CONTROLE; jogador[i].posicao=START_POSICION; } printf("\n\n\nDigite o numero de jogadores que vao jogar (minimo 2, maximo 4): "); do{ //nao segue o programa enquanto nao entrar com o numero correto de jogadores, 2~4 scanf("%d", &Nnumero_jogadores); }while(Nnumero_jogadores < 2 || Nnumero_jogadores > 4); for(i=0;i<Nnumero_jogadores;i++){ //pega o nome dos jogadores printf("Entre com o nome do jogador de numero %d: ", i+1); scanf("%s", jogador[i].nome); } while(jogo_acabou(jogador, Nnumero_jogadores)==0){ //este laço chama a funcao 'turno' que simula uma rodada, a cada vez que um jogador chega ao final ou morre a variavel 'final' é incrementada. quando ela for igual ao numero de jogadores que estao jogando o jogo acaba turno(jogador, Nnumero_jogadores, recursiva); } printf("\n\t\t\t--FIM DE JOGO--"); for(i=0;i<Nnumero_jogadores;i++){ //cada vida vale 100 ouro if(jogador[i].life>0){ jogador[i].bag+=jogador[i].life*100; } } int Maior_jogador=0; for(i=0;i<(Nnumero_jogadores-1);i++){ //ganhador if(jogador[i].bag > jogador[i+1].bag && jogador[i].life>0){ Maior_jogador=i+1; }else{ Maior_jogador=i; } } printf("\nQuem ganhou foi o jogador: %s, com: %d ouros. Parabens!\n\n", jogador[i].nome, jogador[i].bag); return 0; }