Beispiel #1
0
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 );
	}
}
Beispiel #2
0
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 );
}
Beispiel #3
0
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);
}
Beispiel #4
0
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 );
	}
}
Beispiel #5
0
int main(int argc, char* argv[]) {

	escrever("Teste");
	return 0;
}
Beispiel #6
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;
}