🤔 Para Refletir :
"O segredo para desenvolver ótimos jogos é... ahm... bom, se eu contasse, não seria mais segredo."
- Jazz

Me dê um exemplo de cálculo de Módulo

Ludovic Masculino

Conde
Membro
Membro
Juntou-se
19 de Junho de 2015
Postagens
493
Bravecoins
24
A duvida é simples, nunca prestei atenção a algo que aparece de vez em quando, o módulo. Me refiro ao cálculo mesmo não aquele "module ALGO" do RGSS não.
Hoje parei para aprender sobre ele, mas para quê usamos na programação? Tem como alguém dar uma exemplo, não precisa ser nada apurado nem completo, nem complexo, só um exemplo simples mesmo. Eu imagino algumas coisas mas, tá meio obscuro pra mim.
Desde já agradeço.
 
O melhor exemplo que consigo imaginar é a verificação de um número par ou ímpar, visto que como você deve saber, o módulo acessa o resto da divisão e não o resultado.
Para verificar se o número é par, basta dividi-lo por 2 e verificar com uma condição através do módulo se o resto é zero.
Não sei ao certo como é a sintaxe no RGSS porque nunca usei esse comando lá, mas no C# é algo assim:

if (numero % 2 == 0) {
comandos aqui
}

Sendo ''numero'' uma variavel que armazena o valor digitado pelo usuário.

Outras aplicações é verificar se um ou mais números são múltiplos de algum outro número (também com resto da divisão igual a zero)

Enfim, esses são alguns exemplos que eu consegui imaginar no momento, talvez dependendo da necessidade da pessoa, o módulo possa ser mais útil que isso.
 
É como a [member=895]Mayleone[/member] falou.

Código:
result = number1 % number2

O módulo, ou o restante. O operador divide number1 por number2 e retorna somente o resto como result. O sinal de result é o mesmo que o sinal de number1. O valor de result está entre 0 e o valor absoluto de number2.

Dai você usa o número 2 em number2 e realiza uma lógica para saber se number1 é par ou ímpar.
 
uma coisa legal q costumo usar com modulos, eh uma verificacao de par ou impar
nao sei exatamente como seria em rgss, mas em c# fica assim:

int x = 12;
if (x % 2 == 0)
    //par
          //instrução
else
    //impar
          //instrução

espero ter ajudado.
 
Um uso mais avançado do módulo é usá-lo como um "atalho" para ciclar o valor de uma variável entre 0 e (x - 1) sem a necessidade de fazer condições. Estando o código abaixo em um loop, a variável i vai ser incrementada a cada frame e quando chegar ao valor máximo, irá retornar ao valor 0.

Código:
var max = 10; // Número máximo (o maior resultado vai ser 10 - 1 = 9)
i++;
i %= max;

Esse método pode ser observado na classe Sprite_Destination, do MV:

Código:
Sprite_Destination.prototype.updateAnimation = function() {
    this._frameCount++; // Incrementa o valor
    this._frameCount %= 20; // Se chegar até 20, reseta para 0
    [...]

Outro exemplo prático (muito utilizado) é obter a posição de um elemento em uma grid cujas células tem tamanho WxH e que contém C colunas usando apenas o index. Exemplo:

Código:
var index = 3; // Index do elemento a ser retornado
var x = index % C * W;
var y = Math.floor(index / C) * H;

Enquanto para X você utiliza o módulo, em Y você utiliza o quociente, bastando apenas multiplicar pelos respectivos tamanhos das células para obter a posição em pixels.
 
Voltar
Topo Inferior