rotation - rotación de tetris
modula-2 (4)
Si entiendo tu pregunta correctamente, no hay una respuesta correcta. Si puede "moverse a través de" otras piezas depende de las pautas para su tarea particular; es posible escribir código que lo permita y código que no.
Para la universidad se supone que debemos escribir un juego (el lenguaje es muy poca posibilidad de que lo sepas). Cada tetromino se define a través de una pieza central y 3 piezas relativas. Ahora, cuando se trata de rotación, simplemente giro los bloques relativos (álgebra lineal).
Lo que me pregunto es cómo manejar las rotaciones que hace un usuario cuando la pieza ya ha "aterrizado" porque el usuario tiene poco tiempo para mover su pieve rápidamente a la posición deseada, pero en versiones de tetris en toda la web puede "rotar sobre" otras piezas, pero parece que no lo tengo con mi rotación.
¿Sobre qué pieza necesito rotar? ¿hay guías? Gracias
Teniendo en cuenta que el campo de las piezas de tetris caen son una matriz
1) Si quiere dar un poco de tiempo para que el usuario lo gire y use su algoritmo
- Establezca un temporizador que comience cuando su bloque más bajo se encuentre en una línea adyacente a una línea que la misma columna ya tenga.
- Si el usuario intenta mover esa pieza antes de que termine el cronómetro, verifique si hay un bloque en una línea y columna en la que podría estar el lugar de uno de los bloques de la pieza móvil. Si ya está lleno, no puedes moverlo
2) Si quiere dar un poco de tiempo para que el usuario lo gire y use otro algoritmo
- puede considerar su bloque como un cubo de 3x3 y rotarlo a través del bloque de 2x2 incluso si eso no existe en la pieza (por ejemplo, en una pieza con el formato L). ¡Así que solo tienes que hacer lo que dije en el segundo botón de (1), y debería estar bien! Eso es un algoritmo más fácil en mi humilde opinión.
Tetris Wiki especifica una forma en que se realizan los llamados patadas de pared :
Una patada en la pared ocurre cuando un jugador gira una pieza cuando no existe espacio en las casillas donde ese tetromino normalmente ocuparía después de la rotación. Para compensar, el juego establece una cierta cantidad de espacios alternativos para que los vea el tetromino. [...] El algoritmo de patada de pared más simple [...] es intentar mover el Tetromino un espacio a la derecha, y luego un espacio a la izquierda, y fallar si no se puede hacer ninguno .
Hay otras formas, como la especificada por el Sistema de Super Rotación exigido por la Guía de Tetris . Ese sistema usa un conjunto de tablas para determinar las posibles patadas de pared.
En primer lugar, es posible que desee aclarar los términos en su pregunta. En el primer párrafo parece que una "pieza" es lo que otros podrían llamar un "mosaico"; es decir, cada tetromino está compuesto por cuatro "piezas" o "azulejos". Pero luego al final del párrafo lo llamas un "bloque". Y luego, en el segundo párrafo parece que "pieza" es sinónimo de "tetromino": "la pieza ha aterrizado", "mueve su pieza". Entonces en tu pregunta, ¿qué quieres decir? Quizás "¿En qué mosaico debería girar el tetromino?"
Si esa es su pregunta, la respuesta es su definición de implementación. Si prueba diferentes versiones del juego, puede ver que en algunos, la pieza "I" se tambaleará izquierda-derecha o arriba-abajo al pasar dos rotaciones (el mosaico de rotación se fija en el tetromino), y en otros no (la rotación alterna entre las dos fichas centrales de manera que una rotación CW tendrá el mismo efecto que una rotación CCW). Las piezas "S" y "Z" se tambalearán de manera similar o no. Sin embargo, si no se bambolea, es posible que una pieza pueda rotar cuando esté contra la pared izquierda, pero no si está contra la derecha, aunque las situaciones sean simétricas. Y la pieza cuadrada, si la dejas con un mosaico de rotación fija, girará alrededor de una esquina cuando lo más probable es que quieras que (aparentemente) no gire en absoluto. ¡Nunca he visto una implementación que al menos no se ocupe de eso!