Descriptionesp.rtf 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. {\rtf1\ansi\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
  2. {\*\generator Riched20 10.0.10586}\viewkind4\uc1
  3. \pard\sa200\sl276\slmult1\b\f0\fs44\lang9 Tetris 3D\fs22\par
  4. \par
  5. \fs36 Description \fs22\par
  6. \b0\lang1033 Este es un juego de 3d Tetris en threejs. Hay una c\'e1mara orbital alrededor del centro y un \'e1rea c\'fabica en la cual caen los bloques formados diferentes y ocupan sub \'e1reas c\'fabicas. Cuando una capa est\'e1 completamente ocupada, los bloques de la capa desaparecen y la izquierda se reorganiza correctamente.\par
  7. \b\fs36 Game Structure\fs22\par
  8. \i Las estructuras del juego: \par
  9. \b0\i0\tab - GameBox\par
  10. \tab\tab El \'e1rea en la que tiene lugar el juego. Consiste en varios `Capas '.\par
  11. \tab - Layer\par
  12. \tab\tab Una matriz 2D de \'e1rea c\'fabica cu\'e1ntica.\par
  13. \tab - Quanto\par
  14. \tab\tab El \'e1rea c\'fabica m\'e1s peque\'f1a est\'e1 hecha de.\par
  15. \tab - Shape \par
  16. \tab\tab Clase abstracta para extender y crear algunos bloques dropables. Las propiedades son una matriz de posiciones (definici\'f3n de bloque), posici\'f3n, rotaci\'f3n y un material.\lang9\par
  17. \b\i Object Logic\b0\i0\par
  18. \tab\ul Quanto\par
  19. \ulnone\tab Quanto es una clase que tiene s\'f3lo un nodo threejs como propiedad y algunas variables auxiliares como flag ocupado.\par
  20. \tab\ul Shapes\par
  21. \ulnone\tab Habr\'e1 varias formas y su informaci\'f3n se almacenar\'e1 como un conjunto de posiciones relativas a su origen y con relaci\'f3n a su posici\'f3n y rotaci\'f3n. De acuerdo con la informaci\'f3n, se crear\'e1 una escena gr\'e1fica parcial para el bloque con la posici\'f3n y rotaci\'f3n correctas. Shape no tiene l\'f3gica sino la precomputaci\'f3n mientras se utiliza principalmente como una estructura para el almacenamiento de datos.\par
  22. \tab\ul Layers\par
  23. \ulnone\tab Capas consiste en una matriz 2D de Quanto que est\'e1n desocupados en el principio. Estos Quantos pueden ser ocupados por una forma.\par
  24. \tab\ul GameBox\par
  25. \ulnone\tab GameBox es la principal clase del juego que realiza toda la l\'f3gica. Tiene la funci\'f3n de progreso que mueve el juego un paso como en tetris normales, atravesando el conjunto de Capas hasta Quantos y reorganizando apropiadamente. En cada llamada de progreso la escena es manipulada por esta clase.\lang1033\par
  26. \par
  27. \b\lang9 Class Diagram\par
  28. \ul\b0 Quanto\par
  29. \ulnone - node : ThreeJS Entity\par
  30. - occupied : bool\par
  31. - temporary : bool\par
  32. \ul Layer\ulnone\par
  33. - quantos : Array [][]\par
  34. - isOccupied() : bool function \par
  35. - clear() : void\par
  36. \ul GameBox\par
  37. \ulnone - scene : ThreeJS Scene\par
  38. - layers : Array []\par
  39. - currentShape : Shape\par
  40. - checkState() : short // gamestate 0: in progress, 1: winning, -1:losing\par
  41. - progress() : void\par
  42. - isTime() : bool // returns whether STEPTIME has passed\par
  43. - setup( SizeX, SizeY ) : void \par
  44. - move(x,y) : void // moves current Shape \par
  45. - rotate(degrees) : void // rotates current Shape\par
  46. - checkColisions() : void // check collisions \par
  47. \ul Shape (abstract)\ulnone\par
  48. - geometry : array[positions]\par
  49. - position : Vector3\par
  50. - rotation : Degrees\par
  51. - node : ThreeJS Entity\par
  52. \b\fs28 Precomputing/Initializing\par
  53. \b0\fs22 - La inicializaci\'f3n se inicia en GameBox que inicializar\'e1 una matriz de instancias de capa que inicializar\'e1 una matriz de Quantos. \par
  54. - La c\'e1mara debe ser creada con controles orbitales\par
  55. - Creaci\'f3n de la escena con un avi\'f3n y un skybox\par
  56. - Evento de configuraci\'f3n Oyentes para jugar el juego\par
  57. - Inicializaci\'f3n de escena\par
  58. - Adjuntar Gamebox Scene a la escena principal\b\fs28\par
  59. Gameloop\par
  60. \b0\fs22 El gameloop es el siguiente: \par
  61. Every frame : \par
  62. \tab if box.isTime() then box.progress() // internal scene update\par
  63. On Event : \par
  64. \tab box.move(event) \par
  65. \tab or \par
  66. \tab box.rotate(event)\par
  67. \par
  68. }