Estoy creando un pequeño juego de estrategia llamado Block's el cual trata (como su nombre lo dice) de bloques. El objetivo del juego es sacar un bloque amarillo de un cuadro en el cual hay mas bloques, los cuales hay que acomodar para sacar (como ya dije) el bloque amarillo, pero... a la hora de escribirlo me han surgido varios problemas:
EDITO: Ya he resuelto yo mismo el problema de las colisones (wow en menos de 10 minutos me sorprendo je!) solo era cuestion de jugar un poco con el codigo, bien ahora tengo otro problema.
Tratare de explicarlo lo mejor posible:
Mi juego trata de bloques que solo pueden moverse horizontal o verticalmente, (algunos bloques se mueven horizontal y otros vertical, ningun bloque se mueve de las dos maneras). El problemas surge ya que si programo los controles para un bloque (digamos un bloque horizontal) y tengo otro (tambien horizontal) el primero ocupa mi pad derecho y mi pad izquierdo... y como le puedo hacer para mover el otro bloque usando los mismos botones que uso para el primero.
PD: Mi idea es usar algo como un seleccionador, explico como:
Usar alguna funcion (no se si exista) para seleccionar con el botón X el primer bloque y usar los botones derecho e izquierdo para moverlo, despues presionar /\ (por decir asi) para des-seleccionar ese bloque y pasar al otro y poder así seleccionarlo y mover ese segundo bloque.
Espero me entiendan y me ayuden. Gracias de antemano.
Si quieres te ayudo
Si quieres te ayudo yo.
Saludos
Bien!
¿Qué tengo que hacer para que me ayudes?
Cuestión de concepto
Realmente, parece que el problema o problemas sean más de concepto que otra cosa.
De entrada, tal y como lo veo:
Hay varios estados de la partida:- Puede haber un bloque seleccionado, o ninguno.
- Si no hay ningún bloque seleccionado, Y se pulsa X, Y el cursor está sobre un bloque, se selecciona ese bloque.
- Si hay un bloque seleccionado, el botón triángulo (o el que sea, puede ser el mismo X) hace que pase a no haber ningún bloque seleccionado.
- Si hay un bloque seleccionado, el pad mueve ese bloque en concreto.
Así que lo del "seleccionador" que dices es trivial: basta hacer una variable que almacene el valor de referencia de un bloque concreto (por ejemplo, un número identificativo único, un ID) o un valor especial si no hay ninguno seleccionado. Suele funcionar con enteros (que referencien el índice de la tabla, bloques[1], bloques[2], etc.), y un 0 para "ningún bloque seleccionado". Así, si el valor del "bloque activo" es mayor que 0, hay algún bloque seleccionado (y se opera con ese), y si es 0, no hay ninguno.
Y lo importante es... cómo gestionas los bloques y sus propiedades. Que de esto no dices nada, y resulta que es el meollo de la cuestión... :) ¿El resto? Ya ves que no es complicado de hacer... con una sola variable ya lo puedes controlar todo.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
No entiendo...
La verdad no entiendo lo que me dices, no se si me puedas ayudar con las variables que mensionas...
Sí, eso mismo es lo que estoy diciendo...
Que me parece que no entiendes lo que quieres hacer. Qué significa, internamente, esto de "elegir un bloque", "moverlo a la derecha", etc.
En realidad, por lo que recuerdo, todo lo que necesitas saber ya está en el tuto de colisiones.
Te sugiero que le dediques algo más de diez minutos, y en vez de intentar "hacer que funcione", te dediques a entender cómo lo hace. Ahi tienes operaciones lógicas (and, hay colisión si las x respectivas están a una distancia menor o igual a un valor, Y las y -coordenadas- también están a una distancia menor o igual), asignaciones... básicamente, todo lo que necesitas saber.
Así que si ya sabes todas las técnicas que necesitas, y no puedes hacer lo que quieres, y ni siquiera sabes por dónde empezar... o no tienes claro qué es lo que quieres hacer realmente, o en realidad no tienes tan sabido lo que crees saber.
Y después, te sugiero que intentes ver la estructura del programa, poniéndote en su lugar. Recorta unos retales de papel, haz lo que debiera hacer el programa, y mira qué funciona y qué no, y observa atentamente qué haces. Apunta todos los datos en un papel (eso será la memoria), y ya verás como sacas el hilo.
Respondiendo a tu pregunta... bueno, de entrada creo que he mencionado sólo una variable y una tabla, ¿verdad?, no "variables"... el concepto de singular y plural es muy distinto. La cuestión es que si hubiera algo, concreto, que no entendieras, podría explicarte ese algo. Pero si no entiendes nada, nada de nada... entonces, no puedo ni explicarte nada, ni ayudarte en nada.
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Lo se!
Ya se como funciona el sistema de colisones y lo que estoy pidiendo es la variable que tengo que crear para que me ayude a hacer lo que quiero.
Tutorial: Fabricando nuestro propio micrófono para la PSP.
Exclusivo de PSP.Scenebeta.com
No, no lo sabes
¿La variable que tienes que crear?
La que te dé la real gana, chico.
Igual que en el tutorial de colisiones se llama "verde" al Color.new(0,255,0), y puedes llamarle "fosforito" o "Micolor".
No creo que hayas entendido cómo funciona, e insisto en que no tienes claro lo que quieres hacer. Porque resulta que tienes que explicárselo muy detalladamente al ordenador (en eso consiste programar).
Mira, llámala a la variable "bloqueActivo". Hala, ya tienes la variable. Para crearla, te basta hacer:
bloqueActivo=0
...igual que en el tutorial de colisiones se hace
verde=Color.new(0,255,0)
. Hala, ya la tienes: problema resuelto, parecería. Ahora bien, "yo diría" que el problema lo tienes en la gestión en sí, que no tienes nada claro cómo funcionará ni cómo hacerlo. Porque, insisto, creo que todo lo que necesitas está en el tutorial de trayectorias. Y que igual, si realmente no tienes un problema de concepto (=no sabes qué quieres hacer exactamente), entonces no has entendido qué es y cómo funcionan, por ejemplo, losif
yand
.Ahora bien, vista la terrible divergencia de opiniones, y como tenías bien claro qué necesitabas (y acabo de darte la variable), por mi parte lo dejo aquí hasta nuevo aviso...
Strength is irrelevant. Resistance is future. We wish to improve ourselves.
La fuerza es irrelevante. La resistencia es futuro. Queremos mejorarnos.
Que tuto?
Cuál es el tutorial de trayectorias?¿
Perdón...
Quería decir el de "colisiones". Lapsus linguae, mea culpa, error mío (aunque creo que era deducible por el contexto).
Ayuda..
Me puedes ayudar con el homebrew? Estoy atorado en lo mismo y quiero terminarlo. Gracias.