sBotics Wiki

Tutorial do Simulador usado pela OBR

Ferramentas do usuário

Ferramentas do site


csharp

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
csharp [2025/04/02 04:14] – [Classes de Apoio] admincsharp [2025/04/15 16:34] (atual) – edição externa 127.0.0.1
Linha 26: Linha 26:
 } }
 </code> </code>
- 
 ==== Aviso Importante sobre Busy-Waiting ==== ==== Aviso Importante sobre Busy-Waiting ====
 Como já informado na página de [[Programação]], o simulador e o seu código rodam na mesma "camada" (thread). Então o seu código impacta DIRETAMENTE no FPS ("quadros por segundo", fluidez) do simulador. Códigos pesados podem acabar pausando o simulador por um tempo considerável causando um crash. Você **sempre** deve usar ''%%await%%'' para evitar segurar o simulador por tempo demais no seu código. Como já informado na página de [[Programação]], o simulador e o seu código rodam na mesma "camada" (thread). Então o seu código impacta DIRETAMENTE no FPS ("quadros por segundo", fluidez) do simulador. Códigos pesados podem acabar pausando o simulador por um tempo considerável causando um crash. Você **sempre** deve usar ''%%await%%'' para evitar segurar o simulador por tempo demais no seu código.
Linha 285: Linha 284:
  
 ===== Classes de Apoio ===== ===== Classes de Apoio =====
-Algumas classes de apoio foram criadas para facilitar o desenvolvimento.+Algumas classes de apoio foram criadas para facilitar o desenvolvimento, oferecendo funcionalidades que simplificam tarefas comuns e melhoram o entendimento da programação. 
 ==== Color ==== ==== 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:**
 +
 +<code csharp>
 +// Formato: Color Color(double, double, double)
 +Color minhaCor = new Color(60, 128, 255);
 +</code>
 +
 +**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 ==== ==== 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 ==== ==== 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 ==== ==== 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 ==== ==== 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''.
 +    - Black
 +    - White
 +    - Green
 +    - Red
 +    - Blue
 +    - Yellow
 +    - Magenta
 +    - Cyan
 +
 +  * **Notes**: Notes podem ser utilizadas para tocar sons utilizando o Buzzer.
 +    - C
 +    - D
 +    - E
 +    - F
 +    - G
 +    - A
 +    - 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''.
 +    - Do
 +    - Re
 +    - Mi
 +    - Fa
 +    - Sol
 +    - La
 +    - 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'.
 +    - Mute
 +    - Square
 +    - Sawtooth
 +    - Noise
  
 ------- -------
  
 ===== Buscando Comandos ===== ===== Buscando Comandos =====
-lorem ipsum +Embora este tutorial seja bastante completo, ele pode não mostrar toda a profundidade que é possível alcançar com o C# para sBotics (com objetos como a câmera ou caneta 3D, por exemplo). Sendo assim, é recomendável que você como usuário esteja sempre atrás de conteúdos.
 ==== Código Fonte ==== ==== Código Fonte ====
-lorem ipśum+O código fonte da parte programável (sensores, componentes, etc) do sBotics está disponível em [[https://github.com/sBotics/programming-reference|Github: sBotics/Programming Reference]].
  
 +Lá é possível entender como funcionam os sensores exatamente e saber todos os métodos, classes, propriedades, enums, namespaces, etc. que o usuário tem acesso.
 ==== Do rEduc ==== ==== Do rEduc ====
-lorem ipśum+É possível ver também a "tradução" que o rEduc faz para C# em [[https://code.sbotics.net/programming/platforms/c0db56ec-619f-498f-9fbb-7835735f0f5e/languages/4224cf8e-f00c-4cc5-bd08-f0d22fad011d/functions?category=&cv=csharp|Funções sBotics]], e ver exatamente o nome de cada comando rEduc e o seu código C# equivalente para fins de estudo.
  
 ------- -------
csharp.1743567241.txt.gz · Última modificação: 2025/04/15 16:34 (edição externa)