Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

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

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Mysterious Stranger
Artista
Artista
Reações: 0
Mensagens: 62
Localização: BH

Contato:

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

Mensagem por Mysterious Stranger » 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!

Avatar do usuário
All-x
Administrador
Administrador
Reações: 8
Mensagens: 621
Localização: Dourados-MS

Contato:

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

Mensagem por All-x » Sex Set 06, 2019 10:55 am

Você pode fazer isso:

Código: Selecionar todos

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/
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
Artista
Artista
Reações: 0
Mensagens: 62
Localização: BH

Contato:

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

Mensagem por Mysterious Stranger » 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
Programador
Programador
Reações: 0
Mensagens: 2

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

Mensagem por Kapoty » Sex Set 06, 2019 11:52 pm

Outra maneira seria:

Código: Selecionar todos

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

Avatar do usuário
Mysterious Stranger
Artista
Artista
Reações: 0
Mensagens: 62
Localização: BH

Contato:

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

Mensagem por Mysterious Stranger » Sáb Set 07, 2019 6:05 pm

Kapoty escreveu:Outra maneira seria:

Código: Selecionar todos

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:

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante