★ CODING ★ AMSTRAD SEMANAL ★ CONSTRUCTOR DE PANTALLAS ★![]() |
| Constructor de pantallas |
Hasta ahora habíamos visto programas de diseño de sprites, rutinas que los mueven, detectan sus choques... sin embargo aún nos queda una pieza clave, y en la que se fundamenta el éxito de los grandes juegos comerciales: el entorno gráfico. A lo largo de este articulo nos vamos a ocupar de estos paisajes, de cómo realizarlos y además manejar cómodamente los distintos bloques que integran las numerosas pantallas que siempre conlleva un juego. Y todo esto lo vamos a realizar de manera fácil y sencilla, tanto su diseño como su posterior manipulación, mediante un diseñador a base de bloques gráficos y las rutinas necesarias para manipular estos bloques y convertirlos meramente en una pantalla completa. Uno de los mayores problemas con que se encuentran los programadores en el momento de crear un juego, estriba en la formación de las pantallas que lo van a componer. En realidad ello se debe a la cantidad de tiempo hay que invertir para que cada una de las pantallas que forman el programa resulte perfecta, tanto en el aspecto estético, como en el de dificultad. Veamos ahora el porqué de esta dificultad estudiando de los pasos a seguir para la creación de cada una de las pantallas que compondrán nuestro juego. En primer lugar, deberemos tener muy claro qué tipo de programa se pretende hacer, es decir, si lo que se desea es crear un escenario para un juego tipo arcade o tipo videoaventura. El primer tipo de programas requiere unas pantallas muy bien estudiadas en cuanto a la distribución de los objetos, en el segundo debe predominar la estética. Otro de los pasos para la construcción de las pantallas es la confección de los gráficos que se van a utilizar, paredes, puertas, ventanas, etc. Una vez hecho esto, sólo queda construir cada una de las pantallas, lo cual deberemos hacer uniendo a modo de rompecabezas los gráficos que se han diseñado anteriormente. Esta última es una tarea de las más trabajosas, ya que deberemos estudiar cuál es la posición más idónea para cada uno de los gráficos. Hemos pensado que este último paso puede solucionarse mucho más fácilmente si se prepara una rutina que nos permita colocar en pantalla cada uno de estos gráficos de una forma sencilla. Así pues, el programa que ofrecemos hoy nos permitirá la creación de pantallas de una forma muy cómoda, y además se podrán salvar los datos para cada una de las pantallas, para luego poderlas construir con una segunda rutina que se incluirá en nuestro propio programa. Por lo tanto, dispondremos de dos programas totalmente diferenciados, el primero de ellos nos permitirá la creación de pantallas, y el segundo tomará los datos que nos proporcione el primero para la posterior presentación de las mismas. Veremos a continuación el funcionamiento de la primera de las rutinas, es decir, la que nos va a permitir construir nuestras pantallas. Esta primera rutina se encuentra ubicada en dirección &A000, y utiliza un buffer para el manejo de la pantalla a partir de la dirección &6000. Por lo tanto, los gráficos que carguemos en la memoria nunca podrán sobrepasar este límite. Una vez ejecutado el programa, dispondremos de las siguientes opciones:
Una vez dentro de la opción de imprimir gráficos, dispondremos de dos posibilidades:
Las teclas de movimiento nos permitirán desplazar un cursor por la pantalla para elegir la posición donde colocar los gráficos. Cuando se desee imprimir un gráfico en pantalla, deberemos pulsar la tecla Copia, con lo cual nos aparecerán los gráficos en la parte superior izquierda de la pantalla. Para elegir el que deseemos, deberemos pulsar cualquier tecla, una vez que aparezca el gráfico deseado pulsaremos la tecla Enter, con lo cual nos aparecerá dicho gráfico en la posición del cursor. Si por cualquier circunstancia deseamos eliminar cualquiera de los gráficos que aparecen en pantalla, nos situamos en la esquina superior izquierda del mismo y pulsamos la tecla CLR, con lo cual dicho gráfico desaparecerá de pantalla. Para que esta rutina pueda funcionar correctamente, deberemos confeccionar una tabla de datos que colocaremos a partir de la dirección #A270. Esta tabla deberá contener la altura, anchura y dirección de cada uno de los gráficos que se encuentren en memoria, de esta forma deberemos introducir cuatro valores por cada gráfico. Estos valores se deberán colocar en el orden que se indica a continuación:
De esta forma si tuviésemos en memoria un total de 10 gráficos, la longitud de la tabla sería de 40 valores, ya que como hemos dicho cada gráfico necesita un total de 4. Una vez se hayan introducido todos los datos necesarios, deberemos colocar el valor 255, que será el indicador de fin de tabla, para que la rutina en Código Máquina sepa cuál es el último dato de la tabla. Vamos a ver ahora cómo debemos calcular el byte más significativo y menos significativo de la dirección del gráfico en memoria.
Este cálculo podemos verlo prácticamente en el programa demostración que nos permitirá construir una pantalla con los gráficos que dicho programa crea. Además, en dicho programa se puede comprobar cómo se introducen los datos de cada uno de los gráficos en la posición correspondiente de la tabla. Una vez introducidos todos los datos necesarios, estaremos en condiciones de ejecutar el programa que nos permitirá la construcción de todas las pantallas que se deseen. Una vez hayamos finalizado la creación de cada una de estas pantallas, pulsaremos la tecla B, que nos permitirá volver al Basic, para poder salvar los datos de nuestra pantalla en cinta o disco. Dichos datos estarán situados a partir de la dirección hexadecimal #A400, y cuya lontigud deberemos calcular, ya que para cada pantalla creada ésta será diferente. Cada uno de los gráficos que se impriman en pantalla generarán 6 datos, que nos indicarán lo siguiente:
La dirección final de la tabla de datos se obtendrá observando dos posiciones de memoria de la forma que indicamos a continuación: Con el creador de pantallas que acompaña el artículo, DIR. FINALTABLA = PEEK(&A265) + 256*PEEK(A266)Así pues, la longitud de la tabla será la diferencia entre la dirección inicial y esta última: LONG. DE LA TABLA = DIR. FINALUna vez calculada la longitud y conociendo la dirección inicial que es fija (&A400), podremos salvar la tabla de datos en disco o cinta para poder ser utilizada posteriormente: |
| ![]() |
|
Page créée en 261 millisecondes et consultée 5 fois L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |