Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ivancea96

#2251
Lo normal es que llames, quienes somos nosotros para responder tal pregunta xD

Llama al número que te den por ahí, y pregunta.
#2252
Si yo no digo que eso lo corrigiera, pero era técnicamente incorrecto. Si funcionó era porque X e Y son iguales.
Lo que digo es que, tras hacer el .move() al captar las teclas, en caso de que esté en una zona incorrecta, que haga un .move inverso.
#2253
Código (cpp) [Seleccionar]
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.
#2254
Repasa el algoritmo. Piensa en qué pasa en cada momento, y en qué es incorrecto.

Código (cpp) [Seleccionar]
if(rec.getPosition().x<rect2.left)
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.
#2255
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.
#2256
Pues cambia el .x<400 por rec2.left, y así con cada uno. Los valores, en variables, especialmente en este tipo de programa.
#2257
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.
#2258
Código (cpp) [Seleccionar]
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)
#2259
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.
#2260
Es lo mismo, pero poniendo ambas rectas de argumentos:

Código (cpp) [Seleccionar]
if(intersecs(rec, rec2)) ;