Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
cursos:z88dk:z88dklife [09-08-2007 12:37] – sromero | cursos:z88dk:z88dklife [24-02-2020 19:24] (actual) – falvarez | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | Publicado originalmente en [[https:// | ||
====== El juego de la vida de John Conway ====== | ====== El juego de la vida de John Conway ====== | ||
Línea 28: | Línea 29: | ||
El Juego de la Vida se basa en una matriz de un tamaño determinado (como por ejemplo, 50x50, ó 32x32), que podríamos considerar nuestro "caldo de cultivo", | El Juego de la Vida se basa en una matriz de un tamaño determinado (como por ejemplo, 50x50, ó 32x32), que podríamos considerar nuestro "caldo de cultivo", | ||
- | Células vivas en la cuadrícula | + | |
- | Células vivas en la cuadrícula | + | {{ cursos: |
El Juego de la Vida no requiere interacción por parte del usuario: a partir de un estado inicial (células diseminadas por el caldo de cultivo) se aplican una serie de reglas y se obtiene una nueva generación de células en dicho " | El Juego de la Vida no requiere interacción por parte del usuario: a partir de un estado inicial (células diseminadas por el caldo de cultivo) se aplican una serie de reglas y se obtiene una nueva generación de células en dicho " | ||
Línea 83: | Línea 85: | ||
Con esto, el programa principal realizaría la impresión en pantalla de la generación actual de células (para que podamos ver la evolución visualmente) mediante la función Dibujar_Generación_Actual(). Tras esto, se calcularía la siguiente generación de células aplicando las reglas anteriormente explicadas, dentro de la función Calcular_Siguiente_Generacion() . Si en cualquier momento se pulsa la tecla ' | Con esto, el programa principal realizaría la impresión en pantalla de la generación actual de células (para que podamos ver la evolución visualmente) mediante la función Dibujar_Generación_Actual(). Tras esto, se calcularía la siguiente generación de células aplicando las reglas anteriormente explicadas, dentro de la función Calcular_Siguiente_Generacion() . Si en cualquier momento se pulsa la tecla ' | ||
- | ===== Función Crear_Generación_Aleatoria() ===== | + | ===== Crear_Gen_Aleatoria() ===== |
Línea 193: | Línea 195: | ||
- | ===== La función Dibujar_Generación_Actual() ===== | + | ===== Dibujar_Gen_Actual() ===== |
Línea 274: | Línea 276: | ||
De este modo podemos activar y desactivar cuadros completos de pantalla modificando su tinta y papel. Este método es mucho más rápido para nuestro programa que dibujar los 8x8 pixels de cada carácter para dibujar o apagar las células (una sóla escritura en memoria modifica el estado de 64 píxeles simultáneamente), | De este modo podemos activar y desactivar cuadros completos de pantalla modificando su tinta y papel. Este método es mucho más rápido para nuestro programa que dibujar los 8x8 pixels de cada carácter para dibujar o apagar las células (una sóla escritura en memoria modifica el estado de 64 píxeles simultáneamente), | ||
- | ===== La función Calcular_Siguiente_Generación() ===== | + | ===== Calcular_Siguiente_Gen() ===== |
Línea 366: | Línea 368: | ||
Si ejecutamos el programa en nuestro Spectrum (o en un emulador) veremos la evolución de las células en tiempo real en nuestra pantalla: | Si ejecutamos el programa en nuestro Spectrum (o en un emulador) veremos la evolución de las células en tiempo real en nuestra pantalla: | ||
- | Simulaciones en nuestro Spectrum | + | {{ cursos: |
- | Simulaciones en nuestro Spectrum | + | |
- | Simulaciones en nuestro Spectrum | + | |
- | Simulaciones en nuestro Spectrum | + | {{ cursos: |
Cada vez que pulsemos ' | Cada vez que pulsemos ' | ||
Línea 408: | Línea 411: | ||
Esto es así porque como podemos ver en la siguiente figura, podemos obtener las 8 células vecinal a partir de un mismo offset calculado: | Esto es así porque como podemos ver en la siguiente figura, podemos obtener las 8 células vecinal a partir de un mismo offset calculado: | ||
- | Offset de las 8 células vecinas de una dada | + | {{ cursos: |
- | Offset de las 8 células vecinas de una dada | + | |
El código resultante de la optimización sería el siguiente: | El código resultante de la optimización sería el siguiente: | ||
Línea 696: | Línea 699: | ||
- | * [[http://www.speccy.org/ | + | * [[https://magazinezx.speccy.org/ |
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||