Al acabar Insectoids y para variar, decid? probar a hacer un juego tipo tetris. Como era obvio, los problemas no tardaron en presentarse, he resuelto muchos disfrutando de la satisfacci?n del bache superado, pero llegado un punto concreto me fren? en seco.
El problema es que cuando un "cuadradito" desaparece, el de arriba no cae hasta chocar con el de abajo.
Prob? varias formas de implementar place_free(x,y) pero sin ?xito.
Les dejo un croquis para que me entiendan:
(http://www.fileguru.com/images/b/2m_blocks_swapper_games_puzzle-15817.jpeg)
En la imagen donde se ven las estrellitas son huecos que deber?an llenarse con los cubitos de arriba.
?sa es la acci?n que quiero aprender a programar.
Espero haberme explicado y gracias por contestar 8)
prueba esto=
En evento Step:
if place_free(x,y+1) gravity=0.5
espero que te sirva
Imaginate que estas haciendo un juego de plataformas y trata a los bloques como si fueran el personaje que controlas. Supongo que estas usando varios tipos de bloques, emparenta todos a uno principal, y coloca estos codigos en cada cuadrado:
STEP
if place_free(x,y+1) {gravity=0.5} else {gravity=0}
COLISION CON BLOQUE PRINCIPAL
move_contact_all(270,12)
vspeed=0
no lo he probado pero deveria funcionar bien.
Gracias por contestar chicos, pero no way... =[
El c?digo es parecido a lo que yo usaba y no funciona, por lo menos de la forma en que lo hago yo.
Lo mejor que logr? es creando un objeto que haga tope abajo de los bloques ( 8)) en ese caso logro frenarlos, pero los bloques siguen acumul?ndose encima del tope hasta que se ve s?lo una fila.
Si alguien puede aportar algo m?s, le estar?a muy agradecido.
Saludos 8)
Prob? as?:
var yp;
yp=y;
with(objBloque){
if!(id=other.id){
solid=true;
}
}
move_contact_solid(270,3);
el depth de los bloques debe ser mayor en valor negativo a los bloques huecos y luego reemplazas estos x los q est?n encima XD XD XD
Cita de: soccer2008 en Marzo 29, 2010, 11:26:08 PM
el depth de los bloques debe ser mayor en valor negativo a los bloques huecos y luego reemplazas estos x los q est?n encima XD XD XD
Se supone que tengo que cubrir huecos con otros bloques, no sustituirlos (aunque ser?a una opci?n)
Citarvar yp;
yp=y;
with(objBloque){
if!(id=other.id){
solid=true;
}
}
move_contact_solid(270,3);
var yp;
yp=y;
//estas dos lineas no entiendo para que son#faltar?a indicarle que caigan (y+=1), pero cuando lo hago caen al vac?o todos los bloques.
#move_contact_solid(270,3)
//?Para qu? sirve esta funci?n?Me estoy empezando a desesperar.... 8)
Gracias a ambos por sus intentos. Adjunto el ejemplo tal y como lo tengo yo con el "obj_tope" para frenar los bloques, si pudieran revisarlo ser?a genial.
DESCARGA EDITABLE: http://www.datafilehost.com/download-2eb19092.html
DESCARGA EJECUTABLE: http://www.datafilehost.com/download-e75255ca.html
Saludos, que caigan los bloques, pero no los ?nimos 8)
Me refer?a a q los reemplazes en la posicion de dicho bloque, disculpame sino te entend? bien :-[ :-[ :-[...algo asi m?s o menos: en dos variables almacenas las posiciones de los bloques y luego reemplazas la posicion de dicho bloque con dichas variables XD XD XD
Pucara, prob? el c?digo.
Las l?neas
var yp;
yp=y;
son por si quer?s que el c?digo deje de funcionar cuando el bloque haya tocado otro por debajo, si al final de ese c?digo "y" es igual a "yp", el bloque dej? de moverse.
move_contact_solid mueve el objeto un n?mero de pixeles o hasta que choque con un objeto s?lido en una direcci?n determinada, en este caso hacia abajo (270) 3 pixeles, mejor que simplemente "y+=3". Lo que me falt? es poner esto al final:
with(objBloque){
solid=false;
}
El c?digo ser?a as?:
var yp;
yp=y;
with(objBloque){
if!(id=other.id){
solid=true;
}
}
move_contact_solid(270,3);
with(objBloque){
solid=false;
}
Y si quer?s pod?s sacar las primeras dos l?neas, si no te sirven.
Por cierto, supongo que los bloques no est?n marcados como s?lidos... si lo est?n, el c?digo deber?a ser as?:
var yp;
yp=y;
solid=false;
move_contact_solid(270,3);
solid=true;
#Soccer, no te disculpes, faltar?a m?s... La verdad me centr? m?s en el c?digo que me paso Wadk, ya que me pareci? m?s interesante. Agradezco que colabores, veo todas tus respuestas en el foro y no paras de ayudar a la gente, cosa por la cual me quito el sombrero.
#Wadk: Tambi?n agradezco tu molestia para intentar ayudarme, el primer c?digo lo prob?, pero realmente no funcion?. Espero que con lo ?ltimo que pusiste se solucione,el lunes lo sabremos..
Saludos 8)
Te dejo un ejemplo (con el boton izquierdo del raton se destruyen los bloques)
Cita de: 3dgeminis en Marzo 31, 2010, 08:13:57 PM
Te dejo un ejemplo (con el boton izquierdo del raton se destruyen los bloques)
Hola 3Dgeminis, gracias por tu ejemplo, pero no va, me tira que no es un archivo de GM. ?Lo podr?as revisar? Uso GM7pro.
Muchas gracias 8)
Cita de: pucara en Abril 04, 2010, 10:01:42 PM
Cita de: 3dgeminis en Marzo 31, 2010, 08:13:57 PM
Te dejo un ejemplo (con el boton izquierdo del raton se destruyen los bloques)
Hola 3Dgeminis, gracias por tu ejemplo, pero no va, me tira que no es un archivo de GM. ?Lo podr?as revisar? Uso GM7pro.
Muchas gracias 8)
quizas lo haya hecho en gm 8 x eso es q tira de ese error, de momento se me ocurre esto:
en un array mete todos los movimientos hasta dicho bloque y cuando llega al ultimo usa esto:
x=bloque.x
y=bloque.y
saludos XD XD XD
#Wadk
prob? tu c?digo y funciona a medias, o lo m?s probable es que yo lo hago mal. Te cuento: en el mejor de los casos los bloques caen en determinadas ocasiones, no siempre, adem?s no logro encontrar el patr?n de comportamiento de los mismos para poder depurar el error, lo hacen de forma rara.
Por ejemplo, la mayor?a de las veces caen si no los rodean ning?n bloque, otras si est?n por debajo de la mitad de la pantalla... no s? bien por qu? lo hacen as?. Quiz?s haya un m?todo m?s sencillo usando place_free pero tampoco logro hacerlo funcionar. Creo que un ejemplo pr?ctico solucionar?a el problema.
Otra opci?n es inventar el juego de bloques que no caen...yo que s?.
El m?todo de Soccer2008 tampoco logro implementarlo.
En fin, muchas gracias a todos, en serio. Dejo el tema abierto por si alguien se le ocurre algo.
Aqui esta el ejemplo en gm7
Cita de: 3dgeminis en Abril 06, 2010, 07:52:16 PM
Aqui esta el ejemplo en gm7
No quiero ser pesado, pero el archivo no va. Me dice lo mismo que el anterior, o quiz?s quieras postear directamente el c?digo.
Muchas gracias por volver a revisarlo
Citarprob? tu c?digo y funciona a medias, o lo m?s probable es que yo lo hago mal. Te cuento: en el mejor de los casos los bloques caen en determinadas ocasiones, no siempre, adem?s no logro encontrar el patr?n de comportamiento de los mismos para poder depurar el error, lo hacen de forma rara.
Por ejemplo, la mayor?a de las veces caen si no los rodean ning?n bloque, otras si est?n por debajo de la mitad de la pantalla... no s? bien por qu? lo hacen as?. Quiz?s haya un m?todo m?s sencillo usando place_free pero tampoco logro hacerlo funcionar. Creo que un ejemplo pr?ctico solucionar?a el problema.
Otra opci?n es inventar el juego de bloques que no caen...yo que s?.
Hmmm... qu? raro. Decime, ?los bloques son s?lidos o no? ?y est?s seguro de que no se tocan nunca (es decir, que ninguno est? "arriba" o "abajo" de otro)?
Cita de: Wadk en Abril 07, 2010, 11:56:02 PM
Hmmm... qu? raro. Decime, ?los bloques son s?lidos o no? ?y est?s seguro de que no se tocan nunca (es decir, que ninguno est? "arriba" o "abajo" de otro)?
Claro que estoy seguro.
Algo curioso: Si reduzco el tama?o de los bloques (image_xscale,image_yscale) caen todos al vac?o , a pesar que por debajo de la view hay un objeto que hace de tope a lo largo.
Te paso el editable por MP por si queer?s pegarle un ojo.
Gracias por tu inter?s.
Voy a ver que puedo hacer, pero te aviso que hoy y ma?ana voy a estar algo ocupado, no s? cu?ndo puedo intentarlo.
Postea el editable
CitarVoy a ver que puedo hacer, pero te aviso que hoy y ma?ana voy a estar algo ocupado, no s? cu?ndo puedo intentarlo.
No hay problema, faltar?a m?s. Gracias por intentarlo.
Cita de: 3dgeminis en Abril 08, 2010, 08:12:22 PM
Postea el editable
descarga del editable: http://www.datafilehost.com/download-61ca3c1c.html
Gracias por tu ayuda 8)
voy a revisar el editable y ver? q puedo hacer XD XD XD
Cita de: soccer2008 en Abril 09, 2010, 02:04:58 PM
voy a revisar el editable y ver? q puedo hacer XD XD XD
Gracias 8)
Resubo el post por si alguien tiene alguna soluci?n o idea, por mi parte lo poco que pude hacer queda demasiado mal.
Gracias 8)
no se me ocurre ninguna idea, pero termino de hacer un trabajo q me han dado para hacer en c++ y luego veo tu ejemplo. saludos XD XD XD
Disculpa, Pucara, pero yo no pude hacer mucho. Tendr?a que reescribir todo el engine que ya est? hecho.
Muchas gracias a ambos. Cualquier aporte se agradecer?.