Avatar do usuário
Mysterious Stranger
Membro
Membro
Autor
Mensagens: 32
Registrado em: Seg Set 21, 2015 6:55 pm
Localização: BH
Karma: 60

Contato:

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

Qui Set 05, 2019 11:00 pm

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!

Tags:
 
Avatar do usuário
Alex FC
Administrador
Administrador
Mensagens: 510
Registrado em: Dom Abr 24, 2016 11:50 pm
Localização: Itaporã-MS
Karma: 896

Contato:

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

Sex Set 06, 2019 10:55 am

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/
1
Começando com o Game Maker? Olhou para assinatura certa!

Imagem

Tutoriais e vídeo aulas de programação! Clique no Banner e confira!
 
Avatar do usuário
Mysterious Stranger
Membro
Membro
Autor
Mensagens: 32
Registrado em: Seg Set 21, 2015 6:55 pm
Localização: BH
Karma: 60

Contato:

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

Sex Set 06, 2019 3:54 pm

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.
 
Avatar do usuário
Kapoty
Novato
Novato
Mensagens: 2
Registrado em: Dom Ago 23, 2015 11:55 am
Karma: 12

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

Sex Set 06, 2019 11:52 pm

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
2
 
Avatar do usuário
Mysterious Stranger
Membro
Membro
Autor
Mensagens: 32
Registrado em: Seg Set 21, 2015 6:55 pm
Localização: BH
Karma: 60

Contato:

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

Sáb Set 07, 2019 6:05 pm

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:
1

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes