{warning.fa-warning} Aviso, esse texto foi escrito pensando em C#. Alguns dos métodos podem possuir nomes diferentes em rEduc/BlockEduc.

Classes de apoio


Algumas classes de apoio foram criadas para facilitar o desenvolvimento. No que antes haviam múltiplos métodos para realizar leituras diferentes de cor, agora tudo está unificado em uma só classe, e seus valores diferentes são tratados por essa classe.

Color

A classe Color é a maior classe de apoio do simulador. Com ela é possível realizar operações com cores, verificar qual a cor mais próxima, puxar o valor de iluminação, etc.

Construtor:

// Formato: Color Color(double, double, double)
Color minhaCor = new Color(60, 128, 255);

Propriedades públicas:

  • double .Brightness: Retorna a luminosidade em preto-e-branco da cor vista (de 0 a 255, onde 0 é preto e 255 é branco), podendo ser utilizado para focar em valores absolutos de luminosidade mais do que cores por ex.
  • double .Red: Retorna o valor de vermelho na cor, utilizando a cor construída acima, seria 60.
  • double .Green: Retorna o valor de verde na cor, utilizando a cor construída acima, seria 128.
  • double .Blue: Retorna o valor de azul na cor, utilizando a cor construída acima, seria 255.

Métodos públicos:

  • string ToString(): Retorna o nome da cor mais próxima, como "Vermelho", ou "Black" (dependendo do idioma do seu código);
  • Colors Closest(): Retorna a cor mais próxima da cor informada, ex.: Colors maisProxima = minhaCor.Closest(). Para mais informações, ver o enumerador Colors abaixo para ver as cores possíveis;
  • double DistanceTo(Color): Retorna a distância absoluta entre duas cores. Vale ressaltar que o olho humano vê a diferença entre duas cores de forma diferente, já que algumas cores possuem mais "peso" no nosso cérebro que outras. Ex.: minhaCor.DistanceTo(new Color(255, 255, 255)).

Métodos estáticos:

  • Color Color.ToColor(Colors color): Transforma a cor no formato Colors (ver enumeração abaixo) em uma cor do tipo Color. Ex.: Color minhaNovaCor = Color.ToColor(Colors.Magenta);
  • Color Color.ToColor(string color): Transforma a cor no formato string (depende do idioma do seu código) em Color. Ex.: Color minhaNovaCor = Color.ToColor("Verde").

Time

A classe Time possui métodos para gerenciamento de tempo, e poder realizar coisas como cronômetros e esperar assíncronamente um intervalo de tempo. Esses métodos são:

Propriedades estáticas:

  • double Time.Timestamp: Retorna o valor que corresponde ao tempo atual em segundos, podendo ser utilizado para criar cronômetros.

Métodos estáticos:

  • Time.Delay(double ms): Tarefa que espera o valor em milissegundos e pode ser utilizado utilizando a palavra-chave await em métodos async.

IO

A classe IO é utilizada para impressão de dados em um console virtual ou em um arquivo de texto local no computador. Vale ressaltar que o funcionamento do console e do arquivo de texto estão diferentes da forma que foram originalmente criados em 2020. Esses métodos são:

Métodos estáticos de escrita em console:

  • void IO.ClearPrint(): Limpa o console;
  • void IO.Print(string text): Limpa o console e escreve na primeira linha o texto informado;
  • void IO.PrintLine(string text): Empurra o conteúdo do console uma linha abaixo e escreve na nova linha o texto informado.

Métodos estáticos de escrita em arquivo:

  • void IO.ClearWrite(): Limpa o arquivo de texto;
  • void IO.Write(string text): Limpa o arquivo de texto e escreve na primeira linha o texto informado;
  • void IO.WriteLine(string text): Empurra o conteúdo do arquivo de texto uma linha abaixo e escreve na nova linha o texto informado.

Outros métodos/propiedades estáticas:

  • bool IO.Timestamp: Booleano usado para definir se mensagens impressas terão marcação de horário (hh:mm:ss);
  • void IO.OpenConsole(): Método utilizado para abrir o console automaticamente atravez do código.

Utils

A classe Utils possui alguns métodos matemáticos para ajudar o desenvolvimento do programador C# e rEduc. Sendo esses:

Métodos estáticos:

  • double Utils.Clamp(double value, double minValue, double MaxValue): Retorna o valor entre o mínimo e o máximo, transformando seu número nos extremos caso ele "ultrapasse-os";
  • double Utils.Map(double value, double minA, double maxA, double minB, double maxB): Mapeia o valor no primeiro parâmetro que está na escala entre minA e maxA para a escala entre minB e maxB;
  • double Utils.Random(double min, double max): Retorna um valor aleatório entre o minimo e o máximo informado;
  • double Utils.SetPrecision(double value, double precision): Alias para Math.Round(double, int), retorna o mesmo double porém com o valor de casas decimais especificadas no segundo parâmetro;
  • double Utils.Modulo(double value, double mod): Realiza a operação value % mod, porém com suporte a valores negativos, já que no C# -1 % 5 = -1, e o esperado seria -1 % 5 = 4.

Enumeradores

Alguns enumeradores foram criados para ajudar no desenvolvimento.

  • Colors: Colors representam algumas cores padrão, e podem ser utilizados para algumas comparações e métodos estáticos da classe Color.

    1. Black
    2. White
    3. Green
    4. Red
    5. Blue
    6. Yellow
    7. Magenta
    8. Cyan
  • Notes: Notes podem ser utilizadas para tocar sons utilizando o Buzzer.

    1. C
    2. D
    3. E
    4. F
    5. G
    6. A
    7. B
  • Solfege: O solfège realiza a mesma função das notas, porém línguas que vêm do latim utilizam esse sistema em oposição ao sistema de letras visto no enumerador Notes.

    1. Do
    2. Re
    3. Mi
    4. Fa
    5. Sol
    6. La
    7. Si
  • WaveFormats: Os formatos de onda, ou WaveFormats são utilizados para tocar sons no buzzer, eles dão uma "textura" diferente ao som, podendo ser utilizados como percursão ou 'outros instrumentos'.

    1. Mute
    2. Square
    3. Sawtooth
    4. Noise