Hace mucho tiempo, exactamente en la misma galaxia, comencé a intentar hacer Freecell, como una forma de aprender Angular 1.3.
Llegué tan lejos y luego me distraí con otras cosas, como es el caso de los proyectos paralelos.
Tuve algo de tiempo libre recientemente (lo sé, tampoco me lo esperaba) y pensé en darle otra oportunidad.
Básicamente comencé desde cero, porque ya no estoy interesado en Angular 1.3 y tiendo a usar VueJS para mis cosas web si necesito un marco.
Para ver los resultados, está en github.io: ¡haz clic aquí para jugar freecell!
Desde que aprendí WPF hace una década y media, me ha gustado mucho el estilo de programación MVVM. VueJS permite ese estilo muy fácilmente e incluso lo mejora, sin la necesidad de eventos explícitos para actualizar la interfaz de usuario.
Esto significa que la lógica del juego está completamente separada de la lógica de visualización, lo que hizo que escribir este juego fuera muy sencillo.
No todo fue viajar en avión, ya que, por alguna razón, decidí que almacenaría las tarjetas en una matriz irregular 2D. No es una idea terrible, pero cada matriz interna es una columna, por lo que cuando intentaba que las tarjetas se dispusieran correctamente en una cuadrícula CSS, no podía simplemente iterar sobre la exterior y luego sobre la interior como
Porque eso dispondría las columnas como filas. Entonces tuve que usar índices (¿por qué VueJS no comienza desde 0???) en lugar de objetos y recorrer la matriz externa en el bucle interno:
Creo que las otras dos malas decisiones de diseño que tomé son implementar la función de autocompletar y hacer que los controladores de clic sean solo una función en el juego (es decir, el modelo), en lugar de en la vista y hacer que la vista determine qué curso seguir. acción a tomar.
Hacer que el juego decida qué acción quiere decir el jugador (es decir, seleccionar una carta (o una pila de cartas), colocar cartas en otra pila o anular la selección de cartas) ha generado un código espagueti que tal vez quiera refactorizar en una fecha posterior.
Al principio no quería implementar el autocompletado porque no quería pensar en la lógica. Pero después de jugar algunos juegos sin él, me aburrí tanto de colocar cada carta en la fila principal que me sentí obligado a implementarlo.
Debería haberme mantenido firme porque es simplemente malo. Es una gran cantidad de código que inicialmente causó un montón de errores y dolores de cabeza. Ni siquiera es completamente automático. Por otro lado, ahora no tengo que hacer tanto tapping.
Me mantuve firme en cuanto a no hacer que las cartas se arrastraran y soltaran, porque hice esto principalmente para jugar en mi teléfono y mi tableta, por lo que acceder a su lugar es mucho más fácil en cuanto a UX (al menos mi UX, mmmm).
En general, estoy contento con el resultado, incluso si hay algunos errores que persisten fuera de la vista.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3