Sistema de level e XP!

Bom, parecia ser simples, mas ao tentar várias vezes nao consegui. Explicação:

Tenho um valor de XP, e preciso descobrir o level que ele representa, sendo:

Level 0 = 1000
Level 1 = 2000
Level 2 = 4000
Level X = Y

Ou seja, o XP do level é o XP do anterior vezes 2, porém os leveis não possuem limite, e queria fazer um metódo que ao passar a quantidade de XP, retornaria o level em que está…

Obrigado.

Bom… sem pensar muito nas possíveis melhores opções, vai uma (não testei, mas é uma lógica que pode tentar):

int pts = 1000;
int pontos = <valor_descobrir>;
int level = 0;
for (; pts < pontos; level = level+1) {
     pts = pts * level+1;
}

Provavelmente existe técnicas melhores… mas deixarei você pensar a respeito. :smiley:

Não funcionou, por exemplo, se o XP passado era 1001, retornava level 7, sendo que seria o Level 1.

A tua pontuação aumenta exponencialmente com base 2, multiplicada por mil, então necessitas de logaritmo para obter o inverso.

 int level0 = 1000; 
 int n = (points/level0) + 1;
 int level = (int) (Math.log(n)/ Math.log(2));
2 curtidas

Funcionou, obrigado.