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


  Mostrar Mensajes
Páginas: 1 ... 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 [226] 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 ... 401
2251  Programación / Programación C/C++ / Re: [SFML] Rebote de colisión en: 26 Junio 2015, 01:58 am
Código
  1. if(rec.getPosition().y>=rect2.left)
Eso será rect2.top, no .left.

De cualquier forma, es emétodo lo que hace es corregir progresivamente la superposición de los rectángulos. Una colisión es una colisión.

Una opción, es, en el código de movimiento, tras moverse, comprobar con intersecs(). En caso verdadero, deshaces el movimiento. Es una forma muy simple, pero efectiva en casos también simples.
2252  Programación / Programación C/C++ / Re: [SFML] Rebote de colisión en: 25 Junio 2015, 17:12 pm
Repasa el algoritmo. Piensa en qué pasa en cada momento, y en qué es incorrecto.

Código
  1. if(rec.getPosition().x<rect2.left)
  2. if(rec.getPosition().x>rect2.left)

¿Qué ocurre si x==rect.left? En vez de > pon >=, o <= en vez de <, como veas.

Si repasas el algoritmo y sacas valores por pantalla, haciendo las operaciones acabarás viendo por qué ocurre lo que ocurre. Sinó, puedes hacerlo en papel con valores pequeños (1-5) para encontrar el error, o mejor aun, para encontrar la forma correcta.

Mirarlo en internet no te va a ayudar a entenderlo, y menos copiando código sin más.
2253  Programación / Programación C/C++ / Re: Problema de ejecución en C en: 25 Junio 2015, 15:50 pm
Pero dijiste que lo habías compilado :/

En cualquier caso, name es un char. No tendría que ser un char. En todo caso un char*.

Para copiar un char no basta un '='. Debes asignarle memoria con malloc(), y luego copiar caracter a caracter, hasta encontrar un '\0'.

Sinó, también puedes usar strcpy(), pero tendrás que utilizarle malloc() antes igualmente. El tamaño a copiar lo puedes obtener con strlen(), que calcula caracteres hasta el '\0'. Tendrás que sumarle 1 al strlen() para añadir el '\0' en la nueva cadena.

Y no olvides liberar memoria antes de liberar la estructura.
2254  Programación / Programación C/C++ / Re: [SFML] Rebote de colisión en: 25 Junio 2015, 15:44 pm
Pues cambia el .x<400 por rec2.left, y así con cada uno. Los valores, en variables, especialmente en este tipo de programa.
2255  Programación / Programación C/C++ / Re: Problema de ejecución en C en: 25 Junio 2015, 15:18 pm
Busca la línea exacta que da el problema colocando pausas al programa.

A todo esto, normaliza la forma de nombrar variables, estructuras y funciones. Poner variables con mayusculas, otras con minusculas y otras con caracteres como 'ñ' puede dar problemas, desde problemas de legibilidad, hasta pequeños problemas al compilar.
2256  Programación / Programación C/C++ / Re: [SFML] Rebote de colisión en: 25 Junio 2015, 15:13 pm
Código
  1. rec.setPosition(rec.getPosition().x, rec.getPosition().y);

Mira atentamente esa línea.

A parte:

Ese ejemplo que pones en el vídeo no explica nada si no indicas cuales son las coordenadas de los objetos. ¿Qué es 400?

Lo que indiqué era cambiar esos valores por valores de las variables. Poner un 400 para quien ve ese código es como poner un 7568. No dice nada. Cambia cada valor por el campo de la variable que ha de ser. No va a corregir el problema ni mucho menos, pero haré cl programa más legible y más fácil de corregir (y más fácil de rehacer en caso de que quieras cambiar la posición del cuadrado ese)
2257  Programación / Programación C/C++ / Re: [SFML] Rebote de colisión en: 25 Junio 2015, 10:57 am
A que se debe es algo obvio, pusiste los setPosition().

Para empezar, y dado que tienes la rect2, en vez de poner 400, 350 y 450, deberías poner los campos de la variable rect2.

No es que haya un error, simplemente el concepto es incorrecto.
2258  Programación / Programación C/C++ / Re: [SFML] Colisiones con borde de ventana en: 23 Junio 2015, 14:29 pm
Es lo mismo, pero poniendo ambas rectas de argumentos:

Código
  1. if(intersecs(rec, rec2)) ;
2259  Programación / Programación C/C++ / Re: [SFML] Colisiones con borde de ventana en: 23 Junio 2015, 08:08 am
La función es:
Código
  1. bool intersecs(Rect a, Rect b);
2260  Foros Generales / Foro Libre / Re: Como veis el curso? en: 23 Junio 2015, 00:37 am
En España al menos, tienes 3 superiores, DAM, DAW Y ASIR. Busca las siglas en google que estoy con el movil xD

Tu sabrás tus motivos, pero es preferible que hagas el grado superior (si tienes la prueba de acceso)
Páginas: 1 ... 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 [226] 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 ... 401
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines