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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 [3] 4
21  Programación / Programación C/C++ / Re: problema vectores, allegro. en: 10 Enero 2012, 23:23 pm
A ver:

float posxf=0;

posxf+=0.2;
putpixel(BITMAP *bmp, posf, int y, int color);

No hace nada.

posxf+=0.2;
putpixel(BITMAP *bmp, posf, int y, int color);

No hace nada.

posxf+=0.2;
putpixel(BITMAP *bmp, posf, int y, int color);

No hace nada.

posxf+=0.2;
putpixel(BITMAP *bmp, posf, int y, int color);
No hace nada.

posxf+=0.2;
putpixel(BITMAP *bmp, posf, int y, int color);

Avanza un píxel (posf ahora con el cast vale 1, antes 0).

Así es como lo tienes que hacer, vas sumando la posición al float y luego se lo pasas a la función que lo dibuje como entero, los decimales se desprecian pero cada x frames avanza un píxel. De ese modo no te tienes que preocupar por qué valores das a la velocidad, ya se moverá cuando se tenga que mover.

Al pasarle el float a la función, que acepta enteros, hará automáticamente un cast, asi que no te tienes que preocupar. Si quieres evitar el warning haz el cast a mano al pasar el argumento ( (int)posxf );
22  Seguridad Informática / Desafíos - Wargames / Re: Problemas lógicos en: 9 Enero 2012, 20:49 pm
No se lo que es pensamiento lateral, sea lo que sea, no hay ningun "otro camino" el problema es como se pinta, solo aplica la lógica xD

Edito: Ya he buscado lo que es el pensamiento lateral y ya se por donde vas, como he dicho antes, no hay trampa, aplica la lógica, sobre todo en el primero xDDDD

El primero ya lo se ahora xD

El tercero también (ya es tarde :P)

Pero en los otros 2 no caigo, la falta de sueño será xDDD
23  Seguridad Informática / Desafíos - Wargames / Re: Problemas lógicos en: 9 Enero 2012, 20:10 pm
De todas formas más que de lógica diría que son problemas de pensamiento lateral. Y yo parece que no voy a dar ni una xDDD
24  Seguridad Informática / Desafíos - Wargames / Re: Problemas lógicos en: 9 Enero 2012, 19:25 pm
¿Para que **** dices la solución?

Si no la hubieses quoteado no me habría enterado :S Ahora ya no hay remedio xD
25  Programación / Programación C/C++ / Re: problema vectores, allegro. en: 9 Enero 2012, 02:16 am
Tienes razon, mejor trabajar con vectores que con 2 variables.
Sobre tu planteamiento...
El vector unitario tiene de modulo 1, por tanto el desplazamiento en x y en y va a ser menor de uno por cada frame, y no puedo desplazarme medios pixeles. Al pasarlo a int va a ser siempre 0. (si no me equivoco).

Él te dice que saques el vector unitario y luego lo multipliques por la velocidad que desees. Por otro lado un entero se redondea siempre a 0, pero si mantienes las variables de la posición como float los pequeños incrementos se irán acumulando y avanzará el píxel en cuanto llegue. Así que deberías trabajar siempre con floats y hacer el cast en el momento de dibujar.

En cualquier caso yo haría algo así (Puede que haya errores, ahora no puedo probar, sólo tengo el bloc de notas xD):

Código
  1. float tan, ang, vx, vy, velocidad; //Deberias pasar todo a floats
  2.  
  3.  
  4. if (posx==derx && posy==dery) // Ponemos la velocidad a 0 cuando alcanzamos la posicion (Creo que seria conveniente hacer algo como if( posx>(derx-0.001)&&posx<(derx+0.001) && posy>(dery-0.001)&&posy<(dery+0.001) )por la posible imprecision que tienen los float
  5. {
  6. vx=0;
  7. vy=0;
  8. }
  9. else
  10. {
  11. if (derx-posx==0) //Si no hay x la velocidad esta en y
  12. {
  13. vx=0;
  14. if(dery-posy>0) //Si esta por encima
  15. vy=velocidad;
  16. else
  17. VY=-velocidad;
  18. }
  19. else
  20. {
  21. tan= (dery-posy)/(derx-posx) //No te olvides de los parentesis
  22. ang=(float)atan((double)tan);//Según cómo lo hagas deberías tener en cuenta si la velocidad es positiva o negativa, no me apetece poner los if ahora xD
  23. vy = (sin(angulo)*velocidad);
  24. vx = (cos(angulo)*velocidad); //creo que los cast son automaticos, si no los pones, también se podrian quitar en la atan ya que creo que sale sólo un warning, pero no estoy seguro (no lo puedo comprobar ahora)
  25. }
  26. }
  27.  
  28. //Todo lo anterior debería ejecutarse sólo una vez al hacer clik, luego sólo tendrías que comprobar si ya ha llegado al final para poner la velocidad a 0.
  29.  
  30. posy+=vy;
  31. posx+=vx;
  32.  

La opción del vector unitario también está bien pero pierdes la opción de mover el personaje con las teclas al no tener la dirección, con éste método le das un ángulo en radianes y se va moviendo.

En cuanto a lo de que no se mueva demasiado rápido lo que tienes que hacer es 1º jugar con el valor que le das a la velocidad y sobre todo tener en cuenta que el framerrate puede variar sobre según el equipo, así que deberías calcular los ms entre frame y frame para adaptarla.

Algo tipo

Código
  1. posy+=vy*msTranscurridos;
  2. posx+=vx*msTranscurridos;
  3.  

Siendo msTrancurridos el tiempo que ha pasado desde el último frame. Otra opción es dejar el framerrate fijo (haciendo que el código sólo se ejecute cada x milisegundos) y olvidar ésto, pero en equipos lentos además de reducir el framerate se reducirá la velocidad.
26  Programación / Programación C/C++ / Re: problema vectores, allegro. en: 8 Enero 2012, 17:13 pm
A ver, sacas la tangente, de ahí el ángulo, con el ángulo y el módulo (módulo*cos ang y módulo*sen ang) sacas el vector velocidad y a partir de ahí haces la suma.

Con tu código lo si se mueve es pura casualidad xD
27  Programación / Programación C/C++ / Re: problema vectores, allegro. en: 8 Enero 2012, 16:37 pm
Lo que yo no entiendo es el por qué de esa división xD Lo lógico sería hacerlo al revés para obtener la tangente...

De todas formas a mí los floats nunca se me han quedado a cero exacto, aunque podría ser.
28  Programación / Programación C/C++ / Re: problema vectores, allegro. en: 6 Enero 2012, 17:18 pm
¿El segundo código va dentro de un while? ¿Cuál es la condición de parada?

Así sin mirar mucho el programa no parece que hayas accedido a memoria que no debes por lo que lo normal es que se te cuelgue si entra en bucle infinito.

De todas formas no he hecho mucho caso al código por que me parece raro de cojones, ¿Por qué no te limitas a sumar a la posición un vector velocidad multiplicado por el tiempo entre frames?
29  Programación / Programación C/C++ / Re: Desarrollo Freelance en C++ ... Donde.. Donde.? en: 5 Septiembre 2011, 20:48 pm
Hey.! Buscando por inter.. Encontré ciertos sitios... Donde el desarrollo se hace vía Freelance.. Con buena paga.. Pero la pregunta seria.. Son fiables.? Alguno de ustedes han trabajado en proyectos freelance.? Que probabilidad tengo de que me cancelen lo que programo.?


Saludos ;)

¿Puedes decirnos qué sitios son esos?
30  Programación / Programación C/C++ / Re: problema con ciclo for!!! en visual c++ 2010 en: 22 Agosto 2011, 14:08 pm
No entiendo nada :P (Estoy aprendiendo). En cualquier caso deberías usar las etiquetas "code=cpp" y "/code" (cambiando los paréntesis por corchetes) para que quede más claro y se vean bien las tabulaciones:

Código
  1. void inserta_modelo(empresa empresas[], int cont)
  2. {
  3. char emp[5]; //el nombre que entre en consola
  4. //cont = 0; // donde pretendemos guardar la posicion de la empresa en base_datos
  5. //cout<<"============================…
  6. //cout<<"| Insercion de modelo |"<<endl;
  7. //cout<<"|___________________________…
  8. //cout<<"| Para ingresar el modelo es necesario que indique el nombre |"<<endl;
  9. //cout<<"| de la empresa en la que lo quiere ingresar: "<<endl;
  10. cin>>emp;
  11. cout<< empresas[cont].cant_modelo;
  12. for (int i = 0; i<empresas[cont].cant_modelo;i++){
  13. char temporal[5];
  14. cout<<" ****** absurda";
  15. strcpy(temporal, empresas[cont].nombre);
  16.  
  17. if (strcmp(temporal,emp) == 0){
  18. char descripcion[50];
  19. int cantidad;
  20. int precio;
  21. int codigo_barras;
  22. cout<<"============================…
  23. cout<<"| El nombre de la empresa es correcto, ahora puede ingresar"<<endl;
  24. cout<<"| los datos del modelo "<<endl;
  25. cout<<"|_________________________"<…
  26. cout<<"| descripcion del modelo: "<<endl;
  27. cin>>descripcion;
  28. cout<<"| cantidad de articulos disponibles: "<<endl;
  29. cin>>cantidad;
  30. cout<<"| precio para el cliente: "<<endl;
  31. cin>>precio;
  32. cout<<"| codigo de referencia: "<<endl;
  33. cin>>codigo_barras;
  34. int nuevo_modelo = empresas[cont].cant_modelo;
  35.  
  36.  
  37. empresas[cont].cant_modelo = nuevo_modelo++; //aumenta la cantidad de modelos de esa empresa
  38. model [cont].descripcion[nuevo_modelo];// descripcion; //asigna la descripcion del modelo que se esta ingresando
  39. empresas[cont].lista[nuevo_modelo].… = precio; //asigna el precio del modelo que se esta ingresando
  40. empresas[cont].lista[nuevo_modelo].… = cantidad; //asigna la cantidad disponible del modelo que se esta ingresando
  41. empresas[cont].lista[nuevo_modelo].… = codigo_barras; //asigna el codigo
  42. }
  43.  
  44. }
  45. cont++;
  46. getch();
  47.  
  48. cout<< "modelo numero: "<<endl;
  49. cout << cont<<endl;
  50. cout<<"Presione cualquier tecla para continuar..."<<endl;
  51. getch();
  52.  
  53. }

De todas formas si empresas[cont].cant_modelo es superior a 0 debería ejecutar el bucle. Y creo que te faltan unas comillas sin las cuales como ves sale todo en rojo.
Páginas: 1 2 [3] 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines