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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: [SFML] Alguien me ayuda con los movimientos del personaje?? en: 29 Mayo 2022, 03:27 am
Transiciones, no recuerdo el nombre específico para easing in / easing out en castellano pero podrías probar el código de ease out quint para el comienzo del salto hasta el punto más alto y quizás ease in bounce para la caida.

Ver más algoritmos en easing.net

Te recomiendo una mirada a esta lista de youtube que utiliza SFML para realizar un juego estilo plataformer, en el juego 4 parte 7 comienza con gravedad.




Dale gracias ahora me pongo a ver algunos videos y cualquier cosa te consulto!! Muchas Gracias
2  Programación / Programación C/C++ / [SFML] Alguien me ayuda con los movimientos del personaje?? en: 25 Mayo 2022, 10:33 am
Hola mi duda es la siguiente este es un fragmento de mi código

Código
  1. void jugador::movimientos_jugador()
  2. {
  3. if(Keyboard::isKeyPressed(Keyboard::W)){
  4. spr_jugador.move(0, -0.5);
  5. y = 3;
  6. if(x<3)++x;
  7. else x = 0;
  8. }
  9. if(Keyboard::isKeyPressed(Keyboard::S)){
  10. spr_jugador.move(0, 0.5);
  11. y = 0;
  12. if(x<3)++x;
  13. else x = 0;
  14. }
  15. if(Keyboard::isKeyPressed(Keyboard::A)){
  16. spr_jugador.move(-1, 0);
  17. y = 1;
  18. if(x<3)++x;
  19. else x = 0;
  20. }
  21. if(Keyboard::isKeyPressed(Keyboard::D)){
  22. spr_jugador.move(1, 0);
  23. y = 2;
  24. if(x<3)++x;
  25. else x = 0;
  26. }
  27. }

Los valores de x e y son para ir movimiento el sprite luego... Mi duda es como puedo hacer que los sean mas realistas y no tan vectoriales con el move, que cálculos debería realizar...

Otra cosa que me gustaría y es que mi personaje tenga la habilidad de saltar este movimiento como se realiza, ya que, también va a poseer gravedad...

Acepto todo tipo de recomendaciones, tampoco tengo problema en reunirme y enseñar el código completo!
3  Programación / Programación C/C++ / Re: Función para colisiones - c++ /SFML en: 21 Febrero 2022, 03:22 am
Dale gracias por todo, cualquier duda que me surja o cualquier cosita escribo por el foro...
Dejo los libros para cualquier persona que quiera o quiera usarlos:

Libro en español e ingles: https://spectrumcomputing.co.uk/entry/2000347/Book/Spectrum_Adventures_A_Guide_to_Playing_and_Writing_Adventures
4  Programación / Programación C/C++ / Re: Función para colisiones - c++ /SFML en: 21 Febrero 2022, 01:05 am
Dale muchas gracias por todos los detalles y comentarios, esta noche me pongo a ver la idea e intentar plantear el programa, solo una pregunta.
Cuando me decís:
"Empieza por dibujar una mapa en un fichero de texto, similar al que te he puesto, de momento solo casillas libres y paredes.... luego programa la lectura del fichero a un array"
Para crear ese array o matriz definido anteriormente, su lectura la hago a través de un archivo de texto como binario o normal? Así luego pueda crear mas archivos, que tengan distintas paredes y objetos pero del mismo tamaño para poder hacer que el programa o el usuario elija uno de esos archivos para ir haciendo metódicamente mas niveles?
5  Programación / Programación C/C++ / Re: Función para colisiones - c++ /SFML en: 19 Febrero 2022, 23:16 pm
Hola, gracias
Mi pregunta es, seria como que haga antes de todo el desarrollo del juego en una clase mapa dividida en una matriz n*m asignando a cada cuadrado el valor como si fuera un tablero de ajedrez con su numero respectivo 1 y -1?
y que el jugador se mueva por cada paso o movimiento cada cuadrado de esa matriz y si el resultado da un x sea un lugar donde no este permitido pasar y esa sea la pared del laberinto?

Si es ese la idea no se muy bien como formar esa clase si tienes algún video explicativo o un link de alguna pagina me encantaría que me lo pases...
6  Programación / Programación C/C++ / Función para colisiones - c++ /SFML en: 17 Febrero 2022, 21:06 pm
Hola estoy teniendo un problema para poder hacer que varios rectángulos colisiones con el jugador para armar una especie de laberinto, este es el código de la función que quiero hacer:

Código
  1. void intersecciona(RectangleShape jugador, RectangleShape pared) {
  2.  
  3. FloatRect jug = jugador.getGlobalBounds();
  4. FloatRect pare = pared.getGlobalBounds();
  5.  
  6. if(jug.intersects(pare)){
  7.  
  8. if(jugador.getPosition().x<pared.getPosition().x)
  9. jugador.setPosition(jugador.getPosition().x-10, jugador.getPosition().y);
  10.  
  11. if(jugador.getPosition().x>pared.getPosition().x)
  12. jugador.setPosition(jugador.getPosition().x+10, jugador.getPosition().y);
  13.  
  14. if(jugador.getPosition().y<pared.getPosition().y)
  15. jugador.setPosition(jugador.getPosition().x, jugador.getPosition().y-10);
  16.  
  17. if(jugador.getPosition().y>pared.getPosition().y)
  18. jugador.setPosition(jugador.getPosition().x, jugador.getPosition().y+10);
  19. }
  20.  
  21. }

El programa asi funciona para una pared, pero seria incorrecto hacer los if para cada pared:

Código
  1. #include <SFML/Graphics.hpp>
  2. #include <iostream>
  3.  
  4. using namespace sf;
  5. using namespace std;
  6.  
  7. int main(){
  8. //Creamos la ventana
  9. RenderWindow window(sf::VideoMode(800, 600), "LABERINTO XD");
  10.  
  11. //Rectangualo
  12. RectangleShape rec(Vector2f(40, 40));
  13. rec.setFillColor(Color::Cyan);
  14.  
  15. //rec2es
  16. RectangleShape rec2(Vector2f(50, 300));
  17. rec2.setFillColor(Color::Magenta);
  18. rec2.setPosition(400, 300);
  19.  
  20. RectangleShape rec20(Vector2f(50, 230));
  21. rec20.setFillColor(Color::Magenta);
  22. rec20.setPosition(400, 0);
  23.  
  24. RectangleShape rec3(Vector2f(50, 500));
  25. rec3.setFillColor(Color::Magenta);
  26. rec3.setPosition(300,0);
  27.  
  28. RectangleShape rec4(Vector2f(50, 350));
  29. rec4.setFillColor(Color::Magenta);
  30. rec4.setPosition(200, 250);
  31.  
  32. RectangleShape rec5(Vector2f(50, 150));
  33. rec5.setFillColor(Color::Magenta);
  34. rec5.setPosition(1000, 100);
  35.  
  36. window.setFramerateLimit(120);
  37.  
  38. //Si la ventana está abierta
  39. while(window.isOpen()){
  40. //Creamos un evento
  41. Event ventana;
  42. //Llamamos a los eventos
  43. while(window.pollEvent(ventana)){
  44. //Cerramos la ventana cuando se solicite
  45. if(ventana.type == Event::Closed){
  46. window.close();
  47. }
  48. }
  49.  
  50. //Movimiento rectangulo
  51. if(Keyboard::isKeyPressed(Keyboard::Up)){
  52. rec.move(0, -1);
  53. }
  54. if(Keyboard::isKeyPressed(Keyboard::Down)){
  55. rec.move(0, 1);
  56. }
  57. if(Keyboard::isKeyPressed(Keyboard::Left)){
  58. rec.move(-1, 0);
  59. }
  60. if(Keyboard::isKeyPressed(Keyboard::Right)){
  61. rec.move(1, 0);
  62. }
  63.  
  64. //Colisiones
  65. if(rec.getPosition().x<0){
  66. rec.setPosition(0, rec.getPosition().y);
  67. }
  68. if(rec.getPosition().x>750){
  69. rec.setPosition(750, rec.getPosition().y);
  70. }
  71. if(rec.getPosition().y<0){
  72. rec.setPosition(rec.getPosition().x, 0);
  73. }
  74. if(rec.getPosition().y>550){
  75. rec.setPosition(rec.getPosition().x, 550);
  76. }
  77.  
  78. FloatRect rect = rec.getGlobalBounds();
  79. FloatRect rect2 = rec2.getGlobalBounds();
  80. FloatRect rect3 = rec3.getGlobalBounds();
  81. FloatRect rect4 = rec4.getGlobalBounds();
  82. FloatRect rect5 = rec5.getGlobalBounds();
  83.  
  84. if(rect.intersects(rect2)){
  85.  
  86. if(rec.getPosition().x<rec2.getPosition().x)
  87. rec.setPosition(rec.getPosition().x-10, rec.getPosition().y);
  88.  
  89. if(rec.getPosition().x>rec2.getPosition().x)
  90. rec.setPosition(rec.getPosition().x+10, rec.getPosition().y);
  91.  
  92. if(rec.getPosition().y<rec2.getPosition().y)
  93. rec.setPosition(rec.getPosition().x, rec.getPosition().y-10);
  94.  
  95. if(rec.getPosition().y>rec2.getPosition().y)
  96. rec.setPosition(rec.getPosition().x, rec.getPosition().y+10);
  97. }
  98.  
  99. //Limpiamos ventana
  100. window.clear();
  101.  
  102. //Dibujamos el rectangulo
  103. window.draw(rec);
  104. window.draw(rec2);
  105. window.draw(rec20);
  106. window.draw(rec3);
  107. window.draw(rec4);
  108. window.draw(rec5);
  109.  
  110. //Actualizamos ventana
  111. window.display();
  112.  
  113. }
  114. }
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines