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:basic:zxmines_ejemplo_comentado [20-03-2009 19:38] – sromero | cursos:basic:zxmines_ejemplo_comentado [24-03-2009 09:29] (actual) – sromero | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== ZXMines: Juego Completo en BASIC comentado ====== | ====== ZXMines: Juego Completo en BASIC comentado ====== | ||
- | ZXMines es un juego en BASIC que se presentó al concurso de programación de Juegos en Basic 2003 de ByteManiacos. ZXMines implementa en BASIC un sencillo juego de Buscaminas en el cual debemos destapar todo el tablero sin levantar las casillas en que se alojan las minas (destapar una mina finaliza el juego). Para poder destapar totalmente el tablero sin levantar casillas con minas disponemos de una información providencial: | + | //ZXMines es un juego en BASIC que se presentó al concurso de programación de Juegos en Basic 2003 de ByteManiacos. ZXMines implementa en BASIC un sencillo juego de Buscaminas en el cual debemos destapar todo el tablero sin levantar las casillas en que se alojan las minas (destapar una mina finaliza el juego). Para poder destapar totalmente el tablero sin levantar casillas con minas disponemos de una información providencial: |
- | + | \\ | |
- | ZXMines: el clásico juego Buscaminas, en BASIC | + | \\ |
Así, si destapamos una casilla y contiene el número 1, sabemos que alguna de las 8 casillas de alrededor de la misma contiene una mina. Utilizando la información numérica que nos proporcionan las diferentes casillas que vamos destapando podemos ser capaces de averiguar qué casillas contienen minas y evitarlas. El juego acaba cuando destapamos una mina (y perdemos) o bien cuando destapamos todas las casillas del tablero quedando sólo por destapar las casillas con minas (ganando el juego). Por último, una cosa a destacar es que si destapamos una casilla sin minas alrededor, se abre todo un área de juego a la vista, para acelerar el ritmo de juego. | Así, si destapamos una casilla y contiene el número 1, sabemos que alguna de las 8 casillas de alrededor de la misma contiene una mina. Utilizando la información numérica que nos proporcionan las diferentes casillas que vamos destapando podemos ser capaces de averiguar qué casillas contienen minas y evitarlas. El juego acaba cuando destapamos una mina (y perdemos) o bien cuando destapamos todas las casillas del tablero quedando sólo por destapar las casillas con minas (ganando el juego). Por último, una cosa a destacar es que si destapamos una casilla sin minas alrededor, se abre todo un área de juego a la vista, para acelerar el ritmo de juego. | ||
+ | |||
+ | \\ | ||
+ | {{ : | ||
+ | ;#; | ||
+ | //ZXMines: el clásico juego Buscaminas, en BASIC// | ||
+ | ;#; | ||
+ | \\ | ||
El objetivo del presente artículo es mostrar y explicar el código BASIC utilizado para programar ZXMINES, mostrando así algunos trucos que en BASIC proporcionan una mayor velocidad de ejecución. | El objetivo del presente artículo es mostrar y explicar el código BASIC utilizado para programar ZXMINES, mostrando así algunos trucos que en BASIC proporcionan una mayor velocidad de ejecución. | ||
\\ | \\ | ||
+ | |||
===== Pseudocódigo del juego ===== | ===== Pseudocódigo del juego ===== | ||
Línea 224: | Línea 232: | ||
Los 3 dibujos han sido creados con SevenuP de la misma forma. Por ejemplo, para crear la mina, abrimos SevenuP y creamos un nuevo dibujo de 8x8. Dibujamos la mina (en la siguiente figura la veremos a medio dibujar) y vamos a File , y luego a Output Options y seleccionamos "No attributes" | Los 3 dibujos han sido creados con SevenuP de la misma forma. Por ejemplo, para crear la mina, abrimos SevenuP y creamos un nuevo dibujo de 8x8. Dibujamos la mina (en la siguiente figura la veremos a medio dibujar) y vamos a File , y luego a Output Options y seleccionamos "No attributes" | ||
- | Creando nuestros gráficos en SevenuP | + | \\ |
+ | {{ : | ||
+ | ;#; | ||
+ | //Creando nuestros gráficos en SevenuP// | ||
+ | ;#; | ||
+ | \\ | ||
A continuación exportamos los datos, desde el menu File, opción Export Data. Escribimos un nombre de fichero (por ejemplo, mina.c), y en el desplegable seleccionamos "C source" | A continuación exportamos los datos, desde el menu File, opción Export Data. Escribimos un nombre de fichero (por ejemplo, mina.c), y en el desplegable seleccionamos "C source" | ||
Línea 242: | Línea 256: | ||
- | Aspecto de la pantalla de presentación | + | \\ |
+ | {{ : | ||
+ | ;#; | ||
+ | //Aspecto de la pantalla de presentación// | ||
+ | ;#; | ||
+ | \\ | ||
\\ | \\ | ||
Línea 331: | Línea 351: | ||
2170 FOR N=1 TO MINAS : LET T( PEEK (59000+N), PEEK (59300+N)) = 9 : | 2170 FOR N=1 TO MINAS : LET T( PEEK (59000+N), PEEK (59300+N)) = 9 : | ||
NEXT N | NEXT N | ||
- | < | + | </code> |
El resultado de la ejecución de la rutina de arriba es un tablero tapado (V(x,y) = 0 para todo x e y), y que tiene una serie de minas (valores numéricos 9) en T(xminas, | El resultado de la ejecución de la rutina de arriba es un tablero tapado (V(x,y) = 0 para todo x e y), y que tiene una serie de minas (valores numéricos 9) en T(xminas, | ||
Línea 354: | Línea 374: | ||
\\ | \\ | ||
+ | |||
===== Bucle principal del juego ===== | ===== Bucle principal del juego ===== | ||
Línea 578: | Línea 599: | ||
===== Enlaces ===== | ===== Enlaces ===== | ||
- | * Fichero basic_zxmines.zip conteniendo: | + | * {{: |
- | * Fichero zxmines.tap (el programa ya compilado). | + | * {{: |
- | * Concurso de BASIC 2003 de Bytemaniacos. | + | * [[http:// |
- | * SevenuP. | + | * [[http:// |
- | * bas2tap. | + | * [[http:// |
\\ | \\ | ||
- | ;#; | + | ;;# |
**Santiago Romero\\ Septiembre 2005\\ Magazine ZX #12** | **Santiago Romero\\ Septiembre 2005\\ Magazine ZX #12** | ||
- | ;#; | + | ;;# |