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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 2 3 [4] 5
31  Programación / Programación C/C++ / Re: [C++] detectar una subida de nivel 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  ;-)
32  Programación / Programación C/C++ / Re: c/c++ y qt en: 19 Septiembre 2012, 19:45 pm
Saludos yo tambien estoy aprendiendo qt y c++, hace poco compile la beta de qt5 y qtcreator

he estado aprendiendo con estos tutos de qt4

http://www.youtube.com/playlist?list=PL2D1942A4688E9D63&feature=plcp

que hasta donde boy son compatibles con qt5
33  Programación / Programación C/C++ / Re: [C++] detectar una subida de nivel 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.  
34  Programación / Programación C/C++ / Re: [C++] detectar una subida de nivel 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.
35  Programación / Programación C/C++ / [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.
36  Programación / Programación C/C++ / Re: duda con flex y bison en: 27 Agosto 2012, 04:04 am
Flex es un compilador cruzado, es decir, recibe un código y genera código para otro compilador. No deberías modificar su salida, cada vez que quieras realizar un cambio modificas el fuente, generalmente con extensión l, y vuelves a procesarlo con flex.

La salida de flex puede ser directamente compilada, sin más procesamiento. Si tienes el main dentro del fuente de lex, su salida puede ser compilada y enlazada para genera el ejecutable. Este es un ejemplo clásico de este caso:

Código
  1. int nl = 0, nc = 0;
  2. %%
  3. \n  ++nl; ++nc;
  4. .   ++nc;
  5. %%
  6. int main()
  7. {
  8.    yylex();
  9.    printf( "%d caracteres en %d lineas\n", nc, nl);
  10.    return 0;
  11. }

Procesar con flex y compilar:

Código
  1. $flex test.l
  2. $gcc -o test lex.yy.c


Saludos gracias por la respuesta.

eso es a lo que me refiero el archivo que genereas a partir del lex.yy.c es mas parecido a un interprete, lo que quiero (sin animo de crear nada serio) es un compilador.

pd : el codigo deberia ir asi
Código
  1. %{
  2. int nl = 0, nc = 0;
  3. %}
  4. %%
  5. \n  ++nl; ++nc;
  6. .   ++nc;
  7. %%
  8. int main()
  9. {
  10.    yylex();
  11.    printf( "%d caracteres en %d lineas\n", nc, nl);
  12.    return 0;
  13. }
  14.  

37  Programación / Programación C/C++ / su opinion acerca de clang en: 27 Agosto 2012, 03:40 am
clang funciona en linux, BSD (FreeBSD lo usara como su compilador por defecto en su version 10), en otros *nix y windows(segun he visto en su pagina) su redimiento es por mucho superior a GCC y sus sintaxis es casi la misma, su soporte para C++ no esta bueno como el de GCC pero no estan muy lejos ademas su soporte para Objective-C/Objective-c++ es mejor y sus mensaje de error son mas claros , usteden creen que renplace por completo a GCC ?
38  Programación / Programación C/C++ / duda con flex y bison en: 27 Agosto 2012, 03:04 am
Saludos,
estoy aprendiendo flex y bison bajo c, pero me surge una duda, solo he visto lo basico de flex y me doy cuenta que es como un interprete (al estilo rails), es decir no puedo utilizarlo para traducir directamente el codigo que introduzca a c y luego compilar el codigo de c.  espero haberme expresado correctamente.
39  Programación / Programación General / Tutorial objective-c Linux/FreeBSD en: 12 Agosto 2012, 23:08 pm


Por que objective-c y no c++ ?

objective-c tiene muchas ventajas sobre c++ en el manejo de memoria,  pero la mas interesante que no trataremos por ahora es objective-c++ que permite combinar codigo de c++ dentro de objective-c.

como compilar ?


primero instalar

En FreeBSD instala : devel/gnustep


En linux depende de cada distro

en gentoo http://www.gentoo-wiki.info/GNUstep

en ubuntu es muy facil solo tienes que buscar los paquetes gobjc++ clang  y gnustep-devel en synaptic.

lamentablemente no tengo tiempo para probar con mas distros lo mejor seria revisar las respectivas wikis

modo general (hay otras maneras que veremos en otros tutos)

Crea un archivo llamado

GNUmakefile

y escribe en el lo siguiente


Código:
# Sample GNUmake file

include $(GNUSTEP_MAKEFILES)/common.make

APP_NAME = HelloWorld
HelloWorld_HEADERS =
HelloWorld_OBJC_FILES = hello.m
HelloWorld_RESOURCE_FILES =

include $(GNUSTEP_MAKEFILES)/application.make

ejecute en linux :

Código:
. /usr/share/GNUstep/Makefiles/GNUstep.sh (puede cambiar en cada distro lo mejor es usar "locate GNUstep.sh" )

En FreeBSD

Código:
. /usr/local/GNUstep/System/Library/Makefiles/GNUstep.sh  (probado en FreeBSD 9)

código de ejemplo

Código:
#import <Foundation/Foundation.h>


int main(int argc, char *argv[])
{

   NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 
   NSLog(@"yoxter te saluda");
 
   [pool drain];

return 0;
}

pondremos esta código en la misma carpeta que el GNUmakefile y lo nombraremos hello.m


ejecutaremos gmake en FreeBSD y make en Linux


si todo sale bien

podremos ejecutar

Código:
openapp ./HelloWorld

y debería salir algo así

Código:
2012-07-28 06:31:21.891 HelloWorld[10483] yoxter te saluda

Bueno hemos logrado compilar ahora lo mas importante explicar el código (espero explicarlo bien )

Código:
#import <Foundation/Foundation.h>

si bienes de C notaras que es como el #include, para los que no, esto lo que hace es incluir un archivo llamado Foundation.h dentro de nuestro archivo hello.m, el Foundation.h contiene un conjunto de funciones que ya fueron hechas por otra persona y que están lista para que las usemos.

Código:
int main(int argc, char *argv[]) { }

La función main (la función principal). es lo primero que se ejecuta en nuestro programa.
no quiero indagar mucho en esto de momento para no confundir, por ahora solo diré que "int argc, char *argv[]" son usadas para detectar argumentos pasado por la linea de comandos y que las llaves "{ }" existen para delimitar la función main.

Código:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

 [pool drain];

También funcionan como llaves para delimitar,


lo que hace básicamente es

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init] le pide a la computadora que le preste algo de memoria


y [pool drain] la devuelve una vez que no la necesita mas.


Código:
NSLog(@"yoxter te saluda");

si vienen de c/c++ esto es como un cout o un printf (mas parecido a este ultimo), para los que no, como se habrán dado cuenta lo que esto es mostrar por pantalla  una cadena de caracteres (string), "yoxter te saluda" puede ser cambiado por cualquier cosa

como habrán notado todas las acciones dentro del main terminan como un ;

Código:
return 0;

por tradición en unix cuando un programa ha sido ejecutado correctamente devuelve un 0 (y cunado se ejecuta mal cualquier otro numero dependiendo de donde se haya producido el error). notaran que este 0 no se muestra al ejecutar programa.

después de ejecutar el programa (sin haber ejecutado otro desde la terminal), ejecuta "echo $?" y veras el 0
puedes cambiar este numero por el que quieras,

Salu2

PD: esto debio publicarse antes pero lo olvide  :xD
40  Programación / Programación C/C++ / Re: Iniciar una aplicacion con linux. en: 12 Agosto 2012, 05:40 am
déjame entender lo que quieres, desde c++ hacer una configurarcion que te inicia una app en linux ?

eso depende del entorno gráfico en el que usuario este y todos los que conozco tienen un archivo de configuración para aplicaciones de inicio, algunos requieren permiso de usperuser para editarse y lo otro que funciona en cualquier linux seria editar los init levels. o si lo que quieres es crear algo como un modulo de kernel recurre a modprobe y insmod.
Páginas: 1 2 3 [4] 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines