elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] detectar una subida de nivel
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] detectar una subida de nivel  (Leído 2,175 veces)
yoxter

Desconectado Desconectado

Mensajes: 48



Ver Perfil
[C++] detectar una subida de nivel
« en: 19 Septiembre 2012, 00:00 am »

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.

Código
  1. #include <iostream>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. int main() {
  7.  
  8. long int level[100];
  9. level[0] = 100;
  10. //long int xp = 0;
  11.  
  12. cout << "nivel " << 1 << " = " << 0 << endl;
  13.  
  14. //cin >> xp;
  15. int i = 0;
  16. for (i = 1; i < 100; i++) {
  17.  
  18.  
  19.  
  20. cout << "nivel " << i + 1 << " = " << level[i-1] << endl;
  21.  
  22.    level[i] = level[i-1] + level[i-1] * 0.2;  
  23.  
  24.  /* if (level[i] >=! xp) {
  25.  
  26. if (xp >= level[i] ) {
  27.  
  28.  
  29.  
  30. cout << level[i] << endl;
  31.  
  32.  
  33.  
  34. }
  35.  
  36. } */
  37.  
  38.  
  39. }
  40.  
  41. }
  42.  
  43.  
  44.  
  45.  
  46.  


Gracias de antemano.


En línea




Posiblemente soy el intento de programador mas fracaso de la historia !!
El_Java

Desconectado Desconectado

Mensajes: 144



Ver Perfil WWW
Re: [C++] detectar una subida de nivel
« Respuesta #1 en: 19 Septiembre 2012, 00:22 am »

¿Por qué no pruebas algo así?
Código
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iterator>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.    int experiencia, *levels;
  10.    levels = new int[3];
  11.    // levels[indice] = EXPERIENCIA
  12.    levels[0] = 0;
  13.    levels[1] = 100;
  14.    levels[2] = 500;
  15.  
  16.    cin >> experiencia;
  17.    int* ptr = upper_bound(levels, levels+3, experiencia);
  18.  
  19.    int l = (int)(ptr-levels);
  20.    cout << "level: " << l << endl;
  21.  
  22.    return 0;
  23. }
  24.  

Puede que haya algún fallo, lo he hecho demasiado rápido y tengo oxidado el estándar.


En línea

yoxter

Desconectado Desconectado

Mensajes: 48



Ver Perfil
Re: [C++] detectar una subida de nivel
« Respuesta #2 en: 19 Septiembre 2012, 00:54 am »

¿Por qué no pruebas algo así?
Código
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iterator>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.    int experiencia, *levels;
  10.    levels = new int[3];
  11.    // levels[indice] = EXPERIENCIA
  12.    levels[0] = 0;
  13.    levels[1] = 100;
  14.    levels[2] = 500;
  15.  
  16.    cin >> experiencia;
  17.    int* ptr = upper_bound(levels, levels+3, experiencia);
  18.  
  19.    int l = (int)(ptr-levels);
  20.    cout << "level: " << l << endl;
  21.  
  22.    return 0;
  23. }
  24.  

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.
En línea




Posiblemente soy el intento de programador mas fracaso de la historia !!
yoxter

Desconectado Desconectado

Mensajes: 48



Ver Perfil
Re: [C++] detectar una subida de nivel
« Respuesta #3 en: 19 Septiembre 2012, 03:13 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

Código
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iterator>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.    int experiencia, *levels;
  10.    levels = new int[99];
  11.    // levels[indice] = EXPERIENCIA
  12. levels[0] = 0;
  13. levels[1] = 100;
  14. levels[2] = 120;
  15. levels[3] = 144;
  16. levels[4] = 172;
  17. levels[5] = 206;
  18. levels[6] = 247;
  19. levels[7] = 296;
  20. levels[8] = 355;
  21. levels[9] = 426;
  22. levels[10] = 511;
  23. levels[11] = 613;
  24. levels[12] = 735;
  25. levels[13] = 882;
  26. levels[14] = 1058;
  27. levels[15] = 1269;
  28. levels[16] = 1522;
  29. levels[17] = 1826;
  30. levels[18] = 2191;
  31. levels[19] = 2629;
  32. levels[20] = 3154;
  33. levels[21] = 3784;
  34. levels[22] = 4540;
  35. levels[23] = 5448;
  36. levels[24] = 6537;
  37. levels[25] = 7844;
  38. levels[26] = 9412;
  39. levels[27] = 11294;
  40. levels[28] = 13552;
  41. levels[29] = 16262;
  42. levels[30] = 19514;
  43. levels[31] = 23416;
  44. levels[32] = 28099;
  45. levels[33] = 33718;
  46. levels[34] = 40461;
  47. levels[35] = 48553;
  48. levels[36] = 58263;
  49. levels[37] = 69915;
  50. levels[38] = 83898;
  51. levels[39] = 100677;
  52. levels[40] = 120812;
  53. levels[41] = 144974;
  54. levels[42] = 173968;
  55. levels[43] = 208761;
  56. levels[44] = 250513;
  57. levels[45] = 300615;
  58. levels[46] = 360738;
  59. levels[47] = 432885;
  60. levels[48] = 519462;
  61. levels[49] = 623354;
  62. levels[50] = 748024;
  63. levels[51] = 897628;
  64. levels[52] = 1077153;
  65. levels[53] = 1292583;
  66. levels[54] = 1551099;
  67. levels[55] = 1861318;
  68. levels[56] = 2233581;
  69. levels[57] = 2680297;
  70. levels[58] = 3216356;
  71. levels[59] = 3859627;
  72. levels[60] = 4631552;
  73. levels[61] = 5557862;
  74. levels[62] = 6669434;
  75. levels[63] = 8003320;
  76. levels[64] = 9603984;
  77. levels[65] = 11524780;
  78. levels[66] = 13829736;
  79. levels[67] = 16595683;
  80. levels[68] = 19914819;
  81. levels[69] = 23897782;
  82. levels[70] = 28677338;
  83. levels[71] = 34412805;
  84. levels[72] = 41295366;
  85. levels[73] = 49554439;
  86. levels[74] = 59465326;
  87. levels[75] = 71358391;
  88. levels[76] = 85630069;
  89. levels[77] = 102756082;
  90. levels[78] = 123307298;
  91. levels[79] = 147968757;
  92. levels[80] = 177562508;
  93. levels[81] = 213075009;
  94. levels[82] = 255690010;
  95. levels[83] = 306828012;
  96. levels[84] = 368193614;
  97. levels[85] = 441832336;
  98. levels[86] = 530198803;
  99. levels[87] = 636238563;
  100. levels[88] = 763486275;
  101. levels[89] = 916183530;
  102. levels[90] = 1099420236;
  103. levels[91] = 1319304283;
  104. levels[92] = 1583165139;
  105. levels[93] = 1899798166;
  106. levels[94] = 2279757799;
  107. levels[95] = 2735709358;
  108. levels[96] = 3282851229;
  109. levels[97] = 3939421474;
  110. levels[98] = 4727305768;
  111. levels[99] = 5672766921;
  112.  
  113.  
  114.    cin >> experiencia;
  115.    int* ptr = upper_bound(levels, levels+99, experiencia);
  116.  
  117.    int l = (int)(ptr-levels);
  118.    cout << "level: " << l << endl;
  119.  
  120.    return 0;
  121. }
  122.  
  123.  
  124.  
En línea




Posiblemente soy el intento de programador mas fracaso de la historia !!
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: [C++] detectar una subida de nivel
« Respuesta #4 en: 19 Septiembre 2012, 19:46 pm »

Mira haber si esto te sirve o es lo que buscas.

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.    int GetCurrentLevel(int);
  5.    unsigned int CurrentExp=510;
  6.    unsigned int Levels[10];
  7.  
  8. int main(int argc,char* argv[]){
  9.    Levels[0]=100;
  10.    for(int i=1;i<10;i++){
  11.        Levels[i]= Levels[i-1] + Levels[i-1] * 0.2;
  12.    }
  13.    for(int i=0;i<10;i++)cout << "nivel "<< i+1 << ": " << Levels[i] << endl;
  14.    cout << "Tu experiencia es " << CurrentExp << " que corresponde al nivel: " << GetCurrentLevel(CurrentExp)<< endl;
  15.    return 0;
  16. }
  17.  
  18. int GetCurrentLevel(int x){
  19.    for(int i=0;i<10;i++){
  20.        if(x>=Levels[i] && x<Levels[i+1])return i+1;
  21.        else if(x<Levels[0])return 0;
  22.        else if(x>=Levels[9])return 10;
  23.    }
  24. }
  25.  
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
yoxter

Desconectado Desconectado

Mensajes: 48



Ver Perfil
Re: [C++] detectar una subida de nivel
« Respuesta #5 en: 19 Septiembre 2012, 21:06 pm »

Mira haber si esto te sirve o es lo que buscas.

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.    int GetCurrentLevel(int);
  5.    unsigned int CurrentExp=510;
  6.    unsigned int Levels[10];
  7.  
  8. int main(int argc,char* argv[]){
  9.    Levels[0]=100;
  10.    for(int i=1;i<10;i++){
  11.        Levels[i]= Levels[i-1] + Levels[i-1] * 0.2;
  12.    }
  13.    for(int i=0;i<10;i++)cout << "nivel "<< i+1 << ": " << Levels[i] << endl;
  14.    cout << "Tu experiencia es " << CurrentExp << " que corresponde al nivel: " << GetCurrentLevel(CurrentExp)<< endl;
  15.    return 0;
  16. }
  17.  
  18. int GetCurrentLevel(int x){
  19.    for(int i=0;i<10;i++){
  20.        if(x>=Levels[i] && x<Levels[i+1])return i+1;
  21.        else if(x<Levels[0])return 0;
  22.        else if(x>=Levels[9])return 10;
  23.    }
  24. }
  25.  


Muchas gracias este metodo tambien funciona, ya estare viendo cual se adapta mejor a mi problema a medida que avance  ;-)
En línea




Posiblemente soy el intento de programador mas fracaso de la historia !!
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: [C++] detectar una subida de nivel
« Respuesta #6 en: 19 Septiembre 2012, 21:16 pm »

Cualquier cosa me avisa que me gusta mucho el desarrollo de juegos. Suerte
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
hook a nivel aplicaciòn no a nivel sistema AYUDA
Programación Visual Basic
irra_b 1 3,098 Último mensaje 9 Julio 2006, 01:54 am
por NYlOn
Software para detectar tasa de subida / bajada por maquina
Redes
Hadess_inf 1 3,243 Último mensaje 23 Septiembre 2011, 17:53 pm
por madpitbull_99
Diferencia entre modo mantenimiento (nivel 1) y modo gráfico (nivel 5)
GNU/Linux
ccrunch 1 2,891 Último mensaje 26 Julio 2012, 04:11 am
por Epzylon
Subida - BitTorrent
Redes
Topol-M 1 1,439 Último mensaje 14 Septiembre 2014, 00:10 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines