Saludos, solo por diversion decidi empezar a realizar un rpg, pero tengo problemas para detectar en que lvl esta el personaje dependiendo de su experiencia. el codigo comentado es lo que se me ocurrio para detectar el nivel pero solo elimina los niveles superiores.
#include <iostream>
using namespace std;
int main() {
long int level[100];
level[0] = 100;
//long int xp = 0;
cout << "nivel " << 1 << " = " << 0 << endl;
//cin >> xp;
int i = 0;
for (i = 1; i < 100; i++) {
cout << "nivel " << i + 1 << " = " << level[i-1] << endl;
level[i] = level[i-1] + level[i-1] * 0.2;
/* if (level[i] >=! xp) {
if (xp >= level[i] ) {
cout << level[i] << endl;
}
} */
}
}
Gracias de antemano.
¿Por qué no pruebas algo así?
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main(){
int experiencia, *levels;
levels = new int[3];
// levels[indice] = EXPERIENCIA
levels[0] = 0;
levels[1] = 100;
levels[2] = 500;
cin >> experiencia;
int* ptr = upper_bound(levels, levels+3, experiencia);
int l = (int)(ptr-levels);
cout << "level: " << l << endl;
return 0;
}
Puede que haya algún fallo, lo he hecho demasiado rápido y tengo oxidado el estándar.
Cita de: El_Java en 19 Septiembre 2012, 00:22 AM
¿Por qué no pruebas algo así?
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main(){
int experiencia, *levels;
levels = new int[3];
// levels[indice] = EXPERIENCIA
levels[0] = 0;
levels[1] = 100;
levels[2] = 500;
cin >> experiencia;
int* ptr = upper_bound(levels, levels+3, experiencia);
int l = (int)(ptr-levels);
cout << "level: " << l << endl;
return 0;
}
Puede que haya algún fallo, lo he hecho demasiado rápido y tengo oxidado el estándar.
Gracias por la respuesta
Saludos es muy interesante (no entiendo lo que hace :rolleyes:) pero no detecta niveles arriba del 3.
Cita de: yoxter en 19 Septiembre 2012, 00:54 AM
Gracias por la respuesta
Saludos es muy interesante (no entiendo lo que hace :rolleyes:) pero no detecta niveles arriba del 3.
retiro lo dicho funciona de maravilla hay un par de warnings por corregir pero luego me preocupo por eso muchas gracias al final me quedo asi
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main(){
int experiencia, *levels;
levels = new int[99];
// levels[indice] = EXPERIENCIA
levels[0] = 0;
levels[1] = 100;
levels[2] = 120;
levels[3] = 144;
levels[4] = 172;
levels[5] = 206;
levels[6] = 247;
levels[7] = 296;
levels[8] = 355;
levels[9] = 426;
levels[10] = 511;
levels[11] = 613;
levels[12] = 735;
levels[13] = 882;
levels[14] = 1058;
levels[15] = 1269;
levels[16] = 1522;
levels[17] = 1826;
levels[18] = 2191;
levels[19] = 2629;
levels[20] = 3154;
levels[21] = 3784;
levels[22] = 4540;
levels[23] = 5448;
levels[24] = 6537;
levels[25] = 7844;
levels[26] = 9412;
levels[27] = 11294;
levels[28] = 13552;
levels[29] = 16262;
levels[30] = 19514;
levels[31] = 23416;
levels[32] = 28099;
levels[33] = 33718;
levels[34] = 40461;
levels[35] = 48553;
levels[36] = 58263;
levels[37] = 69915;
levels[38] = 83898;
levels[39] = 100677;
levels[40] = 120812;
levels[41] = 144974;
levels[42] = 173968;
levels[43] = 208761;
levels[44] = 250513;
levels[45] = 300615;
levels[46] = 360738;
levels[47] = 432885;
levels[48] = 519462;
levels[49] = 623354;
levels[50] = 748024;
levels[51] = 897628;
levels[52] = 1077153;
levels[53] = 1292583;
levels[54] = 1551099;
levels[55] = 1861318;
levels[56] = 2233581;
levels[57] = 2680297;
levels[58] = 3216356;
levels[59] = 3859627;
levels[60] = 4631552;
levels[61] = 5557862;
levels[62] = 6669434;
levels[63] = 8003320;
levels[64] = 9603984;
levels[65] = 11524780;
levels[66] = 13829736;
levels[67] = 16595683;
levels[68] = 19914819;
levels[69] = 23897782;
levels[70] = 28677338;
levels[71] = 34412805;
levels[72] = 41295366;
levels[73] = 49554439;
levels[74] = 59465326;
levels[75] = 71358391;
levels[76] = 85630069;
levels[77] = 102756082;
levels[78] = 123307298;
levels[79] = 147968757;
levels[80] = 177562508;
levels[81] = 213075009;
levels[82] = 255690010;
levels[83] = 306828012;
levels[84] = 368193614;
levels[85] = 441832336;
levels[86] = 530198803;
levels[87] = 636238563;
levels[88] = 763486275;
levels[89] = 916183530;
levels[90] = 1099420236;
levels[91] = 1319304283;
levels[92] = 1583165139;
levels[93] = 1899798166;
levels[94] = 2279757799;
levels[95] = 2735709358;
levels[96] = 3282851229;
levels[97] = 3939421474;
levels[98] = 4727305768;
levels[99] = 5672766921;
cin >> experiencia;
int* ptr = upper_bound(levels, levels+99, experiencia);
int l = (int)(ptr-levels);
cout << "level: " << l << endl;
return 0;
}
Mira haber si esto te sirve o es lo que buscas.
#include <iostream>
using namespace std;
int GetCurrentLevel(int);
unsigned int CurrentExp=510;
unsigned int Levels[10];
int main(int argc,char* argv[]){
Levels[0]=100;
for(int i=1;i<10;i++){
Levels[i]= Levels[i-1] + Levels[i-1] * 0.2;
}
for(int i=0;i<10;i++)cout << "nivel "<< i+1 << ": " << Levels[i] << endl;
cout << "Tu experiencia es " << CurrentExp << " que corresponde al nivel: " << GetCurrentLevel(CurrentExp)<< endl;
return 0;
}
int GetCurrentLevel(int x){
for(int i=0;i<10;i++){
if(x>=Levels[i] && x<Levels[i+1])return i+1;
else if(x<Levels[0])return 0;
else if(x>=Levels[9])return 10;
}
}
Cita de: Xafi en 19 Septiembre 2012, 19:46 PM
Mira haber si esto te sirve o es lo que buscas.
#include <iostream>
using namespace std;
int GetCurrentLevel(int);
unsigned int CurrentExp=510;
unsigned int Levels[10];
int main(int argc,char* argv[]){
Levels[0]=100;
for(int i=1;i<10;i++){
Levels[i]= Levels[i-1] + Levels[i-1] * 0.2;
}
for(int i=0;i<10;i++)cout << "nivel "<< i+1 << ": " << Levels[i] << endl;
cout << "Tu experiencia es " << CurrentExp << " que corresponde al nivel: " << GetCurrentLevel(CurrentExp)<< endl;
return 0;
}
int GetCurrentLevel(int x){
for(int i=0;i<10;i++){
if(x>=Levels[i] && x<Levels[i+1])return i+1;
else if(x<Levels[0])return 0;
else if(x>=Levels[9])return 10;
}
}
Muchas gracias este metodo tambien funciona, ya estare viendo cual se adapta mejor a mi problema a medida que avance ;-)
Cualquier cosa me avisa que me gusta mucho el desarrollo de juegos. Suerte