void cortar_arvores( int x, int y, int lenhador ) { if( mapa[x][y].vegetacao >= 4 && unidades[lenhador].movimentos > 0 && unidades[lenhador].quantidade >= 10 ) { mapa[x][y].vegetacao--; if( mapa[x][y].vegetacao == 3 ) { mapa[x][y].vegetacao = 2; } jogadores[unidades[lenhador].dono].materiais += 200; unidades[lenhador].movimentos = 0; strcpy( aux, "+200 materiais" ); escrever( 400, 400, aux, fonte20, corVermelha ); SDL_Flip( tela ); SDL_Delay( 1000 ); } if( unidades[lenhador].quantidade < 10 ) { strcpy( aux, "Tropas insuficientes nesse pelotão" ); escrever( 300, 400, aux, fonte20, corVermelha ); SDL_Flip( tela ); SDL_Delay( 2000 ); } }
void desenhar_infos_jogador( int x, int y, jogador jog ) { strcpy( aux, "Jogador: " ); strcat( aux, jog.nome ); escrever( x, y, aux ); strcpy( aux, "Materiais: " ); itoa( jog.materiais, aux2, 10); strcat( aux, aux2); escrever( x, y+13, aux ); strcpy( aux, "Mana: " ); itoa( jog.mana, aux2, 10); strcat( aux, aux2); escrever( x, y+26, aux ); }
int main() { //struct que identifica um arquivo para escrita (saida) FILE *ponteiro_arquivo_de_saida; /*r - aberto para leitura*/ /*w - aberto para escrita*/ /*a - aberto no final do arquivo (cria se nao existe)*/ /*r+ - leitura e escrita (comeco)*/ /*w+ - leitura e escrita (sobrescreve arquivo - recria)*/ /*a+ - leitura e escrita, abre no final (cria se nao existe)*/ const char modo[] = "w"; const char arquivo_de_saida[] = "saida.txt"; //Abre o arquivo em modo de escrita e o //cria automaticamente se nao existir ponteiro_arquivo_de_saida = fopen(arquivo_de_saida, modo); if (ponteiro_arquivo_de_saida == NULL) { fprintf(stderr, "Impossivel abrir o arquivo de saida %s\n", arquivo_de_saida); exit(1); } escrever(ponteiro_arquivo_de_saida); //Fecha o arquivo de saida fclose(ponteiro_arquivo_de_saida); }
void desenhar_infos_terr( int x, int y, int terrX, int terrY ) { aplicar_superficie( x, y, bordasImagem, tela, &bordasI[9] ); if( selecaoX >= 0 && selecaoY >= 0 ) { itoa(mapa[terrX][terrY].vegetacao, aux, 10); escrever( x+20, y+3, aux ); itoa(mapa[terrX][terrY].relevo, aux, 10); escrever( x+46, y+3, aux ); itoa(mapa[terrX][terrY].temperatura, aux, 10); escrever( x+72, y+3, aux ); itoa( espaco_terr( terrX, terrY), aux, 10); escrever( x+20, y+19, aux ); } }
int main(int argc, char* argv[]) { escrever("Teste"); return 0; }
//Heroes of Might and Magic int combate( int atacante, int defensor ) { int cid; float dife; float atac; float atacDano; float atacVida; float atacQuant; float defe; float defeDano; float defeVida; float defeQuant; atacVida = tipos[unidades[atacante].tipo].vida; defeVida = tipos[unidades[defensor].tipo].vida; atacQuant = unidades[atacante].quantidade; defeQuant = unidades[defensor].quantidade; atac = tipos[unidades[atacante].tipo].ataque; //Defesa do defensor if( tipos[unidades[defensor].tipo].lanca > 0 && tipos[unidades[atacante].tipo].montaria > 0 && tipos[unidades[defensor].tipo].montaria == 0 ) { defe = tipos[unidades[defensor].tipo].defesa * ( tipos[unidades[defensor].tipo].lanca + tipos[unidades[atacante].tipo].montaria ); } else { defe = tipos[unidades[defensor].tipo].defesa; } cid = procurar_cid_xy( unidades[defensor].x, unidades[defensor].y ); if( cid >= 0 && tipos[unidades[defensor].tipo].montaria == 0 )//Bonus de defesa da cidade para não montados { defe = defe * racas[tipos[unidades[defensor].tipo].raca].cidDefesa; } dife = atac - defe; //Dano do atacante if( dife > -10 ) { atacDano = ( ( dife*10 + 100 ) * tipos[unidades[atacante].tipo].dano ) / 100; if( tipos[unidades[defensor].tipo].arco > 0 && tipos[unidades[atacante].tipo].arco == 0 )//Defesor é de alcance e está contra corpo-a-corpo { atacDano = atacDano * tipos[unidades[defensor].tipo].arco * 2; } if( tipos[unidades[defensor].tipo].montaria > 0 && tipos[unidades[atacante].tipo].lanca > 0 ) { atacDano = atacDano * ( tipos[unidades[defensor].tipo].montaria + tipos[unidades[atacante].tipo].lanca ); } } else { atacDano = tipos[unidades[atacante].tipo].dano / ((dife*-1)+1); } //Dano do defensor if( tipos[unidades[defensor].tipo].arco < tipos[unidades[atacante].tipo].arco )//Defesor tem menos alcance { defeDano = 0; } else { defeDano = tipos[unidades[defensor].tipo].dano; if( tipos[unidades[atacante].tipo].montaria > 0 && tipos[unidades[defensor].tipo].lanca > 0 ) { defeDano = defeDano * ( tipos[unidades[atacante].tipo].montaria + tipos[unidades[defensor].tipo].lanca ); } } defeQuant = ( ( defeQuant * defeVida ) - ( atacDano * atacQuant ) ) / defeVida; if( defeQuant < 0 ) defeQuant = 0; atacQuant = ( ( atacQuant * atacVida ) - ( defeDano * (defeQuant*3+unidades[defensor].quantidade-defeQuant)/4 ) ) / atacVida; if( defeQuant < 0 ) defeQuant = 0; if( atacQuant < 0 ) atacQuant = 0; itoa( unidades[atacante].quantidade-(int)atacQuant, aux2, 10); strcpy( aux, aux2 ); strcat( aux, "/" ); itoa( unidades[defensor].quantidade-(int)defeQuant, aux2, 10); strcat( aux, aux2 ); escrever( (unidades[atacante].x+unidades[defensor].x)*35+20-telaX, (unidades[atacante].y+unidades[defensor].y)*35+20-telaY, aux, fonte20, corVermelha ); SDL_Flip( tela ); SDL_Delay( 1000 ); unidades[atacante].quantidade = (int)atacQuant; unidades[defensor].quantidade = (int)defeQuant; if( atacQuant <= 0 ) { eliminar_pelotao( atacante ); /*preencher_fundo(); strcpy( aux, "É a vez de " ); strcat( aux, "1" ); escrever( 400, 400, aux, fonte20, corVermelha ); SDL_Flip( tela ); SDL_Delay( 1000 );*/ } if( defeQuant <= 0 ) { eliminar_pelotao( defensor ); /*preencher_fundo(); strcpy( aux, "É a vez de " ); strcat( aux, "2" ); escrever( 400, 400, aux, fonte20, corVermelha ); SDL_Flip( tela ); SDL_Delay( 1000 );*/ } if( atacQuant > 0 && defeQuant <= 0 ) return 2; if( atacQuant > 0 ) return 1; if( atacQuant <= 0 ) return 0; }