Página 1 de 1

Um código mais inteligente para conversão de moedas

Enviado: Qui Set 05, 2019 11:00 pm
por Mysterious Stranger
Boa noite!
Eu fiz um sistema monetário no meu jogo parecido com o de Dragon age Origins onde o crédito é distribuído entre ouro, prata e cobre sendo que 100 cobre vale 1 prata e 100 prata vale 1 ouro.
Imagem
Eu armazeno o crédito do jogador em uma variável e com um script de conversão eu faço a distribuição:
null: Clique para ver o conteúdo

Funciona perfeitamente e tudo, mas quando a quantia de crédito do jogador for muito grande, eu já estou vendo que vai ser um problema na questão de velocidade. Principalmente que estou fazendo esse jogo para plataforma mobile. Eu sou desenhista e meu forte não é programação por isso não estou conseguindo pensar em nada melhor.

Alguém teria uma ideia mais "otimizável" para chegar ao mesmo resultado?
Valeu qualquer ajudinha!

Re: Um código mais inteligente para conversão de moedas

Enviado: Sex Set 06, 2019 10:55 am
por Alex FC
Você pode fazer isso:

vCredits = global.credito;

vOuro = vCredits div 10000;
vPrata = (vCredits - (vOuro * 10000)) div 100;
vCobre = (vCredits - (vOuro * 10000)) - (vPrata * 100);


O div retorna a parte inteira divisão. Ex:

5 / 2 = 2,5
5 div 2 = 2

Mas teu código não é pesado demais, ele só faz operações básicas e tem apenas um loop (Complexidade N).

O que pode estar acabando com o desempenho é onde este seu código está localizado. Em eventos Draw, pode dar sim alguma diferença e grande, principalmente pra mobile.

Dica extra: utilize == ao invés de = nas comparações/condições, apesar do GM aceitar isso, é uma má prática de programação e pode te complicar ao usar outras linguagens.

Abraços o/

Re: Um código mais inteligente para conversão de moedas

Enviado: Sex Set 06, 2019 3:54 pm
por Mysterious Stranger
Obrigado, Alex.
Sim, eu coloquei justamente no DRAW. Senti umas agarradas bem rápidas, mas que não estavam lá antes do código.

Dica extra: utilize == ao invés de = nas comparações/condições, apesar do GM aceitar isso, é uma má prática de programação e pode te complicar ao usar outras linguagens.


Sim. Assim como no PHP... apanho muito lá por conta desses detalhes.
Mais uma vez, obrigado pelo código camarada.

Re: Um código mais inteligente para conversão de moedas

Enviado: Sex Set 06, 2019 11:52 pm
por Kapoty
Outra maneira seria:

vCredits = global.credito;

vOuro = vCredits div 10000;
vPrata = vCredits mod 10000 div 100;
vCobre = vCredits mod 100;


O mod retorna o resto da divisão. Ex:

5 mod 2 = 1

Re: Um código mais inteligente para conversão de moedas

Enviado: Sáb Set 07, 2019 6:05 pm
por Mysterious Stranger
Kapoty escreveu:
Outra maneira seria:

vCredits = global.credito;

vOuro = vCredits div 10000;
vPrata = vCredits mod 10000 div 100;
vCobre = vCredits mod 100;


O mod retorna o resto da divisão. Ex:

5 mod 2 = 1


Valeu, Kapoty. Eu usei o código do Alex, mas esse mod vai me ajudar em um código de estatística que eu estou fazendo pro jogo. :blz: