tag:blogger.com,1999:blog-296934082024-03-14T19:13:15.997+01:00Jugando a crearUnknownnoreply@blogger.comBlogger222125tag:blogger.com,1999:blog-29693408.post-38706982670579634662015-02-27T07:37:00.001+01:002015-02-27T07:37:45.607+01:00C++ para C# 4: Datos básicos, arrays y listasVamos a ver otros tipos de datos (como los números reales), el manejo básico de arrays y de listas no ordenadas<br />
<br />
Un programa que probara todo esto en C# podría ser así:<br />
<div>
<br /></div>
<div>
<pre style="background-color: white;"><span style="color: #cccccc;"> 1: </span>using System<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;"> 2: </span>using System<span style="color: blue;"><b>.</b></span>Collections<span style="color: blue;"><b>.</b></span>Generic<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;"> 3: </span>
<span style="color: #eeeeee;"> 4: </span><span style="color: red;"><b>class</b></span> DatosArraysListas
<span style="color: #cccccc;"> 5: </span><span style="color: blue;"><b>{</b></span>
<span style="color: #eeeeee;"> 6: </span>
<span style="color: #eeeeee;"> 7: </span> <span style="color: red;"><b>public</b></span> <span style="color: red;"><b>static</b></span> <span style="color: red;"><b>void</b></span> Main<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;"> 8: </span> <span style="color: blue;"><b>{</b></span>
<span style="color: #eeeeee;"> 9: </span> <span style="color: green;"><i>// Algunos tipos de datos simples
<span style="color: #cccccc; font-style: normal;">10: </span></i></span> <span style="color: red;"><b>int</b></span> i <span style="color: blue;">=</span> <span style="color: brown;">1</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">11: </span> <span style="color: red;"><b>short</b></span> s <span style="color: blue;">=</span> <span style="color: brown;">2</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">12: </span> byte b <span style="color: blue;">=</span> <span style="color: brown;">3</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">13: </span> <span style="color: red;"><b>long</b></span> l <span style="color: blue;">=</span> <span style="color: brown;">4</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">14: </span>
<span style="color: #cccccc;">15: </span> <span style="color: red;"><b>float</b></span> f <span style="color: blue;">=</span> 1.0f<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">16: </span> <span style="color: red;"><b>double</b></span> d <span style="color: blue;">=</span> <span style="color: yellow;">2.0</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">17: </span>
<span style="color: #eeeeee;">18: </span> bool z <span style="color: blue;">=</span> true<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">19: </span>
<span style="color: #cccccc;">20: </span> <span style="color: green;"><i>// Lectura de reales desde teclado
<span style="color: #eeeeee; font-style: normal;">21: </span></i></span> Console<span style="color: blue;"><b>.</b></span>Write<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Introduce un real (simple precisión): "</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">22: </span> <span style="color: red;"><b>float</b></span> f2 <span style="color: blue;">=</span> Convert<span style="color: blue;"><b>.</b></span>ToSingle<span style="color: blue;"><b>(</b></span>Console<span style="color: blue;"><b>.</b></span>ReadLine<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">23: </span> Console<span style="color: blue;"><b>.</b></span>Write<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Y uno de doble: "</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">24: </span> <span style="color: red;"><b>double</b></span> d2 <span style="color: blue;">=</span> Convert<span style="color: blue;"><b>.</b></span>ToDouble<span style="color: blue;"><b>(</b></span>Console<span style="color: blue;"><b>.</b></span>ReadLine<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">25: </span>
<span style="color: #eeeeee;">26: </span> <span style="color: green;"><i>// Arrays
<span style="color: #eeeeee; font-style: normal;">27: </span></i></span> <span style="color: red;"><b>int</b></span><span style="color: blue;"><b>[</b></span><span style="color: blue;"><b>]</b></span> a1 <span style="color: blue;">=</span> <span style="color: red;"><b>new</b></span> <span style="color: red;"><b>int</b></span><span style="color: blue;"><b>[</b></span><span style="color: brown;">3</span><span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">28: </span> a1<span style="color: blue;"><b>[</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;">=</span> <span style="color: brown;">200</span><span style="color: blue;"><b>;</b></span> <span style="color: green;"><i>// Les damos valores
<span style="color: #eeeeee; font-style: normal;">29: </span></i></span> a1<span style="color: blue;"><b>[</b></span><span style="color: brown;">1</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;">=</span> <span style="color: brown;">150</span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">30: </span> a1<span style="color: blue;"><b>[</b></span><span style="color: brown;">2</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;">=</span> <span style="color: brown;">100</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">31: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"a1 contiene: "</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">32: </span> foreach <span style="color: blue;"><b>(</b></span><span style="color: red;"><b>int</b></span> n in a1<span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;">33: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span>n<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">34: </span>
<span style="color: #cccccc;">35: </span> <span style="color: red;"><b>int</b></span><span style="color: blue;"><b>[</b></span><span style="color: blue;"><b>]</b></span> a2 <span style="color: blue;">=</span> <span style="color: blue;"><b>{</b></span> <span style="color: brown;">50</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">30</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">10</span><span style="color: blue;"><b>}</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">36: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"a2 contiene: "</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">37: </span> <span style="color: red;"><b>for</b></span> <span style="color: blue;"><b>(</b></span><span style="color: red;"><b>int</b></span> j<span style="color: blue;">=</span><span style="color: brown;">0</span><span style="color: blue;"><b>;</b></span> j<span style="color: blue;"><</span>a2.Length<span style="color: blue;"><b>;</b></span> j<span style="color: blue;"><span style="color: blue;">+</span><span style="color: blue;">+</span></span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;">38: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span>a2<span style="color: blue;"><b>[</b></span>j<span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">39: </span>
<span style="color: #cccccc;">40: </span> <span style="color: red;"><b>int</b></span><span style="color: blue;"><b>[</b></span><span style="color: blue;"><b>,</b></span><span style="color: blue;"><b>]</b></span> a3 <span style="color: blue;">=</span><span style="color: blue;"><b>{</b></span>
<span style="color: #eeeeee;">41: </span> <span style="color: blue;"><b>{</b></span> <span style="color: brown;">10</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">20</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">30</span><span style="color: blue;"><b>}</b></span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">42: </span> <span style="color: blue;"><b>{</b></span> <span style="color: brown;">11</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">21</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">31</span><span style="color: blue;"><b>}</b></span>
<span style="color: #eeeeee;">43: </span> <span style="color: blue;"><b>}</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">44: </span>
<span style="color: #cccccc;">45: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"El primer dato de la segunda fila de a3 es "</span><span style="color: blue;">+</span>
<span style="color: #eeeeee;">46: </span> a3<span style="color: blue;"><b>[</b></span><span style="color: brown;">1</span><span style="color: blue;"><b>,</b></span>0<span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">47: </span>
<span style="color: #eeeeee;">48: </span> <span style="color: green;"><i>// Lista de varios datos
<span style="color: #eeeeee; font-style: normal;">49: </span></i></span> List<span style="color: blue;"><</span>string<span style="color: blue;">></span> datos <span style="color: blue;">=</span> <span style="color: red;"><b>new</b></span> List<span style="color: blue;"><</span>string<span style="color: blue;">></span><span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">50: </span> datos<span style="color: blue;"><b>.</b></span>Add<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Hola"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">51: </span> datos<span style="color: blue;"><b>.</b></span>Insert<span style="color: blue;"><b>(</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>,</b></span><span style="color: purple;">"Como estas?"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">52: </span> datos<span style="color: blue;"><b>.</b></span>Add<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Adios"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">53: </span> datos<span style="color: blue;"><b>.</b></span>RemoveAt<span style="color: blue;"><b>(</b></span><span style="color: brown;">1</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">54: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"La lista contiene: "</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">55: </span> foreach <span style="color: blue;"><b>(</b></span>string dato in datos<span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;">56: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span>dato<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">57: </span>
<span style="color: #eeeeee;">58: </span> <span style="color: blue;"><b>}</b></span>
<span style="color: #eeeeee;">59: </span><span style="color: blue;"><b>}</b></span></pre>
</div>
<div>
<br /></div>
<div>
<div>
En C++ los cambios son:</div>
<div>
<br /></div>
<div>
<ul>
<li>Ya sabemos usar "cin" para entrada y "cout" para salida.</li>
<li>En general, los tipos de datos básicos se llaman igual en C++ que en C#.</li>
<li>En los arrays, los corchetes se ponen después del nombre de la variable y no se usa "new" para reservarles espacio: int a[2];</li>
<li>No hay una forma directa de saber el tamaño (cantidad de elementos) de un array: deberemos memorizarlo en una variable o constante, o bien calcular los bytes que ocupa toda la estructura y dividirlo entre los bytes que ocupa cada dato: (sizeof(a)/sizeof(*a))</li>
<li>Los arrays bidimensionales se separan con corchetes, no con comas: "int b[5][3];" Si vamos a especificar los valores, aun así habrá que indicar el tamaño de todas las partes (excepto, como mucho, la primera): "int b[][3] = { ... } "</li>
<li>Las estructuras dinámicas en general son más incómodas de manejar en C++: El equivalente a una "List" de C# es un "vector". Se añade un elemento al final con "push_back", se podrían quitar del final con "pop_back", se inserta en una posición específica con "insert" y se borra con "erase". En estas operaciones, la posición se deberá indicar usando iteradores, a partir de "miVector.begin()". No existe "foreach", así que habrá que recorrer el vector con un "for" (el tamaño se obtiene con ".size()") o con un iterador. La clase "vector" internamente usa un array, de modo que se puede acceder con [] y este acceso es muy rápido, pero a cambio las operaciones "insert" son costosas porque hay que copiar todo el array. Como alternativa, también existe una clase "list", que se usaría de manera muy similar pero que no permite el acceso con [], sino que hay que recorrer de forma secuencial empleando iteradores. </li>
</ul>
</div>
<div>
<br /></div>
<div>
El resultado sería:</div>
<div>
<br /></div>
</div>
<div>
<pre style="background-color: white;"><span style="color: #cccccc;"> 1: </span>#include <span style="color: blue;"><</span>iostream<span style="color: blue;">></span>
<span style="color: #eeeeee;"> 2: </span>#include <span style="color: blue;"><</span>vector<span style="color: blue;">></span>
<span style="color: #eeeeee;"> 3: </span>using namespace std<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;"> 4: </span>
<span style="color: #cccccc;"> 5: </span><span style="color: red;"><b>int</b></span> <span style="color: red;"><b>main</b></span> <span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;"> 6: </span><span style="color: blue;"><b>{</b></span>
<span style="color: #eeeeee;"> 7: </span> <span style="color: green;"><i>// Algunos tipos de datos simples
<span style="color: #eeeeee; font-style: normal;"> 8: </span></i></span> <span style="color: red;"><b>int</b></span> i <span style="color: blue;">=</span> <span style="color: brown;">1</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;"> 9: </span> <span style="color: red;"><b>short</b></span> s <span style="color: blue;">=</span> <span style="color: brown;">2</span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">10: </span> <span style="color: red;"><b>char</b></span> b <span style="color: blue;">=</span> <span style="color: brown;">3</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">11: </span> <span style="color: red;"><b>long</b></span> l <span style="color: blue;">=</span> <span style="color: brown;">4</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">12: </span>
<span style="color: #eeeeee;">13: </span> <span style="color: red;"><b>float</b></span> f <span style="color: blue;">=</span> 1.0f<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">14: </span> <span style="color: red;"><b>double</b></span> d <span style="color: blue;">=</span> <span style="color: yellow;">2.0</span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">15: </span>
<span style="color: #eeeeee;">16: </span> bool z <span style="color: blue;">=</span> true<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">17: </span>
<span style="color: #eeeeee;">18: </span> <span style="color: green;"><i>// Lectura de reales desde teclado
<span style="color: #eeeeee; font-style: normal;">19: </span></i></span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Introduce un real (simple precisión): "</span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">20: </span> <span style="color: red;"><b>float</b></span> f2<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">21: </span> cin <span style="color: blue;">></span><span style="color: blue;">></span> f2<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">22: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Y uno de doble: "</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">23: </span> <span style="color: red;"><b>double</b></span> d2<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">24: </span> cin <span style="color: blue;">></span><span style="color: blue;">></span> d2<span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">25: </span>
<span style="color: #eeeeee;">26: </span> <span style="color: green;"><i>// Arrays
<span style="color: #eeeeee; font-style: normal;">27: </span></i></span> <span style="color: red;"><b>int</b></span> a1<span style="color: blue;"><b>[</b></span><span style="color: brown;">3</span><span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">28: </span> a1<span style="color: blue;"><b>[</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;">=</span> <span style="color: brown;">200</span><span style="color: blue;"><b>;</b></span> <span style="color: green;"><i>// Les damos valores
<span style="color: #eeeeee; font-style: normal;">29: </span></i></span> a1<span style="color: blue;"><b>[</b></span><span style="color: brown;">1</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;">=</span> <span style="color: brown;">150</span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">30: </span> a1<span style="color: blue;"><b>[</b></span><span style="color: brown;">2</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;">=</span> <span style="color: brown;">100</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">31: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"a1 contiene: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">32: </span> <span style="color: red;"><b>for</b></span> <span style="color: blue;"><b>(</b></span><span style="color: red;"><b>int</b></span> j<span style="color: blue;">=</span><span style="color: brown;">0</span><span style="color: blue;"><b>;</b></span> j<span style="color: blue;"><</span><span style="color: brown;">3</span><span style="color: blue;"><b>;</b></span> j<span style="color: blue;"><span style="color: blue;">+</span><span style="color: blue;">+</span></span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;">33: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> a1<span style="color: blue;"><b>[</b></span>j<span style="color: blue;"><b>]</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">34: </span>
<span style="color: #cccccc;">35: </span> <span style="color: red;"><b>int</b></span> a2<span style="color: blue;"><b>[</b></span><span style="color: blue;"><b>]</b></span> <span style="color: blue;">=</span> <span style="color: blue;"><b>{</b></span> <span style="color: brown;">50</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">30</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">10</span><span style="color: blue;"><b>}</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">36: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"a2 contiene: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">37: </span> <span style="color: red;"><b>int</b></span> tamanyo <span style="color: blue;">=</span> <span style="color: blue;"><b>(</b></span><span style="color: red;"><b>sizeof</b></span><span style="color: blue;"><b>(</b></span>a2<span style="color: blue;"><b>)</b></span><span style="color: blue;">/</span><span style="color: red;"><b>sizeof</b></span><span style="color: blue;"><b>(</b></span><span style="color: blue;">*</span>a2<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">38: </span> <span style="color: red;"><b>for</b></span> <span style="color: blue;"><b>(</b></span><span style="color: red;"><b>int</b></span> j<span style="color: blue;">=</span><span style="color: brown;">0</span><span style="color: blue;"><b>;</b></span> j<span style="color: blue;"><</span>tamanyo<span style="color: blue;"><b>;</b></span> j<span style="color: blue;"><span style="color: blue;">+</span><span style="color: blue;">+</span></span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;">39: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> a2<span style="color: blue;"><b>[</b></span>j<span style="color: blue;"><b>]</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">40: </span>
<span style="color: #eeeeee;">41: </span> <span style="color: red;"><b>int</b></span> a3<span style="color: blue;"><b>[</b></span><span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>[</b></span><span style="color: brown;">3</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;">=</span><span style="color: blue;"><b>{</b></span>
<span style="color: #eeeeee;">42: </span> <span style="color: blue;"><b>{</b></span> <span style="color: brown;">10</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">20</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">30</span><span style="color: blue;"><b>}</b></span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">43: </span> <span style="color: blue;"><b>{</b></span> <span style="color: brown;">11</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">21</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">31</span><span style="color: blue;"><b>}</b></span>
<span style="color: #eeeeee;">44: </span> <span style="color: blue;"><b>}</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">45: </span>
<span style="color: #eeeeee;">46: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"El primer dato de la segunda fila de a3 es "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span>
<span style="color: #eeeeee;">47: </span> a3<span style="color: blue;"><b>[</b></span><span style="color: brown;">1</span><span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>[</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">48: </span>
<span style="color: #eeeeee;">49: </span> <span style="color: green;"><i>// Lista de varios datos
<span style="color: #cccccc; font-style: normal;">50: </span></i></span> vector<span style="color: blue;"><</span>string<span style="color: blue;">></span> datos<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">51: </span> vector<span style="color: blue;"><</span>string<span style="color: blue;">></span><span style="color: blue;">:</span><span style="color: blue;">:</span>iterator iterad<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">52: </span> datos<span style="color: blue;"><b>.</b></span>push_back<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Hola"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">53: </span> datos<span style="color: blue;"><b>.</b></span>insert<span style="color: blue;"><b>(</b></span>datos<span style="color: blue;"><b>.</b></span>begin<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>,</b></span><span style="color: purple;">"Como estas?"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">54: </span> datos<span style="color: blue;"><b>.</b></span>push_back<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Adios"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">55: </span> iterad<span style="color: blue;">=</span>datos<span style="color: blue;"><b>.</b></span>begin<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">56: </span> iterad<span style="color: blue;"><span style="color: blue;">+</span><span style="color: blue;">+</span></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">57: </span> datos<span style="color: blue;"><b>.</b></span>erase<span style="color: blue;"><b>(</b></span>iterad<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">58: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"La lista contiene: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">59: </span> <span style="color: red;"><b>for</b></span> <span style="color: blue;"><b>(</b></span><span style="color: red;"><b>unsigned</b></span> j<span style="color: blue;">=</span><span style="color: brown;">0</span><span style="color: blue;"><b>;</b></span> j<span style="color: blue;"><</span>datos<span style="color: blue;"><b>.</b></span>size<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span> j<span style="color: blue;"><span style="color: blue;">+</span><span style="color: blue;">+</span></span><span style="color: blue;"><b>)</b></span>
<span style="color: #cccccc;">60: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> datos<span style="color: blue;"><b>[</b></span>j<span style="color: blue;"><b>]</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">61: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"O con iteradores: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">62: </span>
<span style="color: #eeeeee;">63: </span> <span style="color: red;"><b>for</b></span> <span style="color: blue;"><b>(</b></span>iterad<span style="color: blue;">=</span>datos<span style="color: blue;"><b>.</b></span>begin<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span> iterad<span style="color: blue;"><</span>datos<span style="color: blue;"><b>.</b></span>end<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span> iterad<span style="color: blue;"><span style="color: blue;">+</span><span style="color: blue;">+</span></span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;">64: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: blue;">*</span>iterad <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">65: </span><span style="color: blue;"><b>}</b></span></pre>
</div>
<div>
<div>
<br /></div>
<div>
Dentro de poco, acceso a ficheros en C++... </div>
</div>
Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-29693408.post-62846560607921376382015-02-25T01:46:00.000+01:002015-02-25T09:39:42.710+01:00C++ para C# 3: Cadenas y tecladoLlega el momento de retomar la "chuleta rápida de C++ para gente que conoce C#". Vamos con ello... hoy toca hablar de las cadenas y del manejo de teclado...<br />
<br />
El manejo de cadenas de texto en C++ es muy parecido al de C#. La lectura de teclado es muy simple: "cin" puede leer tanto números como cadenas. Vamos a ver primero un ejemplo en C# y su resultado, para luego convertirlo a C++:<br />
<br />
<pre style="background-color: white;"><span style="color: #cccccc;"> 1: </span>using System<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;"> 2: </span>
<span style="color: #eeeeee;"> 3: </span><span style="color: red;"><b>public</b></span> <span style="color: red;"><b>class</b></span> CadenasTeclado
<span style="color: #eeeeee;"> 4: </span><span style="color: blue;"><b>{</b></span>
<span style="color: #cccccc;"> 5: </span>
<span style="color: #eeeeee;"> 6: </span> <span style="color: red;"><b>public</b></span> <span style="color: red;"><b>static</b></span> <span style="color: red;"><b>void</b></span> Main<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;"> 7: </span> <span style="color: blue;"><b>{</b></span>
<span style="color: #eeeeee;"> 8: </span>
<span style="color: #eeeeee;"> 9: </span> string ejemplo <span style="color: blue;">=</span> <span style="color: purple;">"Hola, que tal estas"</span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">10: </span>
<span style="color: #eeeeee;">11: </span> string ejemplo2 <span style="color: blue;">=</span> <span style="color: purple;">"Hola"</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">12: </span> string ejemplo3<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">13: </span> ejemplo3 <span style="color: blue;">=</span> <span style="color: purple;">" y hola"</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">14: </span> string ejemplo4 <span style="color: blue;">=</span> ejemplo2<span style="color: blue;">+</span>ejemplo3<span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">15: </span>
<span style="color: #eeeeee;">16: </span> <span style="color: red;"><b>if</b></span> <span style="color: blue;"><b>(</b></span>ejemplo2 <span style="color: blue;">=</span><span style="color: blue;">=</span> <span style="color: purple;">"Hola"</span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;">17: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"El texto 2 es Hola"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">18: </span>
<span style="color: #eeeeee;">19: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"El texto es: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #cccccc;">20: </span> ejemplo<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">21: </span>
<span style="color: #eeeeee;">22: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"La primera letra es: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">23: </span> ejemplo<span style="color: blue;"><b>[</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">24: </span>
<span style="color: #cccccc;">25: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Las tres primeras letras son: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">26: </span> ejemplo<span style="color: blue;"><b>.</b></span>Substring<span style="color: blue;"><b>(</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>,</b></span>3<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">27: </span>
<span style="color: #eeeeee;">28: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"La longitud del texto es: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">29: </span> ejemplo<span style="color: blue;"><b>.</b></span>Length<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">30: </span>
<span style="color: #eeeeee;">31: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"La posicion de \"</span>que\<span style="color: purple;">" es: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">32: </span> ejemplo<span style="color: blue;"><b>.</b></span>IndexOf<span style="color: blue;"><b>(</b></span><span style="color: purple;">"que"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">33: </span>
<span style="color: #eeeeee;">34: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"La ultima A esta en la posicion: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #cccccc;">35: </span> ejemplo<span style="color: blue;"><b>.</b></span>LastIndexOf<span style="color: blue;"><b>(</b></span><span style="color: purple;">"a"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">36: </span>
<span style="color: #eeeeee;">37: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"En mayúsculas: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">38: </span> ejemplo<span style="color: blue;"><b>.</b></span>ToUpper<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">39: </span>
<span style="color: #cccccc;">40: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"En minúsculas: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">41: </span> ejemplo<span style="color: blue;"><b>.</b></span>ToLower<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">42: </span>
<span style="color: #eeeeee;">43: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Si insertamos \"</span><span style="color: blue;"><b>,</b></span> tio\<span style="color: purple;">": {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">44: </span> ejemplo<span style="color: blue;"><b>.</b></span>Insert<span style="color: blue;"><b>(</b></span><span style="color: brown;">4</span><span style="color: blue;"><b>,</b></span><span style="color: purple;">", tio"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">45: </span>
<span style="color: #eeeeee;">46: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Si borramos las 6 primeras letras: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #eeeeee;">47: </span> ejemplo<span style="color: blue;"><b>.</b></span>Remove<span style="color: blue;"><b>(</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">6</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">48: </span>
<span style="color: #eeeeee;">49: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Si cambiamos ESTAS por ESTAMOS: {0}"</span><span style="color: blue;"><b>,</b></span>
<span style="color: #cccccc;">50: </span> ejemplo<span style="color: blue;"><b>.</b></span>Replace<span style="color: blue;"><b>(</b></span><span style="color: purple;">"estas"</span><span style="color: blue;"><b>,</b></span> <span style="color: purple;">"estamos"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">51: </span>
<span style="color: #eeeeee;">52: </span> <span style="color: green;"><i>// Y ahora vamos a leer desde teclado
<span style="color: #eeeeee; font-style: normal;">53: </span></i></span>
<span style="color: #eeeeee;">54: </span> Console<span style="color: blue;"><b>.</b></span>Write<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Dime tu nombre: "</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">55: </span> string nombre <span style="color: blue;">=</span> Console<span style="color: blue;"><b>.</b></span>ReadLine<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">56: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Hola {0}"</span><span style="color: blue;"><b>,</b></span> nombre<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">57: </span>
<span style="color: #eeeeee;">58: </span> Console<span style="color: blue;"><b>.</b></span>Write<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Vamos a sumar dos números... Primero? "</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">59: </span> <span style="color: red;"><b>int</b></span> n1 <span style="color: blue;">=</span> Convert<span style="color: blue;"><b>.</b></span>ToInt32<span style="color: blue;"><b>(</b></span> Console<span style="color: blue;"><b>.</b></span>ReadLine<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span> <span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">60: </span> Console<span style="color: blue;"><b>.</b></span>Write<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Segundo? "</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">61: </span> <span style="color: red;"><b>int</b></span> n2 <span style="color: blue;">=</span> Convert<span style="color: blue;"><b>.</b></span>ToInt32<span style="color: blue;"><b>(</b></span> Console<span style="color: blue;"><b>.</b></span>ReadLine<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span> <span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">62: </span> Console<span style="color: blue;"><b>.</b></span>WriteLine<span style="color: blue;"><b>(</b></span><span style="color: purple;">"Suma: {0}"</span><span style="color: blue;"><b>,</b></span> n1<span style="color: blue;">+</span>n2<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">63: </span> <span style="color: blue;"><b>}</b></span>
<span style="color: #eeeeee;">64: </span><span style="color: blue;"><b>}</b></span></pre>
<br />
Que mostraría algo como<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">El texto 2 es Hola</span><br />
<span style="font-family: Courier New, Courier, monospace;">El texto es: Hola, que tal estas</span><br />
<span style="font-family: Courier New, Courier, monospace;">La primera letra es: H</span><br />
<span style="font-family: Courier New, Courier, monospace;">Las tres primeras letras son: Hol</span><br />
<span style="font-family: Courier New, Courier, monospace;">La longitud del texto es: 19</span><br />
<span style="font-family: Courier New, Courier, monospace;">La posicion de "que" es: 6</span><br />
<span style="font-family: Courier New, Courier, monospace;">La ultima A esta en la posicion: 17</span><br />
<span style="font-family: Courier New, Courier, monospace;">En mayúsculas: HOLA, QUE TAL ESTAS</span><br />
<span style="font-family: Courier New, Courier, monospace;">En minúsculas: hola, que tal estas</span><br />
<span style="font-family: Courier New, Courier, monospace;">Si insertamos ", tio": Hola, tio, que tal estas</span><br />
<span style="font-family: Courier New, Courier, monospace;">Si borramos las 6 primeras letras: que tal estas</span><br />
<span style="font-family: Courier New, Courier, monospace;">Si cambiamos ESTAS por ESTAMOS: Hola, que tal estamos</span><br />
<span style="font-family: Courier New, Courier, monospace;">Dime tu nombre: yo</span><br />
<span style="font-family: Courier New, Courier, monospace;">Hola yo</span><br />
<span style="font-family: Courier New, Courier, monospace;">Vamos a sumar dos números... Primero? 1</span><br />
<span style="font-family: Courier New, Courier, monospace;">Segundo? 3</span><br />
<span style="font-family: Courier New, Courier, monospace;">Suma: 4</span><br />
<br />
<br />
Al pasarlo a C++, deberemos tener en cuenta que:<br />
<br />
<br />
<ul>
<li>Existen "cadenas al estilo C", definidas como "char*" o como "char[]", pero es preferible evitarlas. C++ propone un tipo "cadena de texto", llamado "string".</li>
<li>No usaremos "{0}" para posicionar los parámetros, sino que escribiremos varios valores separados por "<<".</li>
<li>Para comprobar el valor de una cadena no se debe usar "==", porque estaríamos comparando realmente si están en la misma posición de memoria. En vez de eso, debemos usar "cadena1.compare(cadena2)" (que tendrá como resultado 0 si son iguales).</li>
<li>Para extraer un carácter de la cadena se emplean corchetes, al igual que en C#, o bien se podría usar ".at(pos)".</li>
<li>La longitud no se halla con ".Length" sino con ".length()"</li>
<li>Para obtener una subcadena, no usaremos "Substring" sino ".substr", al que se le indica posición inicial y longitud.</li>
<li>Para buscar la primera aparición de un texto se usa "find" y para la última (primera desde la derecha), "rfind". Ambas devuelven el valor especial "string::npos" si no se encuentra.</li>
<li>No hay una forma de convertir a mayúsculas y minúsculas toda una cadena. En el fichero de cabecera "locale" existen un "toupper" y un "tolower" que se pueden aplicar letra a letra.</li>
<li>Para insertar una cadena en medio de otra se usa "insert" y para eliminar un fragmento se emplea "erase".</li>
<li>No podemos reemplazar un texto por otro todas las veces que aparezca. Existe un "replace", pero recibe la posición inicial, la longitud y la cadena que hay que incluir entre esas posiciones.</li>
<li>Las operaciones de modificación, como "insert", "erase" y "replace" no necesitan volcarse a una nueva cadena (aunque se puede), porque modifican la cadena de texto original.</li>
<li>Se puede leer tanto cadenas como números con "cin". Si la cadena puede contener espacios, habrá que usar "cin.getline", al que se le indica tanto la cadena en la que se quiere guardar como la longitud máxima permitida: "cin.getline(texto, 80);"</li>
</ul>
<br />
<br />
<br />
Con todos estos cambios, el fuente podría quedar así...<br />
<div>
<br /></div>
<div>
<pre style="background-color: white;"><span style="color: #cccccc;"> 1: </span>#include <span style="color: blue;"><</span>iostream<span style="color: blue;">></span>
<span style="color: #eeeeee;"> 2: </span>#include <span style="color: blue;"><</span>locale<span style="color: blue;">></span>
<span style="color: #eeeeee;"> 3: </span>using namespace std<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;"> 4: </span>
<span style="color: #cccccc;"> 5: </span><span style="color: red;"><b>int</b></span> <span style="color: red;"><b>main</b></span> <span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;"> 6: </span><span style="color: blue;"><b>{</b></span>
<span style="color: #eeeeee;"> 7: </span> locale zona<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;"> 8: </span> string ejemplo <span style="color: blue;">=</span> <span style="color: purple;">"Hola, que tal estas"</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;"> 9: </span>
<span style="color: #cccccc;">10: </span> string ejemplo2 <span style="color: blue;">=</span> <span style="color: purple;">"Hola"</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">11: </span> string ejemplo3<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">12: </span> ejemplo3 <span style="color: blue;">=</span> <span style="color: purple;">" y hola"</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">13: </span> string ejemplo4 <span style="color: blue;">=</span> ejemplo2<span style="color: blue;">+</span>ejemplo3<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">14: </span>
<span style="color: #cccccc;">15: </span> <span style="color: red;"><b>if</b></span> <span style="color: blue;"><b>(</b></span>ejemplo2 <span style="color: blue;">=</span><span style="color: blue;">=</span> <span style="color: purple;">"Hola"</span><span style="color: blue;"><b>)</b></span>
<span style="color: #eeeeee;">16: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"El texto 2 es Hola"</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">17: </span>
<span style="color: #eeeeee;">18: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"El texto es: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> ejemplo <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">19: </span>
<span style="color: #cccccc;">20: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"La primera letra es: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> ejemplo<span style="color: blue;"><b>[</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>]</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">21: </span>
<span style="color: #eeeeee;">22: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Las tres primeras letras son: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span>
<span style="color: #eeeeee;">23: </span> ejemplo<span style="color: blue;"><b>.</b></span>substr<span style="color: blue;"><b>(</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>,</b></span>3<span style="color: blue;"><b>)</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">24: </span>
<span style="color: #cccccc;">25: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"La longitud del texto es: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> ejemplo<span style="color: blue;"><b>.</b></span>length<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">26: </span>
<span style="color: #eeeeee;">27: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"La posicion de \"</span>que\<span style="color: purple;">" es: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span>
<span style="color: #eeeeee;">28: </span> ejemplo<span style="color: blue;"><b>.</b></span>find<span style="color: blue;"><b>(</b></span><span style="color: purple;">"que"</span><span style="color: blue;"><b>)</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">29: </span>
<span style="color: #cccccc;">30: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"La ultima A esta en la posicion: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span>
<span style="color: #eeeeee;">31: </span> ejemplo<span style="color: blue;"><b>.</b></span>rfind<span style="color: blue;"><b>(</b></span><span style="color: purple;">"a"</span><span style="color: blue;"><b>)</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">32: </span>
<span style="color: #eeeeee;">33: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"En mayúsculas: "</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">34: </span> <span style="color: red;"><b>for</b></span> <span style="color: blue;"><b>(</b></span>size_t i<span style="color: blue;">=</span><span style="color: brown;">0</span><span style="color: blue;"><b>;</b></span> i<span style="color: blue;"><</span>ejemplo<span style="color: blue;"><b>.</b></span>length<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span> i<span style="color: blue;"><span style="color: blue;">+</span><span style="color: blue;">+</span></span><span style="color: blue;"><b>)</b></span>
<span style="color: #cccccc;">35: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> toupper<span style="color: blue;"><b>(</b></span>ejemplo<span style="color: blue;"><b>[</b></span>i<span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>,</b></span> zona<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">36: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">37: </span>
<span style="color: #eeeeee;">38: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"En minúsculas: "</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">39: </span> <span style="color: red;"><b>for</b></span> <span style="color: blue;"><b>(</b></span>size_t i<span style="color: blue;">=</span><span style="color: brown;">0</span><span style="color: blue;"><b>;</b></span> i<span style="color: blue;"><</span>ejemplo<span style="color: blue;"><b>.</b></span>length<span style="color: blue;"><b>(</b></span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span> i<span style="color: blue;"><span style="color: blue;">+</span><span style="color: blue;">+</span></span><span style="color: blue;"><b>)</b></span>
<span style="color: #cccccc;">40: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> tolower<span style="color: blue;"><b>(</b></span>ejemplo<span style="color: blue;"><b>[</b></span>i<span style="color: blue;"><b>]</b></span><span style="color: blue;"><b>,</b></span> zona<span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">41: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">42: </span>
<span style="color: #eeeeee;">43: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Si insertamos \"</span><span style="color: blue;"><b>,</b></span> tio\<span style="color: purple;">": "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span>
<span style="color: #eeeeee;">44: </span> ejemplo<span style="color: blue;"><b>.</b></span>insert<span style="color: blue;"><b>(</b></span><span style="color: brown;">4</span><span style="color: blue;"><b>,</b></span><span style="color: purple;">", tio"</span><span style="color: blue;"><b>)</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">45: </span>
<span style="color: #eeeeee;">46: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Si borramos las 6 primeras letras: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span>
<span style="color: #eeeeee;">47: </span> ejemplo<span style="color: blue;"><b>.</b></span>erase<span style="color: blue;"><b>(</b></span><span style="color: brown;">0</span><span style="color: blue;"><b>,</b></span> <span style="color: brown;">6</span><span style="color: blue;"><b>)</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">48: </span>
<span style="color: #eeeeee;">49: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Si cambiamos ESTAS por ESTAMOS: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span>
<span style="color: #cccccc;">50: </span> ejemplo<span style="color: blue;"><b>.</b></span>replace<span style="color: blue;"><b>(</b></span>ejemplo<span style="color: blue;"><b>.</b></span>find<span style="color: blue;"><b>(</b></span><span style="color: purple;">"estas"</span><span style="color: blue;"><b>)</b></span><span style="color: blue;"><b>,</b></span><span style="color: brown;">5</span><span style="color: blue;"><b>,</b></span> <span style="color: purple;">"estamos"</span><span style="color: blue;"><b>)</b></span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">51: </span>
<span style="color: #eeeeee;">52: </span> <span style="color: green;"><i>// Y ahora vamos a leer desde teclado
<span style="color: #eeeeee; font-style: normal;">53: </span></i></span>
<span style="color: #eeeeee;">54: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Dime tu nombre: "</span><span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">55: </span> string nombre<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">56: </span> cin <span style="color: blue;">></span><span style="color: blue;">></span> nombre<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">57: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Hola "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> nombre <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">58: </span>
<span style="color: #eeeeee;">59: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Vamos a sumar dos números... Primero? "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">60: </span> <span style="color: red;"><b>int</b></span> n1<span style="color: blue;"><b>,</b></span> n2<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">61: </span> cin <span style="color: blue;">></span><span style="color: blue;">></span> n1<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">62: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Segundo? "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">63: </span> cin <span style="color: blue;">></span><span style="color: blue;">></span> n2<span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">64: </span> cout <span style="color: blue;"><</span><span style="color: blue;"><</span> <span style="color: purple;">"Suma: "</span> <span style="color: blue;"><</span><span style="color: blue;"><</span> n1<span style="color: blue;">+</span>n2 <span style="color: blue;"><</span><span style="color: blue;"><</span> endl<span style="color: blue;"><b>;</b></span>
<span style="color: #cccccc;">65: </span>
<span style="color: #eeeeee;">66: </span> <span style="color: red;"><b>return</b></span> <span style="color: brown;">0</span><span style="color: blue;"><b>;</b></span>
<span style="color: #eeeeee;">67: </span><span style="color: blue;"><b>}</b></span></pre>
</div>
<div>
<br /></div>
<div>
<div>
Para mañana, algo de arrays y de estructuras dinámicas...</div>
<div>
<br /></div>
<div>
Como siempre, si tienes dudas, ya sabes: usa los comentarios o el foro de C++ de AprendeAProgramar.</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-15073691856513831452014-11-25T00:35:00.000+01:002014-11-25T00:36:21.945+01:00C++ para C# 2: Condiciones y buclesAhora vamos a ver una serie de cosas que sí se parecen mucho en C# y C++: la comprobación de condiciones y las estructuras repetitivas. Vamos a ver un único fuente en C# que use la mayoría de estas estructuras, junto con variables de tipo "int" y "char", y luego miraremos los (pocos) cambios al convertirlo a C++.<br />
<br />
<pre class="csharp csharp" style="background-color: white; color: #555555; font-size: 15px; line-height: 19.0666675567627px; margin: 0em; padding: 0em;"><span style="color: #0600ff; margin: 0em; padding: 0em;">using</span> <span style="color: teal; margin: 0em; padding: 0em;">System</span>;
<span style="color: red; margin: 0em; padding: 0em;">class</span> CondicionesBucles
<span style="color: black; margin: 0em; padding: 0em;">{</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">public</span> <span style="color: #0600ff; margin: 0em; padding: 0em;">static</span> <span style="color: #0600ff; margin: 0em; padding: 0em;">void</span> Main<span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: black; margin: 0em; padding: 0em;">)</span>
<span style="color: black; margin: 0em; padding: 0em;">{</span>
<span style="color: red; margin: 0em; padding: 0em;">int</span> num1<span style="color: green; margin: 0em; padding: 0em;">=</span><span style="color: red; margin: 0em; padding: 0em;">5</span>, num2<span style="color: green; margin: 0em; padding: 0em;">=-</span><span style="color: red; margin: 0em; padding: 0em;">3</span>;
<span style="color: #0600ff; margin: 0em; padding: 0em;">if</span> <span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: black; margin: 0em; padding: 0em;">(</span> num1 <span style="color: green; margin: 0em; padding: 0em;">></span> 0<span style="color: black; margin: 0em; padding: 0em;">)</span> <span style="color: green; margin: 0em; padding: 0em;">&&</span> <span style="color: black; margin: 0em; padding: 0em;">(</span>num2 <span style="color: green; margin: 0em; padding: 0em;">></span> 0<span style="color: black; margin: 0em; padding: 0em;">)</span><span style="color: black; margin: 0em; padding: 0em;">)</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span> <span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"Los dos numeros son positivos"</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: #0600ff; margin: 0em; padding: 0em;">else</span> <span style="color: #0600ff; margin: 0em; padding: 0em;">if</span> <span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: black; margin: 0em; padding: 0em;">(</span> num1 <span style="color: green; margin: 0em; padding: 0em;">></span> 0<span style="color: black; margin: 0em; padding: 0em;">)</span> || <span style="color: black; margin: 0em; padding: 0em;">(</span>num2 <span style="color: green; margin: 0em; padding: 0em;">></span> 0<span style="color: black; margin: 0em; padding: 0em;">)</span><span style="color: black; margin: 0em; padding: 0em;">)</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span> <span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"Uno es positivo"</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: #0600ff; margin: 0em; padding: 0em;">else</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span> <span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"Ninguno es positivo"</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: teal; font-style: italic; margin: 0em; padding: 0em;">// ----------------</span>
<span style="color: red; margin: 0em; padding: 0em;">char</span> letter <span style="color: green; margin: 0em; padding: 0em;">=</span> <span style="color: #666666; margin: 0em; padding: 0em;">'e'</span>;
<span style="color: #0600ff; margin: 0em; padding: 0em;">switch</span><span style="color: black; margin: 0em; padding: 0em;">(</span>letter<span style="color: black; margin: 0em; padding: 0em;">)</span>
<span style="color: black; margin: 0em; padding: 0em;">{</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'A'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">Write</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"A Mayusc"</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: #0600ff; margin: 0em; padding: 0em;">goto</span> <span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'a'</span>;
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'E'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'I'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'O'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'U'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'a'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'e'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'i'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'o'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'u'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"Es una vocal"</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
break;
<span style="color: #0600ff; margin: 0em; padding: 0em;">case</span> <span style="color: #666666; margin: 0em; padding: 0em;">'.'</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"Es un punto"</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
break;
<span style="color: #0600ff; margin: 0em; padding: 0em;">default</span><span style="color: green; margin: 0em; padding: 0em;">:</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"No es vocal ni punto"</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
break;
<span style="color: black; margin: 0em; padding: 0em;">}</span>
<span style="color: teal; font-style: italic; margin: 0em; padding: 0em;">// ----------------</span>
<span style="color: red; margin: 0em; padding: 0em;">int</span> a<span style="color: green; margin: 0em; padding: 0em;">=</span><span style="color: red; margin: 0em; padding: 0em;">3</span>, b<span style="color: green; margin: 0em; padding: 0em;">=-</span><span style="color: red; margin: 0em; padding: 0em;">5</span>;
<span style="color: red; margin: 0em; padding: 0em;">int</span> cantidadDePositivos <span style="color: green; margin: 0em; padding: 0em;">=</span>
<span style="color: black; margin: 0em; padding: 0em;">(</span>a<span style="color: green; margin: 0em; padding: 0em;">></span>0<span style="color: black; margin: 0em; padding: 0em;">)</span> <span style="color: green; margin: 0em; padding: 0em;">&&</span> <span style="color: black; margin: 0em; padding: 0em;">(</span>b<span style="color: green; margin: 0em; padding: 0em;">></span>0<span style="color: black; margin: 0em; padding: 0em;">)</span> <span style="color: green; margin: 0em; padding: 0em;">?</span> <span style="color: red; margin: 0em; padding: 0em;">2</span>
<span style="color: green; margin: 0em; padding: 0em;">:</span> <span style="color: black; margin: 0em; padding: 0em;">(</span>a<span style="color: green; margin: 0em; padding: 0em;">></span>0<span style="color: black; margin: 0em; padding: 0em;">)</span> || <span style="color: black; margin: 0em; padding: 0em;">(</span>b<span style="color: green; margin: 0em; padding: 0em;">></span>0<span style="color: black; margin: 0em; padding: 0em;">)</span> <span style="color: green; margin: 0em; padding: 0em;">?</span> <span style="color: red; margin: 0em; padding: 0em;">1</span> <span style="color: green; margin: 0em; padding: 0em;">:</span> 0;
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"Positivos: {0}"</span>,
cantidadDePositivos<span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: teal; font-style: italic; margin: 0em; padding: 0em;">// ----------------</span>
<span style="color: red; margin: 0em; padding: 0em;">int</span> first <span style="color: green; margin: 0em; padding: 0em;">=</span> <span style="color: red; margin: 0em; padding: 0em;">5</span>;
<span style="color: red; margin: 0em; padding: 0em;">int</span> last <span style="color: green; margin: 0em; padding: 0em;">=</span> <span style="color: red; margin: 0em; padding: 0em;">12</span>;
<span style="color: red; margin: 0em; padding: 0em;">int</span> i;
<span style="color: teal; font-style: italic; margin: 0em; padding: 0em;">// --- for ---</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">for</span> <span style="color: black; margin: 0em; padding: 0em;">(</span>i <span style="color: green; margin: 0em; padding: 0em;">=</span> first; i <span style="color: green; margin: 0em; padding: 0em;"><=</span> last; i<span style="color: green; margin: 0em; padding: 0em;">++</span><span style="color: black; margin: 0em; padding: 0em;">)</span> <span style="color: black; margin: 0em; padding: 0em;">{</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">Write</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"{0} "</span>,i<span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: black; margin: 0em; padding: 0em;">}</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: teal; font-style: italic; margin: 0em; padding: 0em;">// --- while ---</span>
i <span style="color: green; margin: 0em; padding: 0em;">=</span> first;
<span style="color: #0600ff; margin: 0em; padding: 0em;">while</span> <span style="color: black; margin: 0em; padding: 0em;">(</span> i <span style="color: green; margin: 0em; padding: 0em;"><=</span> last<span style="color: black; margin: 0em; padding: 0em;">)</span> <span style="color: black; margin: 0em; padding: 0em;">{</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">Write</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"{0} "</span>,i<span style="color: black; margin: 0em; padding: 0em;">)</span>;
i++;
<span style="color: black; margin: 0em; padding: 0em;">}</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: teal; font-style: italic; margin: 0em; padding: 0em;">// --- do...while ---</span>
i <span style="color: green; margin: 0em; padding: 0em;">=</span> first;
<span style="color: #0600ff; margin: 0em; padding: 0em;">do</span> <span style="color: black; margin: 0em; padding: 0em;">{</span>
Console.<span style="color: blue; margin: 0em; padding: 0em;">Write</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"{0} "</span>,i<span style="color: black; margin: 0em; padding: 0em;">)</span>;
i++;
<span style="color: black; margin: 0em; padding: 0em;">}</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">while</span> <span style="color: black; margin: 0em; padding: 0em;">(</span> i <span style="color: green; margin: 0em; padding: 0em;"><=</span> last<span style="color: black; margin: 0em; padding: 0em;">)</span>;
Console.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: black; margin: 0em; padding: 0em;">}</span>
<span style="color: black; margin: 0em; padding: 0em;">}</span></pre>
<br />
<br />
En C++ sería muy similar:<br />
<br />
<br />
<pre class="cpp cpp" style="background-color: white; color: #555555; font-size: 15px; line-height: 19.0666675567627px; margin: 0em; padding: 0em;"><span style="color: #666666; margin: 0em; padding: 0em;">// Condiciones y bucles</span>
<span style="color: #339900; margin: 0em; padding: 0em;">#include <iostream></span>
<span style="color: blue; margin: 0em; padding: 0em;">using</span> <span style="color: blue; margin: 0em; padding: 0em;">namespace</span> std;
<span style="color: blue; margin: 0em; padding: 0em;">int</span> main <span style="color: green; margin: 0em; padding: 0em;">(</span><span style="color: green; margin: 0em; padding: 0em;">)</span>
<span style="color: green; margin: 0em; padding: 0em;">{</span>
<span style="color: blue; margin: 0em; padding: 0em;">int</span> num1<span style="color: navy; margin: 0em; padding: 0em;">=</span><span style="color: #0000dd; margin: 0em; padding: 0em;">5</span>, num2<span style="color: navy; margin: 0em; padding: 0em;">=</span><span style="color: #000040; margin: 0em; padding: 0em;">-</span><span style="color: #0000dd; margin: 0em; padding: 0em;">3</span>;
<span style="color: blue; margin: 0em; padding: 0em;">if</span> <span style="color: green; margin: 0em; padding: 0em;">(</span><span style="color: green; margin: 0em; padding: 0em;">(</span> num1 <span style="color: navy; margin: 0em; padding: 0em;">></span> <span style="color: purple; margin: 0em; padding: 0em;">0</span><span style="color: green; margin: 0em; padding: 0em;">)</span> <span style="color: #000040; margin: 0em; padding: 0em;">&&</span> <span style="color: green; margin: 0em; padding: 0em;">(</span>num2 <span style="color: navy; margin: 0em; padding: 0em;">></span> <span style="color: purple; margin: 0em; padding: 0em;">0</span><span style="color: green; margin: 0em; padding: 0em;">)</span><span style="color: green; margin: 0em; padding: 0em;">)</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"Los dos numeros son positivos"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: blue; margin: 0em; padding: 0em;">else</span> <span style="color: blue; margin: 0em; padding: 0em;">if</span> <span style="color: green; margin: 0em; padding: 0em;">(</span><span style="color: green; margin: 0em; padding: 0em;">(</span> num1 <span style="color: navy; margin: 0em; padding: 0em;">></span> <span style="color: purple; margin: 0em; padding: 0em;">0</span><span style="color: green; margin: 0em; padding: 0em;">)</span> || <span style="color: green; margin: 0em; padding: 0em;">(</span>num2 <span style="color: navy; margin: 0em; padding: 0em;">></span> <span style="color: purple; margin: 0em; padding: 0em;">0</span><span style="color: green; margin: 0em; padding: 0em;">)</span><span style="color: green; margin: 0em; padding: 0em;">)</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"Uno es positivo"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: blue; margin: 0em; padding: 0em;">else</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"Ninguno es positivo"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: #666666; margin: 0em; padding: 0em;">// ----------------</span>
<span style="color: blue; margin: 0em; padding: 0em;">char</span> letter <span style="color: navy; margin: 0em; padding: 0em;">=</span> <span style="color: red; margin: 0em; padding: 0em;">'e'</span>;
<span style="color: blue; margin: 0em; padding: 0em;">switch</span><span style="color: green; margin: 0em; padding: 0em;">(</span>letter<span style="color: green; margin: 0em; padding: 0em;">)</span>
<span style="color: green; margin: 0em; padding: 0em;">{</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'A'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"A Mayusc"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'E'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'I'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'O'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'U'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'a'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'e'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'i'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'o'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'u'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"Es una vocal"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: blue; margin: 0em; padding: 0em;">break</span>;
<span style="color: blue; margin: 0em; padding: 0em;">case</span> <span style="color: red; margin: 0em; padding: 0em;">'.'</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"Es un punto"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: blue; margin: 0em; padding: 0em;">break</span>;
<span style="color: blue; margin: 0em; padding: 0em;">default</span><span style="color: teal; margin: 0em; padding: 0em;">:</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"No es vocal ni punto"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: blue; margin: 0em; padding: 0em;">break</span>;
<span style="color: green; margin: 0em; padding: 0em;">}</span>
<span style="color: #666666; margin: 0em; padding: 0em;">// ----------------</span>
<span style="color: blue; margin: 0em; padding: 0em;">int</span> a<span style="color: navy; margin: 0em; padding: 0em;">=</span><span style="color: #0000dd; margin: 0em; padding: 0em;">3</span>, b<span style="color: navy; margin: 0em; padding: 0em;">=</span><span style="color: #000040; margin: 0em; padding: 0em;">-</span><span style="color: #0000dd; margin: 0em; padding: 0em;">5</span>;
<span style="color: blue; margin: 0em; padding: 0em;">int</span> cantidadDePositivos <span style="color: navy; margin: 0em; padding: 0em;">=</span>
<span style="color: green; margin: 0em; padding: 0em;">(</span>a<span style="color: navy; margin: 0em; padding: 0em;">></span><span style="color: purple; margin: 0em; padding: 0em;">0</span><span style="color: green; margin: 0em; padding: 0em;">)</span> <span style="color: #000040; margin: 0em; padding: 0em;">&&</span> <span style="color: green; margin: 0em; padding: 0em;">(</span>b<span style="color: navy; margin: 0em; padding: 0em;">></span><span style="color: purple; margin: 0em; padding: 0em;">0</span><span style="color: green; margin: 0em; padding: 0em;">)</span> <span style="color: teal; margin: 0em; padding: 0em;">?</span> <span style="color: #0000dd; margin: 0em; padding: 0em;">2</span>
<span style="color: teal; margin: 0em; padding: 0em;">:</span> <span style="color: green; margin: 0em; padding: 0em;">(</span>a<span style="color: navy; margin: 0em; padding: 0em;">></span><span style="color: purple; margin: 0em; padding: 0em;">0</span><span style="color: green; margin: 0em; padding: 0em;">)</span> || <span style="color: green; margin: 0em; padding: 0em;">(</span>b<span style="color: navy; margin: 0em; padding: 0em;">></span><span style="color: purple; margin: 0em; padding: 0em;">0</span><span style="color: green; margin: 0em; padding: 0em;">)</span> <span style="color: teal; margin: 0em; padding: 0em;">?</span> <span style="color: #0000dd; margin: 0em; padding: 0em;">1</span> <span style="color: teal; margin: 0em; padding: 0em;">:</span> <span style="color: purple; margin: 0em; padding: 0em;">0</span>;
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"Positivos: "</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span>
cantidadDePositivos <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: #666666; margin: 0em; padding: 0em;">// ----------------</span>
<span style="color: blue; margin: 0em; padding: 0em;">int</span> first <span style="color: navy; margin: 0em; padding: 0em;">=</span> <span style="color: #0000dd; margin: 0em; padding: 0em;">5</span>;
<span style="color: blue; margin: 0em; padding: 0em;">int</span> last <span style="color: navy; margin: 0em; padding: 0em;">=</span> <span style="color: #0000dd; margin: 0em; padding: 0em;">12</span>;
<span style="color: blue; margin: 0em; padding: 0em;">int</span> i;
<span style="color: #666666; margin: 0em; padding: 0em;">// --- for ---</span>
<span style="color: blue; margin: 0em; padding: 0em;">for</span> <span style="color: green; margin: 0em; padding: 0em;">(</span>i <span style="color: navy; margin: 0em; padding: 0em;">=</span> first; i <span style="color: navy; margin: 0em; padding: 0em;"><=</span> last; i<span style="color: #000040; margin: 0em; padding: 0em;">++</span><span style="color: green; margin: 0em; padding: 0em;">)</span>
<span style="color: green; margin: 0em; padding: 0em;">{</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> i <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">" "</span> ;
<span style="color: green; margin: 0em; padding: 0em;">}</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: #666666; margin: 0em; padding: 0em;">// --- while ---</span>
i <span style="color: navy; margin: 0em; padding: 0em;">=</span> first;
<span style="color: blue; margin: 0em; padding: 0em;">while</span> <span style="color: green; margin: 0em; padding: 0em;">(</span> i <span style="color: navy; margin: 0em; padding: 0em;"><=</span> last<span style="color: green; margin: 0em; padding: 0em;">)</span>
<span style="color: green; margin: 0em; padding: 0em;">{</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> i <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">" "</span> ;
i++;
<span style="color: green; margin: 0em; padding: 0em;">}</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">System</span>.<span style="color: #007788; margin: 0em; padding: 0em;">out</span>.<span style="color: #007788; margin: 0em; padding: 0em;">println</span><span style="color: green; margin: 0em; padding: 0em;">(</span><span style="color: green; margin: 0em; padding: 0em;">)</span>;
<span style="color: #666666; margin: 0em; padding: 0em;">// --- do...while ---</span>
i <span style="color: navy; margin: 0em; padding: 0em;">=</span> first;
<span style="color: blue; margin: 0em; padding: 0em;">do</span>
<span style="color: green; margin: 0em; padding: 0em;">{</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> i <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">" "</span>;
i++;
<span style="color: green; margin: 0em; padding: 0em;">}</span>
<span style="color: blue; margin: 0em; padding: 0em;">while</span> <span style="color: green; margin: 0em; padding: 0em;">(</span> i <span style="color: navy; margin: 0em; padding: 0em;"><=</span> last<span style="color: green; margin: 0em; padding: 0em;">)</span>;
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: blue; margin: 0em; padding: 0em;">return</span> <span style="color: purple; margin: 0em; padding: 0em;">0</span>;
<span style="color: green; margin: 0em; padding: 0em;">}</span></pre>
<br />
<br />
Los parecidos son:<br />
<br />
<br />
<ul>
<li>El tipo de datos "int" representa un número entero, igual que en C#, y se le pueden dar valores en el momento de declarar o después. El manejo del tipo "char" también es igual que en C#.</li>
<li>Las condiciones se pueden comprobar con "if" (sencillas), "switch" (múltiples) y con el operador condicional (abreviadas).</li>
<li>Podemos repetir bloques de programa usando "for", "while" y "do-while", de igual manera que en C#.</li>
</ul>
<br />
<br />
Las diferencias (porque apenas hay dos que no nos hayamos encontrado antes):<br />
<br />
<br />
<ul>
<li>Cuando un "case" de la orden "switch" delega en otro distinto, en C++ no hace falta indicar "goto case": si no hay un "break" al final, el control pasa automáticamente al siguiente caso (lo que puede dar lugar a errores difíciles de descubrir en caso de que "olvidemos" algún "break").</li>
<li>Si queremos escribir varias cosas en pantalla usando una misma orden, no se usa {0}, {1} y sucesivos, sino que separamos los distintos elementos con "<<".</li>
</ul>
<br />
<br />
¿Y ahora qué? En la siguiente sesión hablaremos de las cadenas de texto y de cómo leer desde teclado, para pasar después a hablar de arrays y structs, y más adelante a funciones. (También puedes <a href="http://nachocabanes.blogspot.com.es/2014/11/cplusplus-para-csharp-1-hola-mundo.html">leer la toma de contacto</a>).<br />
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-83613023890639313172014-11-24T11:54:00.002+01:002014-11-25T00:07:17.689+01:00C++ para C# 1: Hola, Mundo<h3>
¿Por qué C++ para C#?</h3>
<br />
Porque C# me parece más razonable para comenzar a programar que C++, porque C# tiene una curva de aprendizaje más progresiva, pero permite adquirir buenos fundamentos. Eso no quita que algunos estudiantes que se hayan formando en C# deban trabajar con C++ más adelante, durante su vida laboral. Este texto pretende ayudarles.<br />
<br />
<h3>
¿Cómo cambia un "Hola, Mundo" de C# a C++?</h3>
<br />
Escribir un texto en pantalla es el primer ejercicio que se suele realizar en casi cualquier lenguaje de programación, cuando uno está comenzando a aprender. En C# se haría con<br />
<br />
<br />
<pre class="csharp csharp" style="background-color: white; color: #555555; font-size: 15px; line-height: 19.0666675567627px; margin: 0em; padding: 0em;"><span style="color: red; margin: 0em; padding: 0em;">class</span> HolaMundo <span style="color: black; margin: 0em; padding: 0em;">{</span>
<span style="color: #0600ff; margin: 0em; padding: 0em;">public</span> <span style="color: #0600ff; margin: 0em; padding: 0em;">static</span> <span style="color: #0600ff; margin: 0em; padding: 0em;">void</span> Main<span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: black; margin: 0em; padding: 0em;">)</span> <span style="color: black; margin: 0em; padding: 0em;">{</span>
<span style="color: black; margin: 0em; padding: 0em;">System</span>.<span style="color: blue; margin: 0em; padding: 0em;">Console</span>.<span style="color: blue; margin: 0em; padding: 0em;">WriteLine</span><span style="color: black; margin: 0em; padding: 0em;">(</span><span style="color: #666666; margin: 0em; padding: 0em;">"Hola, Mundo"</span><span style="color: black; margin: 0em; padding: 0em;">)</span>;
<span style="color: black; margin: 0em; padding: 0em;">}</span>
<span style="color: black; margin: 0em; padding: 0em;">}</span></pre>
<br />
<br />
y el equivalente en C++ es<br />
<br />
<br />
<pre class="cpp cpp" style="background-color: white; color: #555555; font-size: 15px; line-height: 19.0666675567627px; margin: 0em; padding: 0em;"><span style="color: #339900; margin: 0em; padding: 0em;">#include <iostream></span>
<span style="color: blue; margin: 0em; padding: 0em;">int</span> main <span style="color: green; margin: 0em; padding: 0em;">(</span><span style="color: green; margin: 0em; padding: 0em;">)</span>
<span style="color: green; margin: 0em; padding: 0em;">{</span>
std<span style="color: teal; margin: 0em; padding: 0em;">::</span><span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"Hola, mundo"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> std<span style="color: teal; margin: 0em; padding: 0em;">::</span><span style="color: #007788; margin: 0em; padding: 0em;">endl</span>;
<span style="color: blue; margin: 0em; padding: 0em;">return</span> <span style="color: purple; margin: 0em; padding: 0em;">0</span>;
<span style="color: green; margin: 0em; padding: 0em;">}</span></pre>
<br />
Las diferencias son:<br />
<br />
<br />
<ul>
<li>Como vamos a usar órdenes de entrada (desde teclado) y salida (por pantalla), deberemos incluir "iostream", y de eso se encarga la orden "#include <iostream>"</li>
<li>El cuerpo del programa se llamará "main", en minúsculas.</li>
<li>Para escribir el texto en pantalla se usa "std::cout", y los datos que queremos escribir se indican separados por símbolos de "<<". El simbolo especial "std::endl" representa un avance de línea.</li>
<li>El programa terminará con "return 0;", para indicar que todo ha funcionado correctamente.</li>
</ul>
<br />
<br />
<br />
Si no queremos tener que escribir "std::" antes de cada orden "cout" y antes de "endl", podemos incluir la línea "using namespace std;" tras los "include", así:<br />
<br />
<pre class="cpp cpp" style="background-color: white; color: #555555; font-size: 15px; line-height: 19.0666675567627px; margin: 0em; padding: 0em;"><span style="color: #339900; margin: 0em; padding: 0em;">#include <iostream></span>
<span style="color: blue; margin: 0em; padding: 0em;">using</span> <span style="color: blue; margin: 0em; padding: 0em;">namespace</span> std;
<span style="color: blue; margin: 0em; padding: 0em;">int</span> main <span style="color: green; margin: 0em; padding: 0em;">(</span><span style="color: green; margin: 0em; padding: 0em;">)</span>
<span style="color: green; margin: 0em; padding: 0em;">{</span>
<span style="color: #0000dd; margin: 0em; padding: 0em;">cout</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> <span style="color: red; margin: 0em; padding: 0em;">"Hola, mundo"</span> <span style="color: navy; margin: 0em; padding: 0em;"><<</span> endl;
<span style="color: blue; margin: 0em; padding: 0em;">return</span> <span style="color: purple; margin: 0em; padding: 0em;">0</span>;
<span style="color: green; margin: 0em; padding: 0em;">}</span></pre>
<br />
<br />
<h3>
¿Y para probar este programa que hemos creado en C++?</h3>
<br />
La recomendación es usar una máquina virtual de Linux, por ejemplo usando VirtualBox. Yo suelo usar Linux Mint, y en su gestor de paquetes Synaptic podemos encontrar editores avanzados como Geany, o incluso el compilador de C++ de Gnu ("g++") si es que no viene preinstalado en nuestra distribución.<br />
<br />
Aquí tienes los detalles: <a href="http://nachocabanes.blogspot.com.es/2013/10/compilar-c-en-linux-con-geany.html">nachocabanes.blogspot.com.es/2013/10/compilar-c-en-linux-con-geany.html</a><br />
<br />
Si prefieres compilar desde Windows (aunque me parece menos razonable), también puedes ver cómo usar <a href="http://nachocabanes.blogspot.com.es/2013/10/compilar-cplusplus-windows-con-codelite.html">CodeLite</a> o <a href="http://nachocabanes.blogspot.com.es/2013/10/compilar-c-en-windows-con-visualc.html">Visual C++</a>.<br />
<br />
Dentro hablaremos de variables, condiciones y bucles... Si hay dudas, usa los comentarios del blog o acude al foro de C++ de AprendeAProgramar:<br />
<br />
<a href="http://www.aprendeaprogramar.com/mod/forum/view.php?id=337">http://www.aprendeaprogramar.com/mod/forum/view.php?id=337</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-43138472135244309242014-10-13T13:09:00.001+02:002014-10-13T15:19:26.451+02:00Cambiar colores en GeanyGeany es posiblemente mi editor preferido para programar: rápido, de pequeño tamaño, multiplataforma, multicodificación, con realce de sintaxis en colores, permite compilar desde el propio editor (y destaca las líneas con errores en el editor), tiene una versión portable...<br />
<br />
Eso sí, permite hacer menos cosas que Notepad++ (especialmente si contamos los plugins de éste último, más numerosos que los de Geany) y configurar los colores de la sintaxis es relativamente trabajoso. Tenemos tres alternativas:<br />
<br />
<br />
<ul>
<li>La primera opción, que debería ser la más simple, pero se queda muy corta, es entrar al menú "Ver" y en la subopción editor encontraremos "Esquemas de color"... pero sólo hay dos esquemas para elegir. Si queremos más, tendremos que buscar alguna página que recopile unos cuantos, como "<a href="https://github.com/codebrainz/geany-themes">Geany themes</a>" y "<a href="https://github.com/robloach/base16-geany">Base 16 Geany</a>", descargar las plantillas y copiarlas a mano en la carpeta "colorschemes" del directorio de instalación de Geany.</li>
</ul>
<div>
<br /></div>
<div>
<ul>
<li>La segunda opción, más avanzada pero muy a mano, es entrar al menú "Archivos de configuración", y escoger "filetypes.common", que tiene la configuración común a todos los tipos de fichero. En ese fichero encontraremos secuencias hexadecimales que indican los colores que se usarán para el texto normal, los comentarios, palabras reservadas, números, cadenas de texto, etc. Podemos cambiar la secuencia por otra que nos guste más (hay muchos "selectores de color" online y en la gran mayoría de programas de dibujo, que te pueden ayudar a saber qué secuencia corresponde a un cierto color), salir de Geany y volver a entrar para ver los cambios.</li>
</ul>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj_7M67zI5uLx5XjhAWDw6GpvJ6uZgUjIuHToFIlJWbJfWNLAFS9VaJPJwh-NaqnUyz0deY9LyU-LfRsAk376vaU_U0vMbUEv7sHRPK1X83RtWSCGO0ioG24_hBzk9Hw-71lnm9A/s1600/coloresGeany.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj_7M67zI5uLx5XjhAWDw6GpvJ6uZgUjIuHToFIlJWbJfWNLAFS9VaJPJwh-NaqnUyz0deY9LyU-LfRsAk376vaU_U0vMbUEv7sHRPK1X83RtWSCGO0ioG24_hBzk9Hw-71lnm9A/s1600/coloresGeany.png" /></a></div>
<div>
<br /></div>
</div>
<div>
<ul>
<li>Una tercera opción, más avanzada, es modificar los ficheros de configuración específicos de un cierto lenguaje, si no quieres que los comentarios (por ejemplo) se vean en el mismo color para todos los lenguajes. En ese caso, deberás entrar a la carpeta "filedefs" dentro del directorio de Geany y editar el fichero correspondiente al lenguaje que te interese (por ejemplo, "filetypes.c" para el lenguaje C, o "filetypes.cpp" para C++, o "filetypes.cs" para C#. </li>
</ul>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-38739650362099164452014-10-02T14:25:00.000+02:002014-10-02T14:25:13.053+02:00Un mini-juego en BASIC de Amstrad CPC (8: varios niveles, subrutinas, sonido, pantallas de carga, mejoras de velocidad...)<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
33. Varios niveles prefijados</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Con la estructura que tenemos y nuestros conocimientos, no es complicado crear varios niveles que el usuario vaya recorriendo de forma sucesiva: cuando no queden premios en el nivel actual, leemos un nuevo mapa desde DATA, rellenando los arrays correspondientes.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Hay dos posibles comportamientos cuando el usuario llegue al último nivel: dar la partida por terminada o volver a comenzar desde el primer nivel. Lo primero es fácil de hacer, pero lo segundo tampoco es difícil: como hemos visto, podemos usar "RESTORE", para que la siguiente lectura desde las líneas DATA se haga desde la primera de ellas (si no lo hacemos así, llegará un momento en el que no haya más DATA que leer y obtengamos el mensaje de error "Data exhausted".</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Los datos de dos niveles más podrían ser éstos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5095</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">5100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPxo--PPP----o--------o---A--PP
<span style="box-sizing: border-box; color: #0044ff;">5200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-----PP---x----PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">5250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP------P--e-----PPPP--e-----PP
<span style="box-sizing: border-box; color: #0044ff;">5300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---------------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">5350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--e-------------PPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPP--PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">5450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPP------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">5500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------x---e-----PPP
<span style="box-sizing: border-box; color: #0044ff;">5550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">5600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP--e------------PPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">5650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP------P-------PPP------PP
<span style="box-sizing: border-box; color: #0044ff;">5700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP---------PP--o-----PPPPPP-PP
<span style="box-sizing: border-box; color: #0044ff;">5750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---o----PP-------------PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-X-----PP------------x----PPP
<span style="box-sizing: border-box; color: #0044ff;">5850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4295</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">5900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-x-------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP------o-----x---o--------e-PP
<span style="box-sizing: border-box; color: #0044ff;">6050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPPPPPPPPPPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">6100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPo---e--x---PP--x--e----o---PP
<span style="box-sizing: border-box; color: #0044ff;">6200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPPPPPPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">6250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----PPPPPPPPPPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">6300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">6350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-------------------e---x-PPP
<span style="box-sizing: border-box; color: #0044ff;">6400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">6450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e--------------e-----PP
<span style="box-sizing: border-box; color: #0044ff;">6500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP--------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--A-----o-----x--o---------PP
<span style="box-sizing: border-box; color: #0044ff;">6600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">6650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y cuando terminen los premios de un nivel, deberemos avanzar de nivel, volviendo a calcular las posiciones de obstáculos y enemigos y volviendo al principio, pero llevando cuidado de no dejar a cero los puntos, ni volver a dejar 3 vidas, sino que se debe continuar con los puntos y las vidas que teníamos, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">3110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> premios=0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> nivel=nivel+<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ERASE</span> xE, yE, velocE, pantalla$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">1455</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si queremos que tras el último nivel se vuelva al primero, haríamos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1070</span> nivel=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1458</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">if</span> nivel><span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> nivel=<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RESTORE</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De modo el programa completo quedaría así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: grey;">' Laberinto 2014</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: grey;">' Desarrollado paso a paso por Nacho</span>
<span style="box-sizing: border-box; color: #0044ff;">1000</span> <span style="box-sizing: border-box; color: grey;">' </span>
<span style="box-sizing: border-box; color: #0044ff;">1010</span> <span style="box-sizing: border-box; color: grey;">' Inicializacion</span>
<span style="box-sizing: border-box; color: #0044ff;">1020</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1030</span> <span style="box-sizing: border-box; color: grey;">' -- Colores de pantalla --</span>
<span style="box-sizing: border-box; color: #0044ff;">1050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">6</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PAPER</span> 0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1060</span> colorPared=<span style="box-sizing: border-box; color: #0044ff;">1</span>: colorEnemigo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: colorPremio=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1070</span> nivel=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1090</span> <span style="box-sizing: border-box; color: grey;">' -- Definicion de caracteres --</span>
<span style="box-sizing: border-box; color: #0044ff;">1100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>, &X11111100, &X11111100, &X11111100, &X0, &X11001111, &X11001111, &X11001111, &X0
<span style="box-sizing: border-box; color: #0044ff;">1150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>, &X11000, &X101100, &X1000110, &X10000011, &X10000011, &X1000110, &X101100, &X11000
<span style="box-sizing: border-box; color: #0044ff;">1200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">242</span>, &X10000, &X10010010, &X1010100, &X111000, &X11111111, &X111000, &X1010100, &X10010010
<span style="box-sizing: border-box; color: #0044ff;">1250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">243</span>, &X10111101, &X1111110, &X11011011, &X11111111, &X11100111, &X11011011, &X1100110, &X11000011
<span style="box-sizing: border-box; color: #0044ff;">1260</span> pared$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">240</span><span style="box-sizing: border-box; color: red;">)</span>: premio$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">241</span><span style="box-sizing: border-box; color: red;">)</span>: obstaculo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">242</span><span style="box-sizing: border-box; color: red;">)</span>: enemigo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">243</span><span style="box-sizing: border-box; color: red;">)</span>: jugador$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1265</span> <span style="box-sizing: border-box; color: grey;">' -- Pantalla de bienvenida --</span>
<span style="box-sizing: border-box; color: #0044ff;">1270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">4</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Bienvenido al laberinto"</span>
<span style="box-sizing: border-box; color: #0044ff;">1272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">7</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Recoge los premios: "</span>; premio$
<span style="box-sizing: border-box; color: #0044ff;">1274</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">9</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Esquiva los obstaculos: "</span>; obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">1276</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">11</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Y evita a los enemigos: "</span>; enemigo$
<span style="box-sizing: border-box; color: #0044ff;">1278</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">4</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Pulsa una tecla para empezar... "</span>;
<span style="box-sizing: border-box; color: #0044ff;">1280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PLOT</span> 0,0,colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">639</span>,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">639</span>,<span style="box-sizing: border-box; color: #0044ff;">399</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> 0,<span style="box-sizing: border-box; color: #0044ff;">399</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> 0,0
<span style="box-sizing: border-box; color: #0044ff;">1285</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PLOT</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>,colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">634</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">634</span>,<span style="box-sizing: border-box; color: #0044ff;">394</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">394</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>
<span style="box-sizing: border-box; color: #0044ff;">1300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Pausa</span>
<span style="box-sizing: border-box; color: #0044ff;">1305</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>
<span style="box-sizing: border-box; color: #0044ff;">1310</span> <span style="box-sizing: border-box; color: grey;">' -- Teclas ---</span>
<span style="box-sizing: border-box; color: #0044ff;">1320</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>
<span style="box-sizing: border-box; color: #0044ff;">1330</span> joyArriba=<span style="box-sizing: border-box; color: #0044ff;">72</span>: joyAbajo=<span style="box-sizing: border-box; color: #0044ff;">73</span>: joyDerecha=<span style="box-sizing: border-box; color: #0044ff;">75</span>: joyIzqda=<span style="box-sizing: border-box; color: #0044ff;">74</span>
<span style="box-sizing: border-box; color: #0044ff;">1350</span> <span style="box-sizing: border-box; color: grey;">' -- Datos del juego --</span>
<span style="box-sizing: border-box; color: #0044ff;">1400</span> terminado=0:chocado=0
<span style="box-sizing: border-box; color: #0044ff;">1450</span> puntos=0: vidas=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1455</span> premios=0: enemigos=0
<span style="box-sizing: border-box; color: #0044ff;">1458</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">if</span> nivel><span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> nivel=<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RESTORE</span>
<span style="box-sizing: border-box; color: #0044ff;">1460</span> <span style="box-sizing: border-box; color: grey;">' -- Lectura del mapa desde DATA --</span>
<span style="box-sizing: border-box; color: #0044ff;">1550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"Generando..."</span>
<span style="box-sizing: border-box; color: #0044ff;">1810</span> <span style="box-sizing: border-box; color: grey;">' Vamos a vaciar el array, para evitar basura</span>
<span style="box-sizing: border-box; color: #0044ff;">1820</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f
<span style="box-sizing: border-box; color: #0044ff;">1840</span> <span style="box-sizing: border-box; color: grey;">' Y a rellenar los datos reales</span>
<span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">1900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">1950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=pared$
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: x=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: yInicial=y: xInicial=x
<span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=premio$
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">2150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila
<span style="box-sizing: border-box; color: #0044ff;">2160</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujado de la parte estatica del mapa --</span>
<span style="box-sizing: border-box; color: #0044ff;">2162</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">2164</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>
<span style="box-sizing: border-box; color: #0044ff;">2166</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> c, f
<span style="box-sizing: border-box; color: #0044ff;">2168</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$;
<span style="box-sizing: border-box; color: #0044ff;">2170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$;
<span style="box-sizing: border-box; color: #0044ff;">2172</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$;
<span style="box-sizing: border-box; color: #0044ff;">2174</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c
<span style="box-sizing: border-box; color: #0044ff;">2176</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f
<span style="box-sizing: border-box; color: #0044ff;">2200</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">2250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">2300</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigos de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">2350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">2400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">2500</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">2550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyArriba<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y-<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> >-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyAbajo<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y+<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyDerecha<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x+<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyIzqda<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2800</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">2850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">2860</span> <span style="box-sizing: border-box; color: grey;">' Avanzar si no es pared; dar la vuelta si lo es</span>
<span style="box-sizing: border-box; color: #0044ff;">2865</span> obj$=pantalla$<span style="box-sizing: border-box; color: red;">(</span>yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2870</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> obj$<>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=-velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">3000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3050</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">3100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> puntos=puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>: premios=premios-<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">3110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> premios=0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> nivel=nivel+<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ERASE</span> xE, yE, velocE, pantalla$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">1455</span>
<span style="box-sizing: border-box; color: #0044ff;">3150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">3400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3460</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> vidas = vidas-<span style="box-sizing: border-box; color: #0044ff;">1</span>: chocado = 0: y = yInicial: x = xInicial
<span style="box-sizing: border-box; color: #0044ff;">3470</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> vidas = 0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3500</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">3550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> jugador$
<span style="box-sizing: border-box; color: #0044ff;">3950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> enemigo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">4200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos ; <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">4210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">23</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Vidas "</span>; vidas
<span style="box-sizing: border-box; color: #0044ff;">4250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
<span style="box-sizing: border-box; color: #0044ff;">4260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">12</span>,<span style="box-sizing: border-box; color: #0044ff;">10</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" Partida terminada! "</span>
<span style="box-sizing: border-box; color: #0044ff;">4265</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">500</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i: <span style="box-sizing: border-box; color: grey;">'Pausa por tiempo</span>
<span style="box-sizing: border-box; color: #0044ff;">4270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$<><span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Vaciamos buffer del teclado</span>
<span style="box-sizing: border-box; color: #0044ff;">4275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Y esperamos una tecla</span>
<span style="box-sizing: border-box; color: #0044ff;">4280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RESTORE</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ERASE</span> xE, yE, velocE, pantalla$
<span style="box-sizing: border-box; color: #0044ff;">4290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">1265</span>
<span style="box-sizing: border-box; color: #0044ff;">4295</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">4300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o--PPP----o---PPPP-o------PP
<span style="box-sizing: border-box; color: #0044ff;">4400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---xPPP---x----PPPP---x----PP
<span style="box-sizing: border-box; color: #0044ff;">4450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--e-----PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">4500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPP------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">4550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--PPPPPPPPPP--PPPPP----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPP--PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">4650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-A--PPPPP---PPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">4700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------x---e-----PPP
<span style="box-sizing: border-box; color: #0044ff;">4750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">4800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">4850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e--------PPPPPP---P--PP
<span style="box-sizing: border-box; color: #0044ff;">4900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----x--------------PPP-PP-PP
<span style="box-sizing: border-box; color: #0044ff;">4950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------x--o-----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">5050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5095</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">5100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPxo--PPP----o--------o---A--PP
<span style="box-sizing: border-box; color: #0044ff;">5200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-----PP---x----PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">5250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP------P--e-----PPPP--e-----PP
<span style="box-sizing: border-box; color: #0044ff;">5300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---------------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">5350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--e-------------PPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPP--PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">5450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPP------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">5500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------x---e-----PPP
<span style="box-sizing: border-box; color: #0044ff;">5550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">5600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP--e------------PPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">5650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP------P-------PPP------PP
<span style="box-sizing: border-box; color: #0044ff;">5700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP---------PP--o-----PPPPPP-PP
<span style="box-sizing: border-box; color: #0044ff;">5750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---o----PP-------------PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-X-----PP------------x----PPP
<span style="box-sizing: border-box; color: #0044ff;">5850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4295</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">5900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-x-------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP------o-----x---o--------e-PP
<span style="box-sizing: border-box; color: #0044ff;">6050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPPPPPPPPPPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">6100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPo---e--x---PP--x--e----o---PP
<span style="box-sizing: border-box; color: #0044ff;">6200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPPPPPPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">6250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----PPPPPPPPPPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">6300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">6350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-------------------e---x-PPP
<span style="box-sizing: border-box; color: #0044ff;">6400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">6450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e--------------e-----PP
<span style="box-sizing: border-box; color: #0044ff;">6500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP--------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--A-----o-----x--o---------PP
<span style="box-sizing: border-box; color: #0044ff;">6600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">6650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
34. Subrutinas</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En lenguajes más modernos (incluso versiones más modernas de BASIC, pero no en las de mediados de los años 80) podemos crear "subrutinas con nombre", de modo que la apariencia de nuestro programa recuerde mucho a las acciones que queremos que lleve a cabo:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="txt" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">Inicializar
DibujarPantallaPresentacion
ComenzarJuego</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
donde, a su vez, "ComenzarJuego", supondría tareas como</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="txt" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">InicializarPartida
Repetir:
ComprobarTeclas
MoverEnemigosYEntorno
ComprobarColisiones
DibujarElementos</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Esto además ayuda a repetir menos código: si debemos dibujar la pantalla de presentación desde distintos puntos de nuestro programa, bastará llamar desde cada sitio a la correspondiente subrutina.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En una versión de BASIC tan antigua, no se puede llegar a ese nivel de legibilidad, pero sí se pueden crear "subrutinas con número", a las que se salta con GOSUB y de las que se vuelve con RETURN, de modo que el principio de nuestro programa sería:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1000</span>: <span style="box-sizing: border-box; color: grey;">' Inicializacion del juego</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1260</span>: <span style="box-sizing: border-box; color: grey;">' Pantalla de presentacion</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1340</span>: <span style="box-sizing: border-box; color: grey;">' Inicializacion de partida</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">2190</span>: <span style="box-sizing: border-box; color: grey;">' Bucle de juego</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: grey;">' Y volvemos a la pantalla de present.</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El resto del programa no tiene grandes cambios, pero sí algunos. Por ejemplo, podemos aprovechar para mover las órdenes DIM a la subrutina de inicialización del juego, y así evitar usar ERASE y volverlas a crear. El fuente completo podría ser:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: grey;">' Laberinto 2014</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: grey;">' Desarrollado paso a paso por Nacho</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1000</span>: <span style="box-sizing: border-box; color: grey;">' Inicializacion del juego</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1260</span>: <span style="box-sizing: border-box; color: grey;">' Pantalla de presentacion</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1340</span>: <span style="box-sizing: border-box; color: grey;">' Inicializacion de partida</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">2190</span>: <span style="box-sizing: border-box; color: grey;">' Bucle de juego</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: grey;">' Y volvemos a la pantalla de present.</span>
<span style="box-sizing: border-box; color: #0044ff;">1000</span> <span style="box-sizing: border-box; color: grey;">' </span>
<span style="box-sizing: border-box; color: #0044ff;">1010</span> <span style="box-sizing: border-box; color: grey;">' Inicializacion</span>
<span style="box-sizing: border-box; color: #0044ff;">1020</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1030</span> <span style="box-sizing: border-box; color: grey;">' -- Colores de pantalla --</span>
<span style="box-sizing: border-box; color: #0044ff;">1050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">6</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PAPER</span> 0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1060</span> colorPared=<span style="box-sizing: border-box; color: #0044ff;">1</span>: colorEnemigo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: colorPremio=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1070</span> nivel=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1090</span> <span style="box-sizing: border-box; color: grey;">' -- Definicion de caracteres --</span>
<span style="box-sizing: border-box; color: #0044ff;">1100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>, &X11111100, &X11111100, &X11111100, &X0, &X11001111, &X11001111, &X11001111, &X0
<span style="box-sizing: border-box; color: #0044ff;">1110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>, &X11000, &X101100, &X1000110, &X10000011, &X10000011, &X1000110, &X101100, &X11000
<span style="box-sizing: border-box; color: #0044ff;">1120</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">242</span>, &X10000, &X10010010, &X1010100, &X111000, &X11111111, &X111000, &X1010100, &X10010010
<span style="box-sizing: border-box; color: #0044ff;">1130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">243</span>, &X10111101, &X1111110, &X11011011, &X11111111, &X11100111, &X11011011, &X1100110, &X11000011
<span style="box-sizing: border-box; color: #0044ff;">1140</span> pared$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">240</span><span style="box-sizing: border-box; color: red;">)</span>: premio$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">241</span><span style="box-sizing: border-box; color: red;">)</span>: obstaculo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">242</span><span style="box-sizing: border-box; color: red;">)</span>: enemigo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">243</span><span style="box-sizing: border-box; color: red;">)</span>: jugador$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1150</span> <span style="box-sizing: border-box; color: grey;">' -- Teclas ---</span>
<span style="box-sizing: border-box; color: #0044ff;">1160</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>
<span style="box-sizing: border-box; color: #0044ff;">1170</span> joyArriba=<span style="box-sizing: border-box; color: #0044ff;">72</span>: joyAbajo=<span style="box-sizing: border-box; color: #0044ff;">73</span>: joyDerecha=<span style="box-sizing: border-box; color: #0044ff;">75</span>: joyIzqda=<span style="box-sizing: border-box; color: #0044ff;">74</span>
<span style="box-sizing: border-box; color: #0044ff;">1180</span> <span style="box-sizing: border-box; color: grey;">' -- Teclas ---</span>
<span style="box-sizing: border-box; color: #0044ff;">1190</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RETURN</span>
<span style="box-sizing: border-box; color: #0044ff;">1260</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1265</span> <span style="box-sizing: border-box; color: grey;">' -- Pantalla de bienvenida --</span>
<span style="box-sizing: border-box; color: #0044ff;">1266</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1229</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>
<span style="box-sizing: border-box; color: #0044ff;">1270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">4</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Bienvenido al laberinto"</span>
<span style="box-sizing: border-box; color: #0044ff;">1272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">7</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Recoge los premios: "</span>; premio$
<span style="box-sizing: border-box; color: #0044ff;">1274</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">9</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Esquiva los obstaculos: "</span>; obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">1276</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">11</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Y evita a los enemigos: "</span>; enemigo$
<span style="box-sizing: border-box; color: #0044ff;">1278</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">4</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Pulsa una tecla para empezar... "</span>;
<span style="box-sizing: border-box; color: #0044ff;">1280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PLOT</span> 0,0,colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">639</span>,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">639</span>,<span style="box-sizing: border-box; color: #0044ff;">399</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> 0,<span style="box-sizing: border-box; color: #0044ff;">399</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> 0,0
<span style="box-sizing: border-box; color: #0044ff;">1285</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PLOT</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>,colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">634</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">634</span>,<span style="box-sizing: border-box; color: #0044ff;">394</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">394</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>
<span style="box-sizing: border-box; color: #0044ff;">1300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Pausa</span>
<span style="box-sizing: border-box; color: #0044ff;">1310</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RETURN</span>
<span style="box-sizing: border-box; color: #0044ff;">1340</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1350</span> <span style="box-sizing: border-box; color: grey;">' -- Datos del juego al comienzo de una nueva partida --</span>
<span style="box-sizing: border-box; color: #0044ff;">1351</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1400</span> terminado=0:chocado=0
<span style="box-sizing: border-box; color: #0044ff;">1410</span> puntos=0: vidas=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1420</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1425</span> <span style="box-sizing: border-box; color: grey;">' -- Datos del juego al comienzo de cada nivel --</span>
<span style="box-sizing: border-box; color: #0044ff;">1426</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1430</span> premios=0: enemigos=0
<span style="box-sizing: border-box; color: #0044ff;">1440</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">if</span> nivel><span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> nivel=<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RESTORE</span>
<span style="box-sizing: border-box; color: #0044ff;">1460</span> <span style="box-sizing: border-box; color: grey;">' -- Lectura del mapa desde DATA --</span>
<span style="box-sizing: border-box; color: #0044ff;">1650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"Generando..."</span>
<span style="box-sizing: border-box; color: #0044ff;">1810</span> <span style="box-sizing: border-box; color: grey;">' Vamos a vaciar el array, para evitar basura</span>
<span style="box-sizing: border-box; color: #0044ff;">1820</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f
<span style="box-sizing: border-box; color: #0044ff;">1840</span> <span style="box-sizing: border-box; color: grey;">' Y a rellenar los datos reales</span>
<span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">1900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">1950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=pared$
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: x=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: yInicial=y: xInicial=x
<span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=premio$
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">2150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila
<span style="box-sizing: border-box; color: #0044ff;">2160</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujado de la parte estatica del mapa --</span>
<span style="box-sizing: border-box; color: #0044ff;">2162</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">2164</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>
<span style="box-sizing: border-box; color: #0044ff;">2166</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> c, f
<span style="box-sizing: border-box; color: #0044ff;">2168</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$;
<span style="box-sizing: border-box; color: #0044ff;">2170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$;
<span style="box-sizing: border-box; color: #0044ff;">2172</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$;
<span style="box-sizing: border-box; color: #0044ff;">2174</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c
<span style="box-sizing: border-box; color: #0044ff;">2176</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f
<span style="box-sizing: border-box; color: #0044ff;">2180</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RETURN</span>
<span style="box-sizing: border-box; color: #0044ff;">2190</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">2200</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">2201</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">2250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">2300</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigos de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">2350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">2400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">2500</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">2550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyArriba<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y-<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> >-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyAbajo<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y+<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyDerecha<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x+<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyIzqda<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2800</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">2850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">2860</span> <span style="box-sizing: border-box; color: grey;">' Avanzar si no es pared; dar la vuelta si lo es</span>
<span style="box-sizing: border-box; color: #0044ff;">2865</span> obj$=pantalla$<span style="box-sizing: border-box; color: red;">(</span>yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2870</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> obj$<>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=-velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">3000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3050</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">3100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> puntos=puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>: premios=premios-<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">3110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> premios=0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> nivel=nivel+<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1420</span>
<span style="box-sizing: border-box; color: #0044ff;">3150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">3400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3460</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> vidas = vidas-<span style="box-sizing: border-box; color: #0044ff;">1</span>: chocado = 0: y = yInicial: x = xInicial
<span style="box-sizing: border-box; color: #0044ff;">3470</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> vidas = 0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3500</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">3550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> jugador$
<span style="box-sizing: border-box; color: #0044ff;">3950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> enemigo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">4200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos ; <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">4210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">23</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Vidas "</span>; vidas
<span style="box-sizing: border-box; color: #0044ff;">4250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
<span style="box-sizing: border-box; color: #0044ff;">4260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">12</span>,<span style="box-sizing: border-box; color: #0044ff;">10</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" Partida terminada! "</span>
<span style="box-sizing: border-box; color: #0044ff;">4265</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">500</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i: <span style="box-sizing: border-box; color: grey;">'Pausa por tiempo</span>
<span style="box-sizing: border-box; color: #0044ff;">4270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$<><span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Vaciamos buffer del teclado</span>
<span style="box-sizing: border-box; color: #0044ff;">4275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Y esperamos una tecla</span>
<span style="box-sizing: border-box; color: #0044ff;">4280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RESTORE</span>
<span style="box-sizing: border-box; color: #0044ff;">4290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RETURN</span>
<span style="box-sizing: border-box; color: #0044ff;">4295</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">4300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o--PPP----o---PPPP-o-------PP
<span style="box-sizing: border-box; color: #0044ff;">4400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---xPPP---x----PPPP---x-----PP
<span style="box-sizing: border-box; color: #0044ff;">4450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--e-----PPPP---------PP
<span style="box-sizing: border-box; color: #0044ff;">4500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPP------PPPP---------PP
<span style="box-sizing: border-box; color: #0044ff;">4550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--PPPPPPPPPP--PPPPP----PPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPP--PPPPPPPP-----PPPP
<span style="box-sizing: border-box; color: #0044ff;">4650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-A--PPPPP---PPPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">4700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------x---e------PPP
<span style="box-sizing: border-box; color: #0044ff;">4750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">4800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP-----PP
<span style="box-sizing: border-box; color: #0044ff;">4850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e--------PPPPPP----P--PP
<span style="box-sizing: border-box; color: #0044ff;">4900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----x--------------PPP--PP-PP
<span style="box-sizing: border-box; color: #0044ff;">4950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------x--o-----PPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o-------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">5050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5095</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">5100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPxo--PPP----o---------o---A--PP
<span style="box-sizing: border-box; color: #0044ff;">5200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-----PP---x-----PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">5250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP------P--e------PPPP--e-----PP
<span style="box-sizing: border-box; color: #0044ff;">5300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">5350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--e--------------PPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPP---PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">5450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPP-------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">5500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-----------------x---e-----PPP
<span style="box-sizing: border-box; color: #0044ff;">5550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">5600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP--e-------------PPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">5650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP------P--------PPP------PP
<span style="box-sizing: border-box; color: #0044ff;">5700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP---------PP---o-----PPPPPP-PP
<span style="box-sizing: border-box; color: #0044ff;">5750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---o----PP--------------PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-X-----PP-------------x----PPP
<span style="box-sizing: border-box; color: #0044ff;">5850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4295</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">5900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-x--------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP------o------x---o--------e-PP
<span style="box-sizing: border-box; color: #0044ff;">6050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPP-PPPPPPPPPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">6100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPo---e--x----PP--x--e----o---PP
<span style="box-sizing: border-box; color: #0044ff;">6200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPPPPPPPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">6250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----PPPPPPPPPPPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">6300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">6350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP--------------------e---x-PPP
<span style="box-sizing: border-box; color: #0044ff;">6400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP------------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">6450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e---------------e-----PP
<span style="box-sizing: border-box; color: #0044ff;">6500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP---------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--A------o-----x--o---------PP
<span style="box-sizing: border-box; color: #0044ff;">6600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o-------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">6650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
35. Efectos sonoros, explosiones y música de fondo</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La orden SOUND permite emitir sonidos a través del altavoz interno de un CPC o de unos altavoces externos que se hayan conectado a la salida de audio. En su formato más sencillo, indicaremos datos: el canal que queremos usar (tenemos 3 canales, lo que permite tocar varias notas a la vez) y el tono de la nota:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, <span style="box-sizing: border-box; color: #0044ff;">478</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Eso toca a través del canal 1 una nota DO en una escala intermedia (el CPC permite notas dentro de una gama de 8 octavas, numeradas desde -3 hasta 4; este es el DO de la octava 0).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El resto de tonos de las notas de esta octava intermedia son:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="txt" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">DO = 478
RE = 426
MI = 379
FA = 358
SOL = 319
LA = 284
SI = 253</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Así, si queremos tocar una melodía sencilla como RE-MI-FA-RE- RE-MI-FA-RE- FA-SOL-LA lo podríamos hacer con un programita sencillo como</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: grey;">'Usaremos variables, por legibilidad</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> DO0 = <span style="box-sizing: border-box; color: #0044ff;">478</span>: RE0 = <span style="box-sizing: border-box; color: #0044ff;">426</span>: MI0 = <span style="box-sizing: border-box; color: #0044ff;">379</span>: FA0 = <span style="box-sizing: border-box; color: #0044ff;">358</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> SOL0 = <span style="box-sizing: border-box; color: #0044ff;">319</span>: LA0 = <span style="box-sizing: border-box; color: #0044ff;">284</span>: SI0 = <span style="box-sizing: border-box; color: #0044ff;">253</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: grey;">' Y esta es la melodia</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, RE0
<span style="box-sizing: border-box; color: #0044ff;">60</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, MI0
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, FA0
<span style="box-sizing: border-box; color: #0044ff;">80</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, RE0
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, RE0
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, MI0
<span style="box-sizing: border-box; color: #0044ff;">110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, FA0
<span style="box-sizing: border-box; color: #0044ff;">120</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, RE0
<span style="box-sizing: border-box; color: #0044ff;">130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, FA0
<span style="box-sizing: border-box; color: #0044ff;">140</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, SOL0
<span style="box-sizing: border-box; color: #0044ff;">150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>, LA0</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El segundo canal de sonido es el 2 y el tercero es el 4. Así, podemos hacer que una nota suene a la vez por el primer y el tercer canal indicando como canales 1+4=5, o que suene por los tres canales a la vez con 1+2+4=7.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">7</span>, <span style="box-sizing: border-box; color: #0044ff;">478</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un tercer parámetro opcional es la duración de la nota, que se mide en centésimas de segundo. Si no indicamos otra cosa, la nota se escuchará durante 20 centésimas de segundo. Si queremos que suene un segundo entero, lo haríamos con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">7</span>, <span style="box-sizing: border-box; color: #0044ff;">478</span>, <span style="box-sizing: border-box; color: #0044ff;">100</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un cuarto parámetro es el volumen, desde 0 (silencio) a 15 (máximo), con 12 como valor por defecto. Por ejemplo, una nota de volumen medio podría ser</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">7</span>, <span style="box-sizing: border-box; color: #0044ff;">478</span>, <span style="box-sizing: border-box; color: #0044ff;">100</span>, <span style="box-sizing: border-box; color: #0044ff;">7</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Hay más parámetros, pero de uso más avanzado: podemos definir una "envolvente de volumen", para hacer que el sonido suba o baje durante la reproducción de una nota, así como una "envolvente de tono", para conseguir que el sonido se vuelva más grave o más agudo en ciertos puntos de la nota. Con ambos, podemos hacer que los sonidos sean mucho más ricos, pero caen fuera del cometido de este texto. Si te atrae el tema, puedes consultar el manual oficial del Amstrad CPC o algún libro específico como el llamado "Música y sonidos con Amstrad".</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
También podemos añadir un séptimo parámetro a la orden SOUND: un 1, para indicar que emita ruido a la vez (un "ruido sintético", que se conoce como "ruido blanco"). Por ejemplo, podemos imitar las interferencias de una radio o televisión con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> repeticion=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">6</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> frecuencia=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">20</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SOUND</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,frecuencia,<span style="box-sizing: border-box; color: #0044ff;">50</span>,<span style="box-sizing: border-box; color: #0044ff;">15</span> ,0,0,<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">4</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero estas ordenes "tal cual" nos sirven para reproducir música en una pantalla de presentación, no tanto durante el juego, porque en medio de una partida deberíamos hacer otras cosas mientras suena la música. Afortunadamente, el BASIC de los CPC permite fijar "interrupciones", que se ejecutarán al cabo de un cierto tiempo (AFTER) o de forma repetiría tras cada cierto tiempo (EVERY):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">EVERY</span> <span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">10000</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El primer dato es el tiempo que tardará en saltarse a esa subrutina, medido en 1/50 segundos. Por tanto, esa orden salta a la línea 10.000 una vez cada segundo. Un segundo dato opciones es el número de temporizador que queremos usar. Tenemos cuatro temporizadores, por si necesitáramos varias tareas simultáneas. Si no indicamos nada, usaremos el temporizador 0, que es de menor prioridad.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">EVERY</span> <span style="box-sizing: border-box; color: #0044ff;">50</span>,<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">10000</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Cuando queramos que algo deje de repetirse, podemos desactivar un temporizado, usando la función REMAIN, que además nos dice el tiempo que quedaba hasta el siguiente "salto":</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">restante = <span style="box-sizing: border-box; color: grey;">REMAIN(3)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por tanto, podríamos usar sentencias READ y DATA para almacenar en un array las notas de una melodía, y llamar cada cierto tiempo a una rutina que reprodujese la siguiente nota del array (o volviera a la primera, cuando lleguemos al final del array).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(No, esta vez no hay versión completa del fuente ampliado, queda propuesto si te atreves con ello)</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
36. Otras posibles mejoras</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por supuesto, dejamos muchas cosas en el tintero. Aquí tienes pinceladas de algunas de ellas, por si te apetece investigar y llegar más allá...</div>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
36.1. Una pantalla de carga</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La pantalla de un CPC empieza en la dirección de memoria 49152 y ocupa los 16 Kb superiores, hasta la 65535. Se puede guardar dibujar cualquier cosa en pantalla, ya sea con un programa específico de dibujo o con un programa creado por nosotros mismos. Si es desde un programa nuestro, se podría guardar con la orden SAVE, a la que se le indicaría el parámetro "b" (fichero binario), la dirección de inicio (49152) y el tamaño (16384):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SAVE</span> <span style="box-sizing: border-box; color: #008800;">"imagen.bin"</span>,b,<span style="box-sizing: border-box; color: #0044ff;">49152</span>,<span style="box-sizing: border-box; color: #0044ff;">16384</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Aunque era más habitual usar estos parámetros en hexadecimal:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SAVE</span> <span style="box-sizing: border-box; color: #008800;">"imagen.bin"</span>,b,&C000,&<span style="box-sizing: border-box; color: #0044ff;">4000</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para cargar la imagen bastaría con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOAD</span> <span style="box-sizing: border-box; color: #008800;">"imagen.bin"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(si la cabecera del fichero no es la correcta, quizá fuera necesario indicar la dirección de carga:)</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOAD</span> <span style="box-sizing: border-box; color: #008800;">"imagen.bin"</span>, &C000</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La alternativa más vistosa es crear la imagen desde un equipo moderno y finalmente convertirla al formato de CPC. Hay herramientas que lo permiten, como ConvImgCPC:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<a href="http://www.genesis8bit.fr/frontend/graphic.php" style="box-sizing: border-box; color: #008cba; line-height: inherit; text-decoration: none;">http://www.genesis8bit.fr/frontend/graphic.php</a></div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si descargamos esta utilidad y la lanzamos, veremos una pantalla con textos en francés, que podemos traducir a inglés si hacemos clic en la bandera inglesa:</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/convimgcpc1.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El primer paso será cargar una imagen ("Read image")</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/convimgcpc2.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
, elegir un modo de pantalla (Mode 0, Mode 1 o Mode 2), escoger si queremos algún tipo de "dithering" (patrón geométrico para las zonas que tengan tonalidades intermedias) y pulsar el botón "Process":</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/convimgcpc3.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Al guardar la imagen resultante ("Save picture"), obtendremos un fichero con extensión SCR, que podremos cargar directamente en el emulador (si usamos la opción "Tape bypass" que ya vimos de CPCE)</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOAD</span> <span style="box-sizing: border-box; color: #008800;">"imagen.scr"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/convimgcpc4.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(Si el conversor ha cambiado la paleta de colores, como en este caso, podemos recrearla, mirando la paleta que aparece en la parte inferior de ConvImgCpc y las equivalencias que vimos en el apartado 13 (esta información aparecerá posiblemente también en la ventana de información de ConvImgCpc como "most used colors" tras pulsar el botón "Process"):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">13</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">14</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">26</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
36.2. Ligeras mejoras de velocidad</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos medir tiempos si añadimos las líneas</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1470</span> t=<span style="box-sizing: border-box; color: #000088; font-weight: bold;">TIME</span>
<span style="box-sizing: border-box; color: #0044ff;">2177</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: red;">(</span>TIME-t<span style="box-sizing: border-box; color: red;">)</span>/<span style="box-sizing: border-box; color: #0044ff;">300</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Entonces, veremos que se tarda algo más de 36 segundos y medio en generar y dibujar el primer nivel.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Una primera mejora es usar números enteros en vez de números reales. Si no decimos lo contrario, BASIC supondrá que queremos trabajar con números reales (con decimales), pero estos son más lentos y en este juego no necesitamos usar cifras decimales. Para indicar que queremos que un número sea entero, podemos hacer que termine con el símbolo "%":</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1820</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f% = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c% = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c%: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f%</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Ese pequeño cambio hace ganar algo más de un segundo cuando vaciamos el mapa. De igual modo, si usamos números enteros en el redibujado ganamos 3 segundos más:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2162</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f% = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">2164</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c% = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>
<span style="box-sizing: border-box; color: #0044ff;">2166</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> c%, f%
<span style="box-sizing: border-box; color: #0044ff;">2168</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span> = pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$;
<span style="box-sizing: border-box; color: #0044ff;">2170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$;
<span style="box-sizing: border-box; color: #0044ff;">2172</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$;
<span style="box-sizing: border-box; color: #0044ff;">2174</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c%
<span style="box-sizing: border-box; color: #0044ff;">2176</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f%</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Una forma alternativa de conseguir lo mismo es definir las variables como enteras, con DEFINT</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1055</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DEFINT</span> c,f</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Con eso ganamos otros dos segundos más (ya estamos en 30, en vez de 36). Podríamos hacer lo mismo con la X y la Y, pero como no se usan en bucles grandes, no será una ganancia tan clara.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Una segunda mejora viene de plantear si estamos haciendo más trabajo del necesario. Por ejemplo, hemos creado un array tan grande como la pantalla para poder comprobar elementos sin hacer operaciones airtméticas, pero no necesitamos recorrer ese array tan grande a la hora de dibujar, nos basta con recorrer la zona que corresponde al mapa:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2162</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f% = <span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">18</span>
<span style="box-sizing: border-box; color: #0044ff;">2164</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c% = <span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">36</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Con eso rebajamos de 30 segundos a 24. Podemos hacer lo mismo en la línea que vacía el contenido del array de pantalla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1820</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f% = <span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">18</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c% = <span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">36</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c%: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f%</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero esa es una operación más sencilla, así que ganamos poco más de un segundo. Podemos arañar otro poco si evitamos hacer operaciones repetitivas: no necesitamos sumar 2 a cada fila y sumar 4 a cada columna cada vez que analizamos, ni necesitamos volver a comprobar cuál es el carácter que hay en cierta posición del mapa:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">1900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">1950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">2000</span> filaPantalla = fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: columnaPantalla = columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>
<span style="box-sizing: border-box; color: #0044ff;">2010</span> simboloActual$ = <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>filaPantalla, columnaPantalla<span style="box-sizing: border-box; color: red;">)</span>=pared$
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>filaPantalla, columnaPantalla<span style="box-sizing: border-box; color: red;">)</span>=obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=filaPantalla: x=columnaPantalla: yInicial=y: xInicial=x
<span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>filaPantalla, columnaPantalla<span style="box-sizing: border-box; color: red;">)</span>=premio$
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=filaPantalla: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columnaPantalla: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">2150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Hemos rebajado hasta 21 segundos. Pero todavía queda espacio para la mejora, incluso sin dejar de usar BASIC: podemos evitar comprobar varias veces el valor de misma variable (por ejemplo, una posición de la pantalla), usando ELSE tras cada IF para indicar que se trata de casos contrarios o, si las líneas son largas (es nuestro caso, porque el BASIC de los CPC no permite más de 255 caracteres por línea) usando GOTO para saltar al final de las comprobaciones en cuanto una se cumpla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> simboloPantalla$=pared$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> simboloPantalla$=obstaculo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De hecho, si comprobamos también si hay que escribir un espacio, podemos evitar vaciar antes el array de pantalla y eliminar la línea 1820:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1820</span>
<span style="box-sizing: border-box; color: #0044ff;">2020</span> simboloPantalla$=<span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">2040</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"-"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> simboloPantalla$=pared$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> simboloPantalla$=obstaculo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=filaPantalla: x=columnaPantalla: yInicial=y: xInicial=x: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: simboloPantalla$=premio$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=filaPantalla: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columnaPantalla: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2095</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>filaPantalla, columnaPantalla<span style="box-sizing: border-box; color: red;">)</span> = simboloPantalla$</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y podemos hacer mejoras similares en el dibujado: comenzar por el caso más probable y saltar al final tras cada caso que se cumpla. De hecho, ya que vamos a dibujar todos los caracteres (incluido espacios), podríamos hacer un único LOCATE al principio de cada fila y escribir con "punto y coma" para no bajar de línea tras cada símbolo:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2162</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f% = <span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">18</span>
<span style="box-sizing: border-box; color: #0044ff;">2163</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>, f%
<span style="box-sizing: border-box; color: #0044ff;">2164</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c% = <span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">36</span>
<span style="box-sizing: border-box; color: #0044ff;">2167</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">" "</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>;: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2174</span>
<span style="box-sizing: border-box; color: #0044ff;">2168</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span> = pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$;: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2174</span>
<span style="box-sizing: border-box; color: #0044ff;">2170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$;: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2174</span>
<span style="box-sizing: border-box; color: #0044ff;">2172</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f%,c%<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$;: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2174</span>
<span style="box-sizing: border-box; color: #0044ff;">2174</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c%
<span style="box-sizing: border-box; color: #0044ff;">2176</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f%</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Con eso llegamos hasta 14 segundos. Como mejora final, podemos juntar la parte que rellena el array y la parte que lo muestra</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"Generando..."</span>
<span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">1860</span> filaPantalla = fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,filapantalla
<span style="box-sizing: border-box; color: #0044ff;">1900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">1950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">2000</span> columnaPantalla = columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>
<span style="box-sizing: border-box; color: #0044ff;">2010</span> simboloActual$ = <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2020</span> simboloPantalla$=<span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">2040</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"-"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared:simboloPantalla$=pared$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo:simboloPantalla$=obstaculo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=filaPantalla: x=columnaPantalla: yInicial=y: xInicial=x: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio:premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: simboloPantalla$=premio$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=filaPantalla: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columnaPantalla: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2095</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>filaPantalla, columnaPantalla<span style="box-sizing: border-box; color: red;">)</span> = simboloPantalla$
<span style="box-sizing: border-box; color: #0044ff;">2096</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> simboloPantalla$;
<span style="box-sizing: border-box; color: #0044ff;">2100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">2150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Ya estamos en 10 segundos para generar y dibujar cada nivel. Mucho más razonable...</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: grey;">' Laberinto 2014</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: grey;">' Desarrollado paso a paso por Nacho</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1000</span>: <span style="box-sizing: border-box; color: grey;">' Inicializacion del juego</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1260</span>: <span style="box-sizing: border-box; color: grey;">' Pantalla de presentacion</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1340</span>: <span style="box-sizing: border-box; color: grey;">' Inicializacion de partida</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">2190</span>: <span style="box-sizing: border-box; color: grey;">' Bucle de juego</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: grey;">' Y volvemos a la pantalla de present.</span>
<span style="box-sizing: border-box; color: #0044ff;">1000</span> <span style="box-sizing: border-box; color: grey;">' </span>
<span style="box-sizing: border-box; color: #0044ff;">1010</span> <span style="box-sizing: border-box; color: grey;">' Inicializacion</span>
<span style="box-sizing: border-box; color: #0044ff;">1020</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1030</span> <span style="box-sizing: border-box; color: grey;">' -- Colores de pantalla --</span>
<span style="box-sizing: border-box; color: #0044ff;">1050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">6</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PAPER</span> 0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1055</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DEFINT</span> c,f,n
<span style="box-sizing: border-box; color: #0044ff;">1060</span> colorPared=<span style="box-sizing: border-box; color: #0044ff;">1</span>: colorEnemigo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: colorPremio=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1070</span> nivel=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1090</span> <span style="box-sizing: border-box; color: grey;">' -- Definicion de caracteres --</span>
<span style="box-sizing: border-box; color: #0044ff;">1100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>, &X11111100, &X11111100, &X11111100, &X0, &X11001111, &X11001111, &X11001111, &X0
<span style="box-sizing: border-box; color: #0044ff;">1110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>, &X11000, &X101100, &X1000110, &X10000011, &X10000011, &X1000110, &X101100, &X11000
<span style="box-sizing: border-box; color: #0044ff;">1120</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">242</span>, &X10000, &X10010010, &X1010100, &X111000, &X11111111, &X111000, &X1010100, &X10010010
<span style="box-sizing: border-box; color: #0044ff;">1130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">243</span>, &X10111101, &X1111110, &X11011011, &X11111111, &X11100111, &X11011011, &X1100110, &X11000011
<span style="box-sizing: border-box; color: #0044ff;">1140</span> pared$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">240</span><span style="box-sizing: border-box; color: red;">)</span>: premio$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">241</span><span style="box-sizing: border-box; color: red;">)</span>: obstaculo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">242</span><span style="box-sizing: border-box; color: red;">)</span>: enemigo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">243</span><span style="box-sizing: border-box; color: red;">)</span>: jugador$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1150</span> <span style="box-sizing: border-box; color: grey;">' -- Teclas ---</span>
<span style="box-sizing: border-box; color: #0044ff;">1160</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>
<span style="box-sizing: border-box; color: #0044ff;">1170</span> joyArriba=<span style="box-sizing: border-box; color: #0044ff;">72</span>: joyAbajo=<span style="box-sizing: border-box; color: #0044ff;">73</span>: joyDerecha=<span style="box-sizing: border-box; color: #0044ff;">75</span>: joyIzqda=<span style="box-sizing: border-box; color: #0044ff;">74</span>
<span style="box-sizing: border-box; color: #0044ff;">1180</span> <span style="box-sizing: border-box; color: grey;">' -- Teclas ---</span>
<span style="box-sizing: border-box; color: #0044ff;">1190</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RETURN</span>
<span style="box-sizing: border-box; color: #0044ff;">1260</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1265</span> <span style="box-sizing: border-box; color: grey;">' -- Pantalla de bienvenida --</span>
<span style="box-sizing: border-box; color: #0044ff;">1266</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1229</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>
<span style="box-sizing: border-box; color: #0044ff;">1270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">4</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Bienvenido al laberinto"</span>
<span style="box-sizing: border-box; color: #0044ff;">1272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">7</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Recoge los premios: "</span>; premio$
<span style="box-sizing: border-box; color: #0044ff;">1274</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">9</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Esquiva los obstaculos: "</span>; obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">1276</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">11</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Y evita a los enemigos: "</span>; enemigo$
<span style="box-sizing: border-box; color: #0044ff;">1278</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">4</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Pulsa una tecla para empezar... "</span>;
<span style="box-sizing: border-box; color: #0044ff;">1280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PLOT</span> 0,0,colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">639</span>,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">639</span>,<span style="box-sizing: border-box; color: #0044ff;">399</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> 0,<span style="box-sizing: border-box; color: #0044ff;">399</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> 0,0
<span style="box-sizing: border-box; color: #0044ff;">1285</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PLOT</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>,colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">634</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">634</span>,<span style="box-sizing: border-box; color: #0044ff;">394</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">394</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>
<span style="box-sizing: border-box; color: #0044ff;">1300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Pausa</span>
<span style="box-sizing: border-box; color: #0044ff;">1310</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RETURN</span>
<span style="box-sizing: border-box; color: #0044ff;">1340</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1350</span> <span style="box-sizing: border-box; color: grey;">' -- Datos del juego al comienzo de una nueva partida --</span>
<span style="box-sizing: border-box; color: #0044ff;">1351</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1400</span> terminado=0:chocado=0
<span style="box-sizing: border-box; color: #0044ff;">1410</span> puntos=0: vidas=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1420</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1425</span> <span style="box-sizing: border-box; color: grey;">' -- Datos del juego al comienzo de cada nivel --</span>
<span style="box-sizing: border-box; color: #0044ff;">1426</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1430</span> premios=0: enemigos=0
<span style="box-sizing: border-box; color: #0044ff;">1440</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">if</span> nivel><span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> nivel=<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RESTORE</span>
<span style="box-sizing: border-box; color: #0044ff;">1460</span> <span style="box-sizing: border-box; color: grey;">' -- Lectura del mapa desde DATA y dibujado de la parte estatica --</span>
<span style="box-sizing: border-box; color: #0044ff;">1470</span> <span style="box-sizing: border-box; color: grey;">'t=TIME</span>
<span style="box-sizing: border-box; color: #0044ff;">1650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"Generando..."</span>
<span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">1860</span> filaPantalla = fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,filapantalla
<span style="box-sizing: border-box; color: #0044ff;">1900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">1950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">2000</span> columnaPantalla = columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>
<span style="box-sizing: border-box; color: #0044ff;">2010</span> simboloActual$ = <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2020</span> simboloPantalla$=<span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">2040</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"-"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared:simboloPantalla$=pared$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo:simboloPantalla$=obstaculo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=filaPantalla: x=columnaPantalla: yInicial=y: xInicial=x: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio:premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: simboloPantalla$=premio$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">2095</span>
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> simboloActual$ = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=filaPantalla: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columnaPantalla: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2095</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>filaPantalla, columnaPantalla<span style="box-sizing: border-box; color: red;">)</span> = simboloPantalla$
<span style="box-sizing: border-box; color: #0044ff;">2096</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> simboloPantalla$;
<span style="box-sizing: border-box; color: #0044ff;">2100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">2150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila
<span style="box-sizing: border-box; color: #0044ff;">2177</span> <span style="box-sizing: border-box; color: grey;">'LOCATE 1,25: PRINT (TIME-t)/300</span>
<span style="box-sizing: border-box; color: #0044ff;">2180</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RETURN</span>
<span style="box-sizing: border-box; color: #0044ff;">2190</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">2200</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">2201</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">2250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">2300</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigos de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">2350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">2400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">2500</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">2550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyArriba<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y-<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> >-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyAbajo<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y+<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyDerecha<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x+<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyIzqda<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2800</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">2850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">2860</span> <span style="box-sizing: border-box; color: grey;">' Avanzar si no es pared; dar la vuelta si lo es</span>
<span style="box-sizing: border-box; color: #0044ff;">2865</span> obj$=pantalla$<span style="box-sizing: border-box; color: red;">(</span>yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2870</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> obj$<>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=-velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">3000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3050</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">3100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> puntos=puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>: premios=premios-<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">3110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> premios=0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> nivel=nivel+<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOSUB</span> <span style="box-sizing: border-box; color: #0044ff;">1420</span>
<span style="box-sizing: border-box; color: #0044ff;">3150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">3400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3460</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> vidas = vidas-<span style="box-sizing: border-box; color: #0044ff;">1</span>: chocado = 0: y = yInicial: x = xInicial
<span style="box-sizing: border-box; color: #0044ff;">3470</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> vidas = 0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3500</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">3550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> jugador$
<span style="box-sizing: border-box; color: #0044ff;">3950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> enemigo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">4200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos ; <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">4210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">23</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Vidas "</span>; vidas
<span style="box-sizing: border-box; color: #0044ff;">4250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
<span style="box-sizing: border-box; color: #0044ff;">4260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">12</span>,<span style="box-sizing: border-box; color: #0044ff;">10</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" Partida terminada! "</span>
<span style="box-sizing: border-box; color: #0044ff;">4265</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">500</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i: <span style="box-sizing: border-box; color: grey;">'Pausa por tiempo</span>
<span style="box-sizing: border-box; color: #0044ff;">4270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$<><span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Vaciamos buffer del teclado</span>
<span style="box-sizing: border-box; color: #0044ff;">4275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Y esperamos una tecla</span>
<span style="box-sizing: border-box; color: #0044ff;">4280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RESTORE</span>
<span style="box-sizing: border-box; color: #0044ff;">4290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RETURN</span>
<span style="box-sizing: border-box; color: #0044ff;">4295</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">4300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o--PPP----o---PPPP-o-------PP
<span style="box-sizing: border-box; color: #0044ff;">4400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---xPPP---x----PPPP---x-----PP
<span style="box-sizing: border-box; color: #0044ff;">4450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--e-----PPPP---------PP
<span style="box-sizing: border-box; color: #0044ff;">4500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPP------PPPP---------PP
<span style="box-sizing: border-box; color: #0044ff;">4550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--PPPPPPPPPP--PPPPP----PPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPP--PPPPPPPP-----PPPP
<span style="box-sizing: border-box; color: #0044ff;">4650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-A--PPPPP---PPPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">4700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------x---e------PPP
<span style="box-sizing: border-box; color: #0044ff;">4750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">4800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP-----PP
<span style="box-sizing: border-box; color: #0044ff;">4850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e--------PPPPPP----P--PP
<span style="box-sizing: border-box; color: #0044ff;">4900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----x--------------PPP--PP-PP
<span style="box-sizing: border-box; color: #0044ff;">4950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------x--o-----PPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o-------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">5050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5095</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">5100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPxo--PPP----o---------o---A--PP
<span style="box-sizing: border-box; color: #0044ff;">5200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-----PP---x-----PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">5250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP------P--e------PPPP--e-----PP
<span style="box-sizing: border-box; color: #0044ff;">5300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">5350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--e--------------PPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPP---PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">5450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPP-------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">5500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-----------------x---e-----PPP
<span style="box-sizing: border-box; color: #0044ff;">5550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">5600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP--e-------------PPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">5650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP------P--------PPP------PP
<span style="box-sizing: border-box; color: #0044ff;">5700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP---------PP---o-----PPPPPP-PP
<span style="box-sizing: border-box; color: #0044ff;">5750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---o----PP--------------PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-X-----PP-------------x----PPP
<span style="box-sizing: border-box; color: #0044ff;">5850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4295</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">5900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-x--------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP------o------x---o--------e-PP
<span style="box-sizing: border-box; color: #0044ff;">6050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPP-PPPPPPPPPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">6100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPo---e--x----PP--x--e----o---PP
<span style="box-sizing: border-box; color: #0044ff;">6200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPPPPPPPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">6250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----PPPPPPPPPPPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">6300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">6350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP--------------------e---x-PPP
<span style="box-sizing: border-box; color: #0044ff;">6400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP------------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">6450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e---------------e-----PP
<span style="box-sizing: border-box; color: #0044ff;">6500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP---------------------------PP
<span style="box-sizing: border-box; color: #0044ff;">6550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--A------o-----x--o---------PP
<span style="box-sizing: border-box; color: #0044ff;">6600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o-------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">6650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
36.3. Movimientos más suaves</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Nuestro personaje y nuestros enemigos parpadean al moverse. Una forma de evitarlo (o al menos de hacer que se note un poco menos) es no borrar al principio de cada pasada por el bucle de juego, sino <b style="box-sizing: border-box; line-height: inherit;">borrar justo antes de escribir</b>, usando tanto las variables X e Y como otras Xantiguo e Yantiguo, que guarden los valores anteriores.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Otra ayuda para que la imagen en pantalla sea más suave es <b style="box-sizing: border-box; line-height: inherit;">sincronizar el dibujado</b> en pantalla con el momento en el que el haz de electrones está actualizando el contenido de ésta. Esto se consigue en un CPC usando la orden CALL &BD19 justo antes de empezar a escribir. Pero como no dibujamos la pantalla en orden estricto de arriba a abajo, el resultado tampoco será tan bueno como podría.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero además se mueven a saltos. Cada carácter ocupa una posición dentro de una cuadrícula de 25x40. Pero en los CPC no hay distinción entre modo de texto y modo gráfico, por lo que podemos dibujar líneas o puntos con una precisión de 320x200 puntos, pero al escribir con PRINT y movernos con LOCATE, avanzamos o retrocedemos de 8 en 8 píxeles. ¿No podemos dibujar también un carácter como el de nuestro personaje en cualquiera de esas 320x200 posiciones de la pantalla gráfica? La respuesta es que sí. Para eso usaremos la orden TAG. Desde que utilicemos esa orden y hasta que la desactivemos con "TAGOFF", las órdenes PRINT escribirán el texto en <b style="box-sizing: border-box; line-height: inherit;">coordenadas gráficas</b> de 640x400. Basta indicar antes la posición con una orden MOVE y terminar la orden PRINT con un punto y coma (de lo contrario, se verían en pantalla los símbolos de avance de línea):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TAG</span> : <span style="box-sizing: border-box; color: grey;">' Escritura en coordenadas graficas</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DEG</span> : <span style="box-sizing: border-box; color: grey;">' Angulos en grados</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> x = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">640</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">STEP</span> <span style="box-sizing: border-box; color: #0044ff;">4</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> y = <span style="box-sizing: border-box; color: #0044ff;">200</span> + <span style="box-sizing: border-box; color: #0044ff;">150</span>*<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">SIN</span><span style="box-sizing: border-box; color: red;">(</span>x<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">60</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MOVE</span> x, y
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Hola"</span>;
<span style="box-sizing: border-box; color: #0044ff;">80</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> x
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TAGOFF</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_tag.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero no veremos ningún ejemplo aplicado directamente a nuestro juego, porque supondría demasiados cambios... Si tienes inquietud, puedes intentar crear una nueva versión, en la que los elementos se muevan de 4 en 4 píxeles, por ejemplo.</div>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
36.4. Laberintos comprimidos</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Una pantalla de 25x40 caracteres puede contiene 1.000 caracteres, lo que supondría que pudieramos almacenar más de 30 pantallas con facilidad en nuestro programa, sin necesidad siquiera de recurrir a guardar datos de pantallas en disco para cargarlos más adelante.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si además nuestras pantallas son más pequeñas (16x32 en nuestro caso, = 512 bytes), podemos duplicar con facilidad la cantidad de pantallas que podemos almacenar.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero si queremos guardar aún más pantallas, podemos <b style="box-sizing: border-box; line-height: inherit;">comprimir</b> la información. Hay formas muy simples con las que podemos ocupar menos de la mitad del espacio: ahora mismo estamos usando un carácter para representar cada tipo de elemento, pero apenas tenemos 5 tipos de elementos...</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Una alternativa es que cada carácter represente varias posiciones de pantalla. Por ejemplo, en vez de que "p" represente una casilla de pared, podríamos hacer que "p" fueran dos casillas de pared, "q" fuera una seguida por un espacio y "r" fuera una precedida por un espacio. Usaremos muchos más símbolos, pero los datos de los mapas ocuparán la mitad.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Otra alternativa es usar pares de caracteres, para indicar qué carácter debe haber y cuántas veces se debe repetir: p1 podría indicar una casilla de pared y p9 nueve casillas seguidas de pared. En un mapa totalmente irregular, esto supondría gastar el doble de espacio que en un mapa normal, pero si el mapa tiene muchos datos repetitivos, el ahorro puede ser grande.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por supuesto, existen algoritmos mucho más eficientes en el aprovechamiento del espacio, pero también son más complejos, totalmente fuera de la intención de este texto.</div>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
36.5. Imágenes multicolor</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Los CPC no incluyen soporte de <b style="box-sizing: border-box; line-height: inherit;">sprites</b> (figuras móviles multicolor) por hardware. Bueno... esto sólo es cierto para la gama original, que es la que nos interesa, pero no para los modelos Plus. Tampoco se puede mover figuras en color por software a suficiente velocidad usando sólo BASIC...</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero existe la alternativa de incluir rutinas en código máquina dentro de un programa en BASIC. Hay algunas bibliotecas de Sprites que permiten hacerlo de forma no demasiado compleja. Si eres realmente atrevido, puedes echar un vistazo a <a href="http://www.cpcwiki.eu/index.php/Sprites_Alive" style="box-sizing: border-box; color: #008cba; line-height: inherit; text-decoration: none;">Sprites Alive</a> o a las <a href="http://www.sean.co.uk/books/amstrad/amstrad8.shtm" style="box-sizing: border-box; color: #008cba; line-height: inherit; text-decoration: none;">rutinas creadas por Sean McManus</a>.</div>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
36.x ...</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(Sí, seguro que quedan todavía más cosas... pero ya está bien, ¿no?)</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-33439618318101390992014-10-01T14:15:00.001+02:002014-10-01T14:42:26.718+02:00Un mini-juego en BASIC de Amstrad CPC (7: elementos en el fondo,varias vidas, joystick, intro, dibujar)<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
28. Más elementos en el fondo</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Vamos a hacer que los elementos del juego sean parte del fondo. Como necesitaremos líneas nuevas entre las ya existentes, vamos a comenzar por renumerar, dejando un espacio de 50 entre cada par de líneas:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">RENUM</span> <span style="box-sizing: border-box; color: #0044ff;">1000</span>, <span style="box-sizing: border-box; color: #0044ff;">1</span>, <span style="box-sizing: border-box; color: #0044ff;">50</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En primer lugar, podríamos modificar el mapa, para que incluya los obstáculos (que podríamos representar con una "x"), los premios (una "o", por ejemplo) e incluso los enemigos ("e") y nuestra propia posición de partida ("A):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">4300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o--PPP----o---PPPP-o------PP
<span style="box-sizing: border-box; color: #0044ff;">4400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---xPPP---x----PPPP---x----PP
<span style="box-sizing: border-box; color: #0044ff;">4450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--e-----PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">4500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPP------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">4550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--PPPPPPPPPP--PPPPP----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPP--PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">4650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-A--PPPPP---PPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">4700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------x---e-----PPP
<span style="box-sizing: border-box; color: #0044ff;">4750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">4800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">4850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e--------PPPPPP---P--PP
<span style="box-sizing: border-box; color: #0044ff;">4900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----x--------------PPP-PP-PP
<span style="box-sizing: border-box; color: #0044ff;">4950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------x--o-----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">5050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Así, necesitaremos un array para el fondo, pero también uno de enemigos, para que se muevan independientemente del fondo. (No será necesario array de obstáculos ni de premios). El análisis del mapa va a ser bastante más complejo que antes.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por ejemplo, la lectura y análisis de los DATA, guardando en el mapa de pantalla las paredes y los obstáculos podría ser</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">1900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">1950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=pared$
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">2100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">2150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De igual modo, podríamos obtener nuestra posición desde el mapa:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: x=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y la información sobre los premios, incluyendo un contador que nos ayude a saber cuándo hemos superado esta pantalla (cuando ya no quede ningún premio por recoger):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=premio$</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y la información de los enemigos la trasladaríamos a los arrays correspondientes:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y podríamos dibujar la pantalla a partir del contenido del array:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2162</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">2164</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>
<span style="box-sizing: border-box; color: #0044ff;">2166</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> c, f
<span style="box-sizing: border-box; color: #0044ff;">2168</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$;
<span style="box-sizing: border-box; color: #0044ff;">2170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$;
<span style="box-sizing: border-box; color: #0044ff;">2172</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$;
<span style="box-sizing: border-box; color: #0044ff;">2174</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c
<span style="box-sizing: border-box; color: #0044ff;">2176</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Como este proceso es relativamente lento, podemos avisar al usuario para que no se desespere...</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_laberinto028a.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
A la hora de comprobar el teclado, antes de movernos a una posición deberemos comprobar si no es una pared:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y-<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y+<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x+<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y lo mismo deberán hacer los enemigos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">2860</span> <span style="box-sizing: border-box; color: grey;">' Avanzar si no es pared; dar la vuelta si lo es</span>
<span style="box-sizing: border-box; color: #0044ff;">2870</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span><span style="box-sizing: border-box; color: red;">)</span> <> pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=-velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">3000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero también hay premios y obstáculos: si el enemigo pasa por encima de ellos, se borrarán de la pantalla; deberemos redibujarlos... o simplemente no permitir que pueda pasar por encima, sino que rebote también en ellos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2865</span> obj$=pantalla$<span style="box-sizing: border-box; color: red;">(</span>yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2870</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> obj$<>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=-velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si la posición a la que llegamos es un premio, debemos borrarlo y sumar puntos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">3100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> puntos=puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>: premios=premios-<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">" "</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si la posición a la que llegamos es un obstáculo, se acabó la partida:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">3150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y lo mismo si es uno de los enemigos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">3350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">3400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y no hace falta redibujar las paredes, ni los obstáculos, ni los premios, sólo el personaje, los enemigos y el marcador:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">3550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> jugador$
<span style="box-sizing: border-box; color: #0044ff;">3950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> enemigo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">4200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos ; <span style="box-sizing: border-box; color: #008800;">" "</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Con todo esto, la apariencia resultante sería</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_laberinto028b.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y el fuente completo por ahora quedaría</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: grey;">' Laberinto 2014</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: grey;">' Desarrollado paso a paso por Nacho</span>
<span style="box-sizing: border-box; color: #0044ff;">1000</span> <span style="box-sizing: border-box; color: grey;">' </span>
<span style="box-sizing: border-box; color: #0044ff;">1010</span> <span style="box-sizing: border-box; color: grey;">' Inicializacion</span>
<span style="box-sizing: border-box; color: #0044ff;">1020</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1030</span> <span style="box-sizing: border-box; color: grey;">' -- Colores de pantalla --</span>
<span style="box-sizing: border-box; color: #0044ff;">1050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">6</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PAPER</span> 0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1060</span> colorPared=<span style="box-sizing: border-box; color: #0044ff;">1</span>: colorEnemigo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: colorPremio=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1090</span> <span style="box-sizing: border-box; color: grey;">' -- Definicion de caracteres --</span>
<span style="box-sizing: border-box; color: #0044ff;">1100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>, &X11111100, &X11111100, &X11111100, &X0, &X11001111, &X11001111, &X11001111, &X0
<span style="box-sizing: border-box; color: #0044ff;">1150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>, &X11000, &X101100, &X1000110, &X10000011, &X10000011, &X1000110, &X101100, &X11000
<span style="box-sizing: border-box; color: #0044ff;">1200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">242</span>, &X10000, &X10010010, &X1010100, &X111000, &X11111111, &X111000, &X1010100, &X10010010
<span style="box-sizing: border-box; color: #0044ff;">1250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">243</span>, &X10111101, &X1111110, &X11011011, &X11111111, &X11100111, &X11011011, &X1100110, &X11000011
<span style="box-sizing: border-box; color: #0044ff;">1300</span> pared$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">240</span><span style="box-sizing: border-box; color: red;">)</span>: premio$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">241</span><span style="box-sizing: border-box; color: red;">)</span>: obstaculo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">242</span><span style="box-sizing: border-box; color: red;">)</span>: enemigo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">243</span><span style="box-sizing: border-box; color: red;">)</span>: jugador$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1310</span> <span style="box-sizing: border-box; color: grey;">' -- Teclas ---</span>
<span style="box-sizing: border-box; color: #0044ff;">1320</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>
<span style="box-sizing: border-box; color: #0044ff;">1350</span> <span style="box-sizing: border-box; color: grey;">' -- Datos del juego --</span>
<span style="box-sizing: border-box; color: #0044ff;">1400</span> terminado=0
<span style="box-sizing: border-box; color: #0044ff;">1450</span> puntos=0
<span style="box-sizing: border-box; color: #0044ff;">1455</span> premios=0: enemigos=0
<span style="box-sizing: border-box; color: #0044ff;">1460</span> <span style="box-sizing: border-box; color: grey;">' -- Lectura del mapa desde DATA --</span>
<span style="box-sizing: border-box; color: #0044ff;">1550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"Generando..."</span>
<span style="box-sizing: border-box; color: #0044ff;">1810</span> <span style="box-sizing: border-box; color: grey;">' Vamos a vaciar el array, para evitar basura</span>
<span style="box-sizing: border-box; color: #0044ff;">1820</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f
<span style="box-sizing: border-box; color: #0044ff;">1840</span> <span style="box-sizing: border-box; color: grey;">' Y a rellenar los datos reales</span>
<span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">1900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">1950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=pared$
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: x=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>
<span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=premio$
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">2150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila
<span style="box-sizing: border-box; color: #0044ff;">2160</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujado de la parte estatica del mapa --</span>
<span style="box-sizing: border-box; color: #0044ff;">2162</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">2164</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>
<span style="box-sizing: border-box; color: #0044ff;">2166</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> c, f
<span style="box-sizing: border-box; color: #0044ff;">2168</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$;
<span style="box-sizing: border-box; color: #0044ff;">2170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$;
<span style="box-sizing: border-box; color: #0044ff;">2172</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$;
<span style="box-sizing: border-box; color: #0044ff;">2174</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c
<span style="box-sizing: border-box; color: #0044ff;">2176</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f
<span style="box-sizing: border-box; color: #0044ff;">2200</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">2250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">2300</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigos de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">2350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">2400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">2500</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">2550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y-<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y+<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x+<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2800</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">2850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">2860</span> <span style="box-sizing: border-box; color: grey;">' Avanzar si no es pared; dar la vuelta si lo es</span>
<span style="box-sizing: border-box; color: #0044ff;">2865</span> obj$=pantalla$<span style="box-sizing: border-box; color: red;">(</span>yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2870</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> obj$<>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=-velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">3000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3050</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">3100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> puntos=puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>: premios=premios-<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">3150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">3400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3500</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">3550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> jugador$
<span style="box-sizing: border-box; color: #0044ff;">3950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> enemigo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">4200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos ; <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">4250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
<span style="box-sizing: border-box; color: #0044ff;">4300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o--PPP----o---PPPP-o------PP
<span style="box-sizing: border-box; color: #0044ff;">4400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---xPPP---x----PPPP---x----PP
<span style="box-sizing: border-box; color: #0044ff;">4450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--e-----PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">4500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPP------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">4550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--PPPPPPPPPP--PPPPP----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPP--PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">4650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-A--PPPPP---PPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">4700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------x---e-----PPP
<span style="box-sizing: border-box; color: #0044ff;">4750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">4800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">4850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e--------PPPPPP---P--PP
<span style="box-sizing: border-box; color: #0044ff;">4900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----x--------------PPP-PP-PP
<span style="box-sizing: border-box; color: #0044ff;">4950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------x--o-----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">5050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
29. Varias vidas</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Nuestra partida acaba en cuanto chocamos con un enemigo o un obstáculo. Quizá eso sea demasiado exigente. Es habitual en los juegos tener varias vidas, o energía que se va perdiendo poco a poco. No es algo difícil de hacer: cuando haya una colisión, deberemos restar una de esas vidas y eliminar lo que causó la colisión (para no perder todas las vidas de golpe), por ejemplo devolviendo todos los elementos a su posición inicial, o al menos nuestro personaje.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Crear las vidas es fácil:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1450</span> puntos=0: vidas=<span style="box-sizing: border-box; color: #0044ff;">3</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En los bloques que comprueban colisiones, cambiaríamos "terminado" por una nueva variable "chocado":</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">3150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y si hemos chocado deberemos perder una vida, recolocar al personaje y quizá terminar:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">3460</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> vidas = vidas-<span style="box-sizing: border-box; color: #0044ff;">1</span>: chocado = 0: y = yInicial: x = xInicial
<span style="box-sizing: border-box; color: #0044ff;">3470</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> vidas = 0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Antes tendremos que haber memorizado esas coordenadas iniciales, claro...</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: x=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: yInicial=y: xInicial=x</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y no estaría de más que avisáramos al usuario de cuántas vidas le quedan:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">4210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">23</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Vidas "</span>; vidas</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El juego completo estaría quedando:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: grey;">' Laberinto 2014</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: grey;">' Desarrollado paso a paso por Nacho</span>
<span style="box-sizing: border-box; color: #0044ff;">1000</span> <span style="box-sizing: border-box; color: grey;">' </span>
<span style="box-sizing: border-box; color: #0044ff;">1010</span> <span style="box-sizing: border-box; color: grey;">' Inicializacion</span>
<span style="box-sizing: border-box; color: #0044ff;">1020</span> <span style="box-sizing: border-box; color: grey;">'</span>
<span style="box-sizing: border-box; color: #0044ff;">1030</span> <span style="box-sizing: border-box; color: grey;">' -- Colores de pantalla --</span>
<span style="box-sizing: border-box; color: #0044ff;">1050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">6</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PAPER</span> 0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">1060</span> colorPared=<span style="box-sizing: border-box; color: #0044ff;">1</span>: colorEnemigo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: colorPremio=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1090</span> <span style="box-sizing: border-box; color: grey;">' -- Definicion de caracteres --</span>
<span style="box-sizing: border-box; color: #0044ff;">1100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>, &X11111100, &X11111100, &X11111100, &X0, &X11001111, &X11001111, &X11001111, &X0
<span style="box-sizing: border-box; color: #0044ff;">1150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>, &X11000, &X101100, &X1000110, &X10000011, &X10000011, &X1000110, &X101100, &X11000
<span style="box-sizing: border-box; color: #0044ff;">1200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">242</span>, &X10000, &X10010010, &X1010100, &X111000, &X11111111, &X111000, &X1010100, &X10010010
<span style="box-sizing: border-box; color: #0044ff;">1250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">243</span>, &X10111101, &X1111110, &X11011011, &X11111111, &X11100111, &X11011011, &X1100110, &X11000011
<span style="box-sizing: border-box; color: #0044ff;">1300</span> pared$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">240</span><span style="box-sizing: border-box; color: red;">)</span>: premio$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">241</span><span style="box-sizing: border-box; color: red;">)</span>: obstaculo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">242</span><span style="box-sizing: border-box; color: red;">)</span>: enemigo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">243</span><span style="box-sizing: border-box; color: red;">)</span>: jugador$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1310</span> <span style="box-sizing: border-box; color: grey;">' -- Teclas ---</span>
<span style="box-sizing: border-box; color: #0044ff;">1320</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>
<span style="box-sizing: border-box; color: #0044ff;">1350</span> <span style="box-sizing: border-box; color: grey;">' -- Datos del juego --</span>
<span style="box-sizing: border-box; color: #0044ff;">1400</span> terminado=0:chocado=0
<span style="box-sizing: border-box; color: #0044ff;">1450</span> puntos=0: vidas=<span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">1455</span> premios=0: enemigos=0
<span style="box-sizing: border-box; color: #0044ff;">1460</span> <span style="box-sizing: border-box; color: grey;">' -- Lectura del mapa desde DATA --</span>
<span style="box-sizing: border-box; color: #0044ff;">1550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">1650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"Generando..."</span>
<span style="box-sizing: border-box; color: #0044ff;">1810</span> <span style="box-sizing: border-box; color: grey;">' Vamos a vaciar el array, para evitar basura</span>
<span style="box-sizing: border-box; color: #0044ff;">1820</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f
<span style="box-sizing: border-box; color: #0044ff;">1840</span> <span style="box-sizing: border-box; color: grey;">' Y a rellenar los datos reales</span>
<span style="box-sizing: border-box; color: #0044ff;">1850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">1900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">1950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">2050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=pared$
<span style="box-sizing: border-box; color: #0044ff;">2060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">2070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"A"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: x=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: yInicial=y: xInicial=x
<span style="box-sizing: border-box; color: #0044ff;">2080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"o"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> premios = premios+<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=premio$
<span style="box-sizing: border-box; color: #0044ff;">2090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"e"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> enemigos = enemigos+<span style="box-sizing: border-box; color: #0044ff;">1</span>: yE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>: xE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>enemigos<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">2150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila
<span style="box-sizing: border-box; color: #0044ff;">2160</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujado de la parte estatica del mapa --</span>
<span style="box-sizing: border-box; color: #0044ff;">2162</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> f = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">2164</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> c = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>
<span style="box-sizing: border-box; color: #0044ff;">2166</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> c, f
<span style="box-sizing: border-box; color: #0044ff;">2168</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$;
<span style="box-sizing: border-box; color: #0044ff;">2170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$;
<span style="box-sizing: border-box; color: #0044ff;">2172</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>f,c<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$;
<span style="box-sizing: border-box; color: #0044ff;">2174</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> c
<span style="box-sizing: border-box; color: #0044ff;">2176</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> f
<span style="box-sizing: border-box; color: #0044ff;">2200</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">2250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">2300</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigos de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">2350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">2400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">2500</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">2550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y-<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y+<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x+<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2800</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">2850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">2860</span> <span style="box-sizing: border-box; color: grey;">' Avanzar si no es pared; dar la vuelta si lo es</span>
<span style="box-sizing: border-box; color: #0044ff;">2865</span> obj$=pantalla$<span style="box-sizing: border-box; color: red;">(</span>yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">2870</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> obj$<>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> obj$<>obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>+velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=-velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">3000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3050</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">3100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = premio$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> puntos=puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>: premios=premios-<span style="box-sizing: border-box; color: #0044ff;">1</span>: pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">3150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x<span style="box-sizing: border-box; color: red;">)</span> = obstaculo$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos
<span style="box-sizing: border-box; color: #0044ff;">3400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3460</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> chocado = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> vidas = vidas-<span style="box-sizing: border-box; color: #0044ff;">1</span>: chocado = 0: y = yInicial: x = xInicial
<span style="box-sizing: border-box; color: #0044ff;">3470</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> vidas = 0 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">3500</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">3550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> jugador$
<span style="box-sizing: border-box; color: #0044ff;">3950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> enemigos:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> enemigo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">4200</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">22</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos ; <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">4210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">15</span>,<span style="box-sizing: border-box; color: #0044ff;">23</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Vidas "</span>; vidas
<span style="box-sizing: border-box; color: #0044ff;">4250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
<span style="box-sizing: border-box; color: #0044ff;">4300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4350</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o--PPP----o---PPPP-o------PP
<span style="box-sizing: border-box; color: #0044ff;">4400</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---xPPP---x----PPPP---x----PP
<span style="box-sizing: border-box; color: #0044ff;">4450</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--e-----PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">4500</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPP------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">4550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--PPPPPPPPPP--PPPPP----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">4600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPP--PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">4650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-A--PPPPP---PPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">4700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----------------x---e-----PPP
<span style="box-sizing: border-box; color: #0044ff;">4750</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">4800</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">4850</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP--e--------PPPPPP---P--PP
<span style="box-sizing: border-box; color: #0044ff;">4900</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----x--------------PPP-PP-PP
<span style="box-sizing: border-box; color: #0044ff;">4950</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------x--o-----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">5000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-o------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">5050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
30. Uso de joystick</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Permitir que un juego de CPC funcione con joystick no es difícil. Existen dos formas de acceder al estado del joystick. La más sencilla es usar la misma función INKEY que estamos empleando para comprobar el teclado, y que tiene códigos especiales reservados para el joy:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1330</span> joyArriba=<span style="box-sizing: border-box; color: #0044ff;">72</span>: joyAbajo=<span style="box-sizing: border-box; color: #0044ff;">73</span>: joyDerecha=<span style="box-sizing: border-box; color: #0044ff;">75</span>: joyIzqda=<span style="box-sizing: border-box; color: #0044ff;">74</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De modo que sólo tendremos que añadir un caso extra a cada comprobación de teclas:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">2550</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyArriba<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y-<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2600</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> >-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyAbajo<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y+<span style="box-sizing: border-box; color: #0044ff;">1</span>,x<span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2650</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyDerecha<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x+<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">2700</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>joyIzqda<span style="box-sizing: border-box; color: red;">)</span><>-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> pantalla$<span style="box-sizing: border-box; color: red;">(</span>y,x-<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span><>pared$ <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El código del botón de disparo principal (que no usamos en este juego, pero quizá te resulte útil en algún otro) es el 76, y el disparo secundario es el 77.</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
31. Una pantalla de presentación</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Crear una pantalla de bienvenida para nuestro juego es fácil: basta escribir algo (o, dentro de poco, dibujar algo) antes de entrar al bucle de juego.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1265</span> <span style="box-sizing: border-box; color: grey;">' -- Pantalla de bienvenida --</span>
<span style="box-sizing: border-box; color: #0044ff;">1270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">4</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Bienvenido al laberinto"</span>
<span style="box-sizing: border-box; color: #0044ff;">1272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">7</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Recoge los premios: "</span>; premio$
<span style="box-sizing: border-box; color: #0044ff;">1274</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">9</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorEnemigo: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Esquiva los obstaculos: "</span>; obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">1276</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>,<span style="box-sizing: border-box; color: #0044ff;">11</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Y evita a los enemigos: "</span>; enemigo$
<span style="box-sizing: border-box; color: #0044ff;">1278</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">4</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Pulsa una tecla para empezar... "</span>;
<span style="box-sizing: border-box; color: #0044ff;">1300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Pausa</span>
<span style="box-sizing: border-box; color: #0044ff;">1305</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_laberinto031.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Incluso es fácil hacer que se vuelva a ella al terminar una partida:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">4260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">12</span>,<span style="box-sizing: border-box; color: #0044ff;">10</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" Partida terminada! "</span>
<span style="box-sizing: border-box; color: #0044ff;">4275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Y esperamos una tecla</span>
<span style="box-sizing: border-box; color: #0044ff;">4290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">1265</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Eso sí, deberíamos tener un par de precauciones: hacer que se vuelva a leer desde el principio de los DATA (con RESTORE) y destruir esos arrays que hemos creado (con ERASE) y que se intentarían volver a crear si saltamos al principio del programa sin ninguna precaución. Además, como puede que el usuario estuviese pulsando una tecla al terminar la partida, deberíamos esperar a que deje de pulsar el teclado, bien esperando un cierto tiempo, o esperando hasta que ninguna tecla esté pulsada o las dos cosas:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">4260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">12</span>,<span style="box-sizing: border-box; color: #0044ff;">10</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" Partida terminada! "</span>
<span style="box-sizing: border-box; color: #0044ff;">4265</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">500</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i: <span style="box-sizing: border-box; color: grey;">'Pausa por tiempo</span>
<span style="box-sizing: border-box; color: #0044ff;">4270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$<><span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Vaciamos buffer del teclado</span>
<span style="box-sizing: border-box; color: #0044ff;">4275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$=<span style="box-sizing: border-box; color: #008800;">""</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>: <span style="box-sizing: border-box; color: grey;">'Y esperamos una tecla</span>
<span style="box-sizing: border-box; color: #0044ff;">4280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RESTORE</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ERASE</span> xE, yE, velocE, pantalla$
<span style="box-sizing: border-box; color: #0044ff;">4290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">1265</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
¿Y no hay opción de terminar la partida y volver al sistema operativo? No. No se trata de una característica que fuera habitual en los equipos de los años 80, en los que bastaba con pulsar el interruptor de apagado o incluso desconectar el cable de alimentación. No existían técnicas como la escritura diferida en disco duro que pudieran provocar problemas si apagábamos el equipo. Bastaba con esperar a que se apagase el LED que indicaba que la unidad de disco estaba activa... si es que el equipo tenía unidad de disco (cosa que ocurría en los CPC664 y CPC6128, pero no en el primer modelo, el CPC464). Por eso, nuestro juego no tendrá una opción "Salir".</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
32. Dibujar puntos y líneas</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Los Amstrad CPC no distinguen entre modo gráfico y modo de texto. En cualquier momento podemos dibujar líneas y puntos en pantalla. Además, es algo fácil de hacer: la orden PLOT dibuja un punto (indicando las coordenadas X e Y) y la orden DRAW dibuja una línea hasta otro punto (también a partir de sus coordenadas X e Y). El color a usar se indica en un tercer parámetro, que es opcional tanto para PLOT como para DRAW. Por ejemplo, podemos dibujar un marco de doble línea alrededor de la pantalla así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PLOT</span> 0,0,colorPremio: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">639</span>,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">639</span>,<span style="box-sizing: border-box; color: #0044ff;">399</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> 0,<span style="box-sizing: border-box; color: #0044ff;">399</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> 0,0
<span style="box-sizing: border-box; color: #0044ff;">1285</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PLOT</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>,colorPared: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">634</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">634</span>,<span style="box-sizing: border-box; color: #0044ff;">394</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">394</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DRAW</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>,<span style="box-sizing: border-box; color: #0044ff;">5</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_laberinto032.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Las coordenadas de la pantalla van desde la (0,0), que es la esquina superior izquierda, a (639,399), que es la esquina inferior derecha, independiente del modo gráfico que se utilice. Las imágenes se verán más definidas en MODE 2 y menos en MODE 0, pero los tres modos responden exactamente al mismo sistema de coordenadas.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
No tenemos órdenes para dibujar rectángulos, ni polígonos, ni círculos, sino que deberíamos crear estas figuras a base de líneas. Lo mismo ocurre para cualquier otra figura compleja. Tampoco existe una orden que permita rellenar figuras en toda la gama CPC (sí existe en los CPC664 y 6128, pero no en los CPC464).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Dentro de poco veremos también como incluir pantallas de carga, que muestren imágenes prediseñadas, que podremos haber creado con un equipo moderno o incluso capturado con una cámara digital o un scanner.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-68791621461932636202014-09-30T15:13:00.000+02:002014-09-30T15:13:28.327+02:00Un mini-juego en BASIC de Amstrad CPC (6: símbolos, arrays bidimensionales, READ-DATA, medir tiempos)<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
25. Definir caracteres</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Nuestro juego es feo. Indudablemente. Podemos mejorar un poco su apariencia si al menos creamos nuevos símbolos cuyo aspecto recuerde más a una pared, una roca o un diamante, por ejemplo.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En primer lugar, deberemos diseñar esos símbolos a partir de una matriz de 8x8 puntos. Usaremos un 1 para indicar un punto "encendido" en la pantalla y un 0 para un punto "apagado" (que se verá con el color de fondo).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por ejemplo, un ladrillo de una pared podría ser algo así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="txt" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">11111100
11111100
11111100
00000000
11001111
11001111
11001111
00000000</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Nada más encender un CPC, podemos redefinir los últimos 16 caracteres, de la posición 240 a la 255. Podríamos redefinir más, por ejemplo si queremos cambiar todo el juego de caracteres para dar otra apariencia al juego. A cambio, perderemos algo de memoria libre.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por ejemplo, si queremos redefinir todos los caracteres "imprimibles", que son del 32 (el espacio en blanco) en adelante, lo deberíamos indicar con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AFTER</span> <span style="box-sizing: border-box; color: #0044ff;">32</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y para definir cualquiera de esos caracteres, usaríamos orden SYMBOL, seguida del número del carácter que queremos redefinir y de los ocho números que corresponden a la secuencia de ceros y unos que habíamos diseñado anteriormente. Esta secuencia se puede indicar tal cual, en binario, si precedemos cada número por "&x", así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>, &x11111100, &x11111100, &x11111100, &x00000000, &x11001111, &x11001111, &x11001111, &x00000000</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Aunque en ocasiones será preferible escribir directamente el número decimal equivalente a esa secuencia, para ocupar menos memoria. Por ejemplo, la orden anterior ocupa 49 bytes en memoria si es parte de un programa, mientras que la siguiente versión ocupa 31 bytes:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>,<span style="box-sizing: border-box; color: #0044ff;">252</span>,<span style="box-sizing: border-box; color: #0044ff;">252</span>,<span style="box-sizing: border-box; color: #0044ff;">252</span>,0,<span style="box-sizing: border-box; color: #0044ff;">207</span>,<span style="box-sizing: border-box; color: #0044ff;">207</span>,<span style="box-sizing: border-box; color: #0044ff;">207</span>,0</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y podemos comprobar cómo quedaría esa "pared" si mostramos varios ladrillos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">100</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">240</span><span style="box-sizing: border-box; color: red;">)</span>;: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_symbol_pared.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El premio a recoger podría ser una figura que recordase a un diamante:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="txt" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">00011000
00101100
01000110
10000011
10000011
01000110
00101100
00011000</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
que se definiría con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>, &x00011000, &x00101100, &x01000110, &x10000011, &x10000011, &x01000110, &x00101100, &x00011000</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
O bien</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>,<span style="box-sizing: border-box; color: #0044ff;">24</span>,<span style="box-sizing: border-box; color: #0044ff;">44</span>,<span style="box-sizing: border-box; color: #0044ff;">70</span>,<span style="box-sizing: border-box; color: #0044ff;">131</span>,<span style="box-sizing: border-box; color: #0044ff;">131</span>,<span style="box-sizing: border-box; color: #0044ff;">70</span>,<span style="box-sizing: border-box; color: #0044ff;">44</span>,<span style="box-sizing: border-box; color: #0044ff;">24</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Los obstáculos podrían ser algo con apariencia "de pinchos":</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="txt" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">00010000
10010010
01010100
00111000
11111111
00111000
01010100
10010010</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">242</span>,&x00010000, &x10010010, &x01010100, &x00111000, &x11111111, &x00111000, &x01010100, &x10010010</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y los enemigos podrían ser algo como</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="txt" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">10111101
01111110
11011011
11111111
11100111
11011011
01100110
11000011</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">243</span>,&x10111101, &x01111110, &x11011011, &x11111111, &x11100111, &x11011011, &x01100110, &x11000011</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Los mejores resultados se obtendrían si combináramos 2 o 4 caracteres para formar imágenes de mayor tamaño, pero no lo haremos por ahora.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podríamos aplicar esto al juego, incluyendo las definiciones de caracteres al principio de programa y editando la parte que dibuja, para que muestre esos caracteres usando colores:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">6</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">21</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>, &x11111100, &x11111100, &x11111100, &x00000000, &x11001111, &x11001111, &x11001111, &x00000000
<span style="box-sizing: border-box; color: #0044ff;">22</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>, &x00011000, &x00101100, &x01000110, &x10000011, &x10000011, &x01000110, &x00101100, &x00011000
<span style="box-sizing: border-box; color: #0044ff;">23</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">242</span>, &x00010000, &x10010010, &x01010100, &x00111000, &x11111111, &x00111000, &x01010100, &x10010010
<span style="box-sizing: border-box; color: #0044ff;">24</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">243</span>, &x10111101, &x01111110, &x11011011, &x11111111, &x11100111, &x11011011, &x01100110, &x11000011
<span style="box-sizing: border-box; color: #0044ff;">25</span> pared$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">240</span><span style="box-sizing: border-box; color: red;">)</span>: premio$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">241</span><span style="box-sizing: border-box; color: red;">)</span>: obstaculo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">242</span><span style="box-sizing: border-box; color: red;">)</span>: enemigo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">243</span><span style="box-sizing: border-box; color: red;">)</span>: jugador$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">225</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>
<span style="box-sizing: border-box; color: #0044ff;">230</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo1,yo1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">240</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo2,yo2:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo3,yo3:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">255</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">265</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> jugador$
<span style="box-sizing: border-box; color: #0044ff;">271</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>
<span style="box-sizing: border-box; color: #0044ff;">272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> enemigo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">274</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xP,yP: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$
<span style="box-sizing: border-box; color: #0044ff;">280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_laberinto025.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
26. Un laberinto de fondo: arrays bidimensionales, READ y DATA</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En un juego clásico como Manic Miner, uno de los niveles tenía esta apariencia:</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/miner10a.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
que se consigue repitiendo una serie de casillas de tamaño 8x8:</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/miner10b.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para imitar eso, podemos almacenar toda una "apariencia de pantalla" como esta usando un array bidimensional, con algo como</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Entonces podríamos dar valores a sus elementos con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">pantalla<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">5</span>: pantalla<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>=0: pantalla<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span>=0 </pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Donde el valor 5 podría indicar que se trata de un tipo concreto de pared, el 0 podría ser un espacio en blanco (o un fragmento de cielo), etc.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero existe una alternativa más cómoda para dar muchos valores: detallarlos en sentencias DATA y leerlos con la orden READ, normalmente con la ayuda de un FOR, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,0,0,0: <span style="box-sizing: border-box; color: grey;">'...</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,0,<span style="box-sizing: border-box; color: #0044ff;">2</span>,0: <span style="box-sizing: border-box; color: grey;">'...</span>
<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">4</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">40</span>
<span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> pantalla<span style="box-sizing: border-box; color: red;">(</span>fila, columna<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">6</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">7</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(Las sentencias DATA pueden estar indistintamente al principio del programa, al final... o incluso en medio).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Sería aún más legible si no usamos números separados por comas, sino letras que representen cada uno de los símbolos que habrá en pantalla, por ejemplo así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">
<span style="box-sizing: border-box; color: #0044ff;">1000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">1010</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">1020</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">1030</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">1040</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPP------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">1050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--PPPPPPPPPP--PPPPP----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">1060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPP--PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">1070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----PPPPP---PPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">1080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">1090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">1100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">1110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP-----------PPPPPP---P--PP
<span style="box-sizing: border-box; color: #0044ff;">1120</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-------------------PPP-PP-PP
<span style="box-sizing: border-box; color: #0044ff;">1130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-----------------------PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">1140</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">1150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(Aunque la pantalla sea de 25x40 caracteres, nuestro mapa del laberinto es sólo de 16x32, para dejar espacio para información sobre los puntos, las vidas restantes... y, de paso, gastar menos memoria, que es un bien escaso en estos equipos; por eso, dejaremos un margen superior de 2 líneas y un margen izquierdo de 4 columnas en el momento de dibujar en pantalla).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Este formato tan compacto hace que podamos comprobar de un vistazo si el laberinto tiene la apariencia que deseamos, pero también complica la lectura: cada fila es una cadena de texto, de la que deberemos extraer el contenido letra a letra, usando la función MID$, a la que hay que indicar de qué cadena queremos obtener un fragmento, en qué posición y con qué longitud:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">61</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">63</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">64</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">65</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">67</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> pantalla<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> pantalla<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=0
<span style="box-sizing: border-box; color: #0044ff;">68</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">69</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
A la vez que extraemos esa información, podemos dibujar el laberinto en pantalla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">61</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">63</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">64</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">65</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">66</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>, fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>
<span style="box-sizing: border-box; color: #0044ff;">67</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$: pantalla<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> pantalla<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=0
<span style="box-sizing: border-box; color: #0044ff;">68</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">69</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El resultado sería algo como</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_laberinto026.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero aún no se comporta bien: podemos pasar por encima de las paredes, pueden aparecer enemigos, obstáculos y premios fuera del laberinto o en medio de las paredes, los enemigos borran las paredes al pasar por encima de ellas... poco a poco lo iremos mejorando...</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">6</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">25</span>
<span style="box-sizing: border-box; color: #0044ff;">21</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">240</span>, &x11111100, &x11111100, &x11111100, &x00000000, &x11001111, &x11001111, &x11001111, &x00000000
<span style="box-sizing: border-box; color: #0044ff;">22</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">241</span>, &x00011000, &x00101100, &x01000110, &x10000011, &x10000011, &x01000110, &x00101100, &x00011000
<span style="box-sizing: border-box; color: #0044ff;">23</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">242</span>, &x00010000, &x10010010, &x01010100, &x00111000, &x11111111, &x00111000, &x01010100, &x10010010
<span style="box-sizing: border-box; color: #0044ff;">24</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">SYMBOL</span> <span style="box-sizing: border-box; color: #0044ff;">243</span>, &x10111101, &x01111110, &x11011011, &x11111111, &x11100111, &x11011011, &x01100110, &x11000011
<span style="box-sizing: border-box; color: #0044ff;">25</span> pared$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">240</span><span style="box-sizing: border-box; color: red;">)</span>: premio$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">241</span><span style="box-sizing: border-box; color: red;">)</span>: obstaculo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">242</span><span style="box-sizing: border-box; color: red;">)</span>: enemigo$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">243</span><span style="box-sizing: border-box; color: red;">)</span>: jugador$=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RANDOMIZE</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TIME</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">45</span> puntos=0
<span style="box-sizing: border-box; color: #0044ff;">50</span> xo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">52</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>: xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">56</span> xP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">58</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yP1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">56</span>
<span style="box-sizing: border-box; color: #0044ff;">60</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>: <span style="box-sizing: border-box; color: grey;">' Teclas</span>
<span style="box-sizing: border-box; color: #0044ff;">61</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> pantalla<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">25</span>,<span style="box-sizing: border-box; color: #0044ff;">40</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">63</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> fila = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">16</span>
<span style="box-sizing: border-box; color: #0044ff;">64</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">READ</span> linea$
<span style="box-sizing: border-box; color: #0044ff;">65</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> columna = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">32</span>
<span style="box-sizing: border-box; color: #0044ff;">66</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> columna+<span style="box-sizing: border-box; color: #0044ff;">4</span>, fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>
<span style="box-sizing: border-box; color: #0044ff;">67</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">MID</span>$<span style="box-sizing: border-box; color: red;">(</span>linea$,columna,<span style="box-sizing: border-box; color: #0044ff;">1</span><span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #008800;">"P"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> pared$: pantalla<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">ELSE</span> pantalla<span style="box-sizing: border-box; color: red;">(</span>fila+<span style="box-sizing: border-box; color: #0044ff;">2</span>, columna+<span style="box-sizing: border-box; color: #0044ff;">4</span><span style="box-sizing: border-box; color: red;">)</span>=0
<span style="box-sizing: border-box; color: #0044ff;">68</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> columna
<span style="box-sizing: border-box; color: #0044ff;">69</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> fila
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">80</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigos de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">92</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">120</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">140</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y < <span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x < <span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">160</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">180</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">185</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">190</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> + velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:
<span style="box-sizing: border-box; color: #0044ff;">192</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = -velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">195</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">200</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">202</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x <> xP <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> y <> yP <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">210</span>: <span style="box-sizing: border-box; color: grey;">'Si no hay premio</span>
<span style="box-sizing: border-box; color: #0044ff;">203</span> puntos = puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">204</span> xP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: <span style="box-sizing: border-box; color: grey;">'Si lo hay, calculamos nueva posicion</span>
<span style="box-sizing: border-box; color: #0044ff;">206</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yP1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">204</span>
<span style="box-sizing: border-box; color: #0044ff;">210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">212</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">214</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">216</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">220</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">225</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>
<span style="box-sizing: border-box; color: #0044ff;">230</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo1,yo1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">240</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo2,yo2:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo3,yo3:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> obstaculo$
<span style="box-sizing: border-box; color: #0044ff;">255</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">265</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> jugador$
<span style="box-sizing: border-box; color: #0044ff;">271</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>
<span style="box-sizing: border-box; color: #0044ff;">272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> enemigo$: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">274</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>
<span style="box-sizing: border-box; color: #0044ff;">275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xP,yP: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> premio$
<span style="box-sizing: border-box; color: #0044ff;">280</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos
<span style="box-sizing: border-box; color: #0044ff;">300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
<span style="box-sizing: border-box; color: #0044ff;">1000</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
<span style="box-sizing: border-box; color: #0044ff;">1010</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">1020</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">1030</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPP--------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">1040</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP----PPPPP------PPPP--------PP
<span style="box-sizing: border-box; color: #0044ff;">1050</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--PPPPPPPPPP--PPPPP----PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">1060</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP---PPPPPPPP--PPPPPPPP----PPPP
<span style="box-sizing: border-box; color: #0044ff;">1070</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP----PPPPP---PPPPPPPPP---PPPP
<span style="box-sizing: border-box; color: #0044ff;">1080</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">1090</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP------------------------PPPP
<span style="box-sizing: border-box; color: #0044ff;">1100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPP-----------PPPPPPPPP----PP
<span style="box-sizing: border-box; color: #0044ff;">1110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPP-----------PPPPPP---P--PP
<span style="box-sizing: border-box; color: #0044ff;">1120</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPP-------------------PPP-PP-PP
<span style="box-sizing: border-box; color: #0044ff;">1130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP-----------------------PPPPPP
<span style="box-sizing: border-box; color: #0044ff;">1140</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PP--------------------------PPP
<span style="box-sizing: border-box; color: #0044ff;">1150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DATA</span> PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
27. Midiendo tiempos</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para mejorar el comportamiento de un programa, necesitamos poder comparar el "antes" y el "después". En la parte visual, es fácil notar los cambios, pero no tanto en la parte lógica. Aun así, podemos medir el tiempo de ejecución o el gasto de memoria antes y después de un cambio, para ver si está dentro de valores aceptables y si hemos mejorado algo.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por ejemplo, la última versión de nuestro juego, dibujaba el fondo del laberinto fuera de la parte repetitiva. Eso va a complicar la lógica interna, pero es un mal necesario, porque no podremos redibujar la pantalla completa de un CPC a 25 fotogramas por segundo... ni a 10 fps... ni siquiera a un fotograma por segundo. Lo podemos comprobar con un programa auxiliar (independiente del juego) que dibuje 1000 asteriscos en pantalla y mida el tiempo empleado. Para eso usaremos la función, TIME, que nos dice el tiempo que hace que se encendió el equipo, medido en 1/300 de segundo:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> t=<span style="box-sizing: border-box; color: #000088; font-weight: bold;">TIME</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">1000</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"*"</span>;: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">3</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> TIME-t</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El resultado de este programa es... 1961. Es decir, se tarda más de 6 segundos (1961/300=6.54) en llenar la pantalla de asteriscos. Y eso sin contar con que en un juego real habrá que realizar cálculos adicionales durante el dibujado. Claramente no es viable, no podemos esperar más de 6 segundos para "fotograma" del juego. Por eso hemos sacado el dibujado del laberinto fuera de la parte repetitiva del programa. (Se podría mejorar ligeramente la velocidad con técnicas que veremos más adelante, pero seguiría siendo demasiado lento como para permitir redibujar toda la pantalla en cada pasada).</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-32985910889954425342014-09-29T19:08:00.001+02:002014-09-30T00:08:04.401+02:00Un mini-juego en BASIC de Amstrad CPC (5: arrays, memoria libre, guardar)<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
21. Más enemigos aún: arrays</h2>
<h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para tres obstáculos, hemos creado tres oordenadas X, tres coordenadas Y... ¿si queremos 20 obstáculos (o 20 enemigos) necesitaremos otras 40 variables? La respuesta es que NO es necesario, porque podemos usar un "array" (o tabla, o vector, o matriz) para guardar todo un bloque de datos.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Primero tenemos que "reservar espacio" para el array (o los arrays, si queremos más de uno):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">52</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Así, ahora la variable "xE" tiene espacio para guardar 10 números, que irán de xE(1) hasta xE(10), de modo que podemos guardar las coordenadas X de 10 enemigos. Lo mismo ocurre para "yE" (coordenadas Y) y para "velocE" (velocidades). Realmente, en el lenguaje BASIC de los CPC, la expresión DIM xE(10), reserva espacio para 11 elementos, desde la posición 0 hasta la 10, pero nosotros empezaremos a contar en 1, que suele resultar "más natural" cuando uno está empezando, aunque desperdiciemos una posición de memoria.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Ahora debemos dar valores iniciales a esos arrays, que es algo que podemos hacer de forma repetitiva, usando la orden FOR. Como ya sabemos, podemos escribir los números del 1 al 20 haciendo</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">20</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> n: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De forma similar, podemos dar el valor 5 a todos los elementos de un array con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>: xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = <span style="box-sizing: border-box; color: #0044ff;">5</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y si afinamos un poco esa expresión, podemos dar posiciones al azar a nuestros 10 enemigos</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>: xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y ahora habrá que borrarlos a todos a la vez y moverlos a todos a la vez:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">92</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">94</span>
<span style="box-sizing: border-box; color: #0044ff;">185</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> + velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"e"</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
y también habrá que ver si se salen de los límites de la pantalla, cosa que podemos agrupar con la anterior línea 185:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">185</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">190</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> + velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:
<span style="box-sizing: border-box; color: #0044ff;">192</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = -velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">195</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
y, de igual modo, habrá que comprobar colisiones con todos ellos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">212</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">214</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">216</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El resultado será:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RANDOMIZE</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TIME</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">50</span> xo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">52</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>: xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">60</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>: <span style="box-sizing: border-box; color: grey;">' Teclas</span>
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">80</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigos de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">92</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">120</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">140</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y < <span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x < <span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">160</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">180</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">185</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">190</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> + velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:
<span style="box-sizing: border-box; color: #0044ff;">192</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = -velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">195</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">200</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">212</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">214</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">216</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">220</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">230</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo1,yo1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">240</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo2,yo2:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo3,yo3:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"e"</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">280</span> <span style="box-sizing: border-box; color: grey;">' -- Pausa hasta el siguiente "fotograma" del juego --</span>
<span style="box-sizing: border-box; color: #0044ff;">290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
</h2>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
22. Memoria libre</h2>
<h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El Amstrad CPC es un equipo de 8 bits, con una cantidad de memoria muy limitada, comparado con equipos modernos. Los primeros CPC (464 y 664) tenían 64 Kb de memoria, mientras que los últimos (6128) tenían 128 Kb, distribuidos en dos bancos de 64K, de los cuales sólo el primero es accesible con facilidad desde BASIC.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si además a eso le restamos la cantidad de memoria que usa la pantalla (16 Kb) y el resto del sistema, nos encontramos con que la memoria utilizable por nuestros programas es de cerca de 42 Kb. Lo podemos saber exactamente con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">FRE</span><span style="box-sizing: border-box; color: red;">(</span>0<span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En un CPC6128 recién encendido, eso nos diría que tenemos 42.249 bytes libres. Después de teclear nuestro juego tal y como es hasta este punto, deberíamos tener cerca de 40.164 bytes libres, lo que indica que nuestro programa está ocupando poco más de 2 Kb de esos 42 Kb.</div>
</h2>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
23. Guardar nuestro programa y recuperarlo más adelante</h2>
<h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si has conseguido llegar hasta aquí, te debe haber llevado un rato teclear los fragmentos de programa. Lo razonable es no dar ese tiempo por perdido, sino guardar el resultado para no tener que volver a comenzar desde cero cada vez. Afortunadamente, es sencillo: introducir un disco (o una cinta, según el caso) en nuestro CPC y usar la orden SAVE, seguida del nombre que queramos dar al juego, entre comillas (con un máximo de 8 letras y sin espacios):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">SAVE</span> <span style="box-sizing: border-box; color: #008800;">"juego1"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si lo queremos recuperar más adelante para seguir trabajando con él, la orden que nos permite cargarlo desde disco o cinta es LOAD:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOAD</span> <span style="box-sizing: border-box; color: #008800;">"juego1"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
O podríamos lanzarlo directamente desde disco o cinta usando RUN seguido por el nombre del programa:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">RUN</span> <span style="box-sizing: border-box; color: #008800;">"juego1"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si usas un emulador, puedes guardar tu programa fuera de él, como ya vimos en el apartado 11, o bien puedes usar una "imagen de disco": con WinApe puedes entrar al menú "File", opción "Drive A:" y decir que quieres crear un "New Blank disk". Ese nuevo disco está todavía "sin formatear", así que si tecleas la orden CAT para ver su contenido, obtendrás un mensaje de "Read fail" (error de lectura). Pero eso también es fácil de solucionar: desde el menú "File", en la opción "Drive A:", también aparece "Format Disc Image" (formatear imagen de disco), que nos pregunta qué formato usar (el "Data" que nos propone es razonable y nos dejará libres 178 KB). A partir de ese momento, ya se podrá usar SAVE para guardar dentro de esa imagen de disco, LOAD para cargar desde ella y CAT para ver el contenido del disco y el espacio libre.</div>
</h2>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
24. Recoger premios y obtener puntos</h2>
<h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Nuestro juego todavía es poco jugable. Como primera mejora en cuanto a jugabilidad, podríamos añadir una motivación adicional: recoger premios que nos den puntos.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La idea es sencilla: habrá otros tipos de elementos en pantalla, pero la colisión con ellos no hará que la partida termine, sino que nos dará puntos y hará que ese premio desaparezca de la pantalla.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El planteamiento más habitual en un juego de laberintos es que haya varios premios que recoger y que avancemos de nivel cuando tengamos todos ellos. Nosotros llegaremos a ese punto muy pronto, pero vamos a empezar por un planteamiento más sencillo: sólo habrá un premio, y al tocarlo desaparecerá de su posición, aparecerá en otra posición distinta y obtendremos 10 puntos.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Debemos tener en cuenta un detalle: si esa posición se va a escoger al azar, deberá ser una posición alcanzable, porque si el premio está en la misma posición que un obstáculo, ganaremos 10 puntos pero perderemos una vida... nuestra única vida por ahora. Por eso, debemos evitar que esto ocurra.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Así, generaríamos la posición inicial del premio, y lo volveríamos a hacer en caso de que se solape con alguno de los obstáculos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">56</span> xP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">58</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yP1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">56</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(Es más elegante usar un WHILE que un GOTO para volver atrás, porque los GOTO tienden a crear programas poco legibles, pero no es grave porque dentro de poco estas líneas desaparecerán, cuando tengamos varios premios en pantalla).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Dibujar el premio es fácil</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xP,yP: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"P"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y comprobar colisiones es casi igual de fácil, aunque será un poco repetitivo, porque habrá que recolocar el premio en una nueva posición. Más adelante veremos cómo evitar ese código repetitivo.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">202</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x <> xP <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> y <> yP <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">210</span>: <span style="box-sizing: border-box; color: grey;">'Si no hay premio</span>
<span style="box-sizing: border-box; color: #0044ff;">204</span> xP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: <span style="box-sizing: border-box; color: grey;">'Si lo hay, calculamos nueva posicion</span>
<span style="box-sizing: border-box; color: #0044ff;">206</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yP1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">204</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos eliminar ya la pausa al final de cada fotograma, para que el juego sea un poco más fluido (aunque seguirá parpadeando), borrando las líneas 280 y 290.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">280</span>
<span style="box-sizing: border-box; color: #0044ff;">290</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Anotar la puntuación obtenida es casi igual de fácil: una nueva variable, cambiaremos su valor cuando toquemos un premio y lo escribiremos en la parte superior de la pantalla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">45</span> puntos=0
<span style="box-sizing: border-box; color: #0044ff;">203</span> puntos = puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La apariencia todavía es muy fea, pero eso cambiará pronto...</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_laberinto024.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 16px;"></span><div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; font-weight: normal; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RANDOMIZE</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TIME</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">45</span> puntos=0
<span style="box-sizing: border-box; color: #0044ff;">50</span> xo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">52</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">DIM</span> xE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, yE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>, velocE<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">10</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>: xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">56</span> xP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">58</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yP1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">56</span>
<span style="box-sizing: border-box; color: #0044ff;">60</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>: <span style="box-sizing: border-box; color: grey;">' Teclas</span>
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">80</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigos de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">92</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">" "</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">120</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">140</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y < <span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x < <span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">160</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">180</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">185</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">190</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> + velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:
<span style="box-sizing: border-box; color: #0044ff;">192</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> = -velocE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">195</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">200</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">202</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x <> xP <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> y <> yP <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">210</span>: <span style="box-sizing: border-box; color: grey;">'Si no hay premio</span>
<span style="box-sizing: border-box; color: #0044ff;">203</span> puntos = puntos+<span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">204</span> xP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yP=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: <span style="box-sizing: border-box; color: grey;">'Si lo hay, calculamos nueva posicion</span>
<span style="box-sizing: border-box; color: #0044ff;">206</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yP1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>xP=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> yP=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">GOTO</span> <span style="box-sizing: border-box; color: #0044ff;">204</span>
<span style="box-sizing: border-box; color: #0044ff;">210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">212</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>
<span style="box-sizing: border-box; color: #0044ff;">214</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">216</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">220</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">230</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo1,yo1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">240</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo2,yo2:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo3,yo3:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> n = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">10</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>,yE<span style="box-sizing: border-box; color: red;">(</span>n<span style="box-sizing: border-box; color: red;">)</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"e"</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> n
<span style="box-sizing: border-box; color: #0044ff;">275</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xP,yP: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"P"</span>
<span style="box-sizing: border-box; color: #0044ff;">290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>,<span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Puntos "</span>; puntos
<span style="box-sizing: border-box; color: #0044ff;">300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
</h2>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<br /></h2>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-36758496813313408292014-09-27T12:25:00.000+02:002014-09-27T12:29:44.755+02:00Un mini-juego en BASIC de Amstrad CPC (4: comentarios, azar, colisiones)<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
16. Comentarios</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En general, nuestro programa será más legible si usamos variables que si empleamos "números mágicos" cuyo significado pueda no ser evidente para otro programador... o incluso para nosotros mismos poco después. Por eso estamos haciendo cosas como "IF INKEY(izqda) <> -1 THEN x=x-1" en vez de "IF INKEY(8) <> -1 THEN x=x-1".</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Una segunda medida para hacerlo más legible es usar "comentarios", líneas de programa que no contienen órdenes, sino textos aclaratorios para el programador, que nos ayudan a explicar la misión de cada bloque de programa. Comienzan con la palabra REM o con un apóstrofe ('):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">15</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>: <span style="box-sizing: border-box; color: grey;">' Teclas</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Así, podemos añadir para añadir comentarios que hagan que las partes del bucle de juego sean más fáciles de localizar:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">17</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">41</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas</span>
<span style="box-sizing: border-box; color: #0044ff;">51</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">52</span> <span style="box-sizing: border-box; color: grey;">' (Nada aun)</span>
<span style="box-sizing: border-box; color: #0044ff;">53</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: grey;">' (Nada aun)</span>
<span style="box-sizing: border-box; color: #0044ff;">55</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">86</span> <span style="box-sizing: border-box; color: grey;">' -- Pausa hasta el siguiente "fotograma" del juego</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De modo que ahora nuestro programa quedaría:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">15</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>: <span style="box-sizing: border-box; color: grey;">' Teclas</span>
<span style="box-sizing: border-box; color: #0044ff;">17</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">41</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">42</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">44</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">46</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">48</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">51</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">52</span> <span style="box-sizing: border-box; color: grey;">' (Nada aun)</span>
<span style="box-sizing: border-box; color: #0044ff;">53</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: grey;">' (Nada aun)</span>
<span style="box-sizing: border-box; color: #0044ff;">55</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">60</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">86</span> <span style="box-sizing: border-box; color: grey;">' -- Pausa hasta el siguiente "fotograma" del juego --</span>
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
17. No salir de la pantalla</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para no salir de la pantalla, deberemos comprobar si el valor de cada X y de cada Y es válido. Como estos valores cambiar cuando se pulsa una tecla, las comprobaciones deberían estar en las mismas líneas de programa que comprueban las pulsaciones de teclas:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">42</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">44</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y < <span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">46</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x < <span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">48</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Los límites de 40 a lo ancho y de 25 a lo alto vienen impuestos por la pantalla de un Amstrad CPC en su modo de trabajo normal (el "modo 1").</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
18. Tres obstáculos con coordenadas al azar</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Igual que tenemos nuestro personaje con coordenadas X e Y, podríamos crear varios obstáculos con sus propias coordenadas X e Y:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">12</span> xo1=<span style="box-sizing: border-box; color: #0044ff;">10</span>: yo1=<span style="box-sizing: border-box; color: #0044ff;">5</span>: xo2=<span style="box-sizing: border-box; color: #0044ff;">30</span>: yo2=<span style="box-sizing: border-box; color: #0044ff;">20</span>: xo3=<span style="box-sizing: border-box; color: #0044ff;">21</span>: yo3=<span style="box-sizing: border-box; color: #0044ff;">16</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y dibujarlos en la parte del bucle de juego que se encarga de dibujar todos los elementos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">56</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo1,yo1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">57</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo2,yo2:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">58</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo3,yo3:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si queremos que sus coordenadas no estén prefijadas, sino que se generen al azar, podemos usar la función RND, que nos permite obtener un número al azar entre 0 y 1. Normalmente preferiremos que ocupen casi toda la pantalla, por ejemplo con valores entre 2 y 38, para lo que podemos multiplicar ese número por 36 y sumarle 2, así: RND*36+2. Realmente, tendrán que ser números enteros (sin cifras decimales), para que sean coordenadas válidas de pantalla, así que deberíamos quedarnos con la parte entera de ese número obtenido al azar: INT(RND*36+2). De igual modo, los valores de Y los podríamos obtener con INT(RND*22+2):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">12</span> xo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Los valores que obtenemos con RND no son totalmente al azar, sino que parten de una cierta "semilla". Para que dos sesiones de juego no sean exactamente igual, sería conveniente tomar esa semilla a partir del reloj interno del ordenador (del tiempo que lleva encendido), con:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">7</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RANDOMIZE</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TIME</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
19. Comprobación de colisiones</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En modo texto, en que cada símbolo ocupa por completo una casilla de pantalla, la comprobación de colisiones es sencilla: si coinciden la X y la Y de nuestro personaje con la de un obstáculo, entonces han chocado, lo que podríamos usar para indicar el fin de la partida:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Como tenemos tres obstáculos, la condición real es un poco más larga:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De modo que nuestro programa, todavía sin renumerar, debería ser algo como:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>
<span style="box-sizing: border-box; color: #0044ff;">7</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RANDOMIZE</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TIME</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">12</span> xo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">15</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>: <span style="box-sizing: border-box; color: grey;">' Teclas</span>
<span style="box-sizing: border-box; color: #0044ff;">17</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">41</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">42</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">44</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y < <span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">46</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x < <span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">48</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">51</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">52</span> <span style="box-sizing: border-box; color: grey;">' (Nada aun)</span>
<span style="box-sizing: border-box; color: #0044ff;">53</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">54</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">55</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">56</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo1,yo1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">57</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo2,yo2:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">58</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo3,yo3:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">60</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">86</span> <span style="box-sizing: border-box; color: grey;">' -- Pausa hasta el siguiente "fotograma" del juego --</span>
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Hay demasiado poco espacio entre algunas línea, y vamos a necesitarlo para poder añadir un enemigo que se mueva, así que vamos a renumerar.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">RENUM</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
20. Un enemigo móvil</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si queremos uno o varios enemigos, la estructura que repetiríamos es básicamente la misma que para los obstáculos, con una diferencia: podemos hacer que se muevan, bien sea persiguiéndonos o de lado a lado. Hacer que nos sigan puede ser muy fácil, si no hay "paredes" ni "obstáculos" o bastante complicado en caso de que los haya y el enemigo deba "esquivarlos". Vamos a ver el caso de que se muevan de lado a lado, que es razonablemente sencillo.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Bastará con que, en la parte de nuestro programa destinada a "Mover enemigos y entorno", cambiemos su coordenada X, o su Y, o ambas. Si queremos que "reboten" a un lado y a otro, lo podemos hacer sumando un cierto "incremento" a su X. Este incremento será positivo (+1) para que se mueva a la derecha y negativo (-1) para que se mueva a la izquierda, así que basta con cambiarle el signo cada vez que llegue a un extremo, como ya hicimos con los primeros movimientos de nuestro personaje.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Empezaremos por preparar las variables que representarán su posición inicial y su velocidad:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">52</span> xE1=<span style="box-sizing: border-box; color: #0044ff;">15</span>: yE1=<span style="box-sizing: border-box; color: #0044ff;">10</span>: velocE1=<span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En el bloque de "mover enemigo" será donde incrementemos la posición tanto como indique la velocidad y comprobemos si debe dar la vuelta:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">185</span> xE1 = xE1 + velocE1
<span style="box-sizing: border-box; color: #0044ff;">190</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> xE1=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> xE1=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocE1 = -velocE1</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y habrá que dibujar el enemigo en la parte que dibuja los elementos en pantalla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE1,yE1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"e"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
También tendremos que borrarlo al principio de cada pasada por el bucle de juego:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigo de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">92</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE1,yE1
<span style="box-sizing: border-box; color: #0044ff;">94</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y habrá que comprobar colisiones con él:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">212</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Nuestro programa ahora debería ser algo como</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: grey;">' Ejemplo de juego en BASIC de CPC</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">RANDOMIZE</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TIME</span>
<span style="box-sizing: border-box; color: #0044ff;">40</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">50</span> xo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo1=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo2=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: xo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">36</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>: yo3=<span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INT</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">RND</span>*<span style="box-sizing: border-box; color: #0044ff;">22</span>+<span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">52</span> xE1=<span style="box-sizing: border-box; color: #0044ff;">15</span>: yE1=<span style="box-sizing: border-box; color: #0044ff;">10</span>: velocE1=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">60</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>: <span style="box-sizing: border-box; color: grey;">' Teclas</span>
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: grey;">' ----- Bucle de juego -----</span>
<span style="box-sizing: border-box; color: #0044ff;">80</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: grey;">' -- Borrar personaje y enemigo de su posicion anterior --</span>
<span style="box-sizing: border-box; color: #0044ff;">92</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE1,yE1
<span style="box-sizing: border-box; color: #0044ff;">94</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">120</span> <span style="box-sizing: border-box; color: grey;">' -- Comprobar teclas --</span>
<span style="box-sizing: border-box; color: #0044ff;">130</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">140</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y < <span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">150</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x < <span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">160</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> x > <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">170</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">180</span> <span style="box-sizing: border-box; color: grey;">' -- Mover enemigos, entorno --</span>
<span style="box-sizing: border-box; color: #0044ff;">185</span> xE1 = xE1 + velocE1
<span style="box-sizing: border-box; color: #0044ff;">190</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> xE1=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> xE1=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocE1 = -velocE1
<span style="box-sizing: border-box; color: #0044ff;">200</span> <span style="box-sizing: border-box; color: grey;">' -- Colisiones, perder vidas, etc --</span>
<span style="box-sizing: border-box; color: #0044ff;">210</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo1<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo2 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo2<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> <span style="box-sizing: border-box; color: red;">(</span>x=xo3 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yo3<span style="box-sizing: border-box; color: red;">)</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">212</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=xE1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">AND</span> y=yE1 <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado = <span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">220</span> <span style="box-sizing: border-box; color: grey;">' -- Dibujar en nueva posicion --</span>
<span style="box-sizing: border-box; color: #0044ff;">230</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo1,yo1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">240</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo2,yo2:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">250</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xo3,yo3:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"x"</span>
<span style="box-sizing: border-box; color: #0044ff;">260</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">270</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">272</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> xE1,yE1:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span><span style="box-sizing: border-box; color: #008800;">"e"</span>
<span style="box-sizing: border-box; color: #0044ff;">280</span> <span style="box-sizing: border-box; color: grey;">' -- Pausa hasta el siguiente "fotograma" del juego --</span>
<span style="box-sizing: border-box; color: #0044ff;">290</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">300</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-18790731342555553522014-09-26T10:59:00.000+02:002014-09-26T10:59:37.757+02:00Un mini-juego en BASIC de Amstrad CPC (3: emuladores, colores, while, teclado)<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
11. Programar desde un ordenador moderno</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si estás usando un emulador, existen opciones más cómodas que teclear directamente desde el propio emulador: puedes usar un editor más moderno, como Notepad++ o Geany, para teclear el programa y modificarlo, y luego llevarlo al emulador.:</div>
<ul style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px;">
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Para <b style="box-sizing: border-box; line-height: inherit;">WinApe</b> puedes "copiar" el programa desde el editor y "pegarlo" en el emulador empleando la opción "Paste" del menú "File". Verás como el programa se va "tecleando" en el menulador poco a poco delante de tus ojos. Si has cambiado sólo una línea, puedes "copiar y pegar" sólo esa línea. El camino contrario también es posible: si quieres llevar tu programa desde el emulador al "mundo exterior", puedes entrar al menú "Settings", opción "Other" y asegurarte de que la impresora se está redirigiendo a un fichero. A partir de ese momento, si tecleas "LIST #8" (la almohadilla está en Mayúsculas+3), el contenido de tu programa se volcará a ese fichero.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Si utilizas <b style="box-sizing: border-box; line-height: inherit;">CPCE</b>, hay una alternativa aún más rápida para introducir todo el programa: puedes guardar el programa desde el editor con un nombre como "1.bas", entrar a CPCE, escoger la opción "Tape bypass" del menú "Options" para que las operaciones de cinta se redirijan al disco duro de tu ordenador anfitrión, luego teclear |TAPE (la barra vertical se consigue pulsando mayúsculas y la tecla que está a la derecha de la P) y finalmente LOAD". Aparecerá una ventana de diálogo que te permitirá escoger qué programa cargar (ése que habías guardado como "1.bas"). Incluso podríamos guardar después nuestro programa y dejarlo accesible desde fuera del emulador si tecleamos <b style="box-sizing: border-box; line-height: inherit;">SAVE"nombre.bas",a</b> (la opción A indica que se guarde en formato ASCII, en vez de compactado, y así lo podremos leer y modificar desde cualquier editor).</li>
</ul>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
12. Borrar la pantalla</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La orden de borrar la pantalla es sencilla: CLS, abreviatura de CLEAR SCREEN. En un equipo antiguo como los Amstrad CPC, el borrar la pantalla y redibujarla por completo en cada fotograma de un juego puede provocar parpadeos. Por eso, en el ejemplo anterior borrábamos la casilla que antes ocupaba nuestro personaje antes de redibujarlo. Eso no quita que deberíamos borrar al menos la pantalla una vez al principio del juego:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">CLS</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
13. Uso de colores</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La memoria de pantalla de un CPC es muy limitada (16 KB), así que si queremos tener muchos puntos en pantalla será a cambio de tener pocos colores, y si nos apetece usar muchos colores, la cantidad de puntos será menor y las imágenes serán menos nítidas.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos escoger entre tres modos de pantalla:</div>
<ul style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px;">
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Modo 0: 25 líneas de texto, con 20 caracteres cada una. En modo gráfico, esto supone poder usar 160x200 puntos, con 16 colores simultáneos, a elegir entre una paleta de 27 colores.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Modo 1: 25 líneas de 40 caracteres (320x200 puntos, con 4 colores, también a elegir entre 27).</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Modo 2: 25 líneas de 80 caracteres (640x200 puntos, con 2 colores de 27).</li>
</ul>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un CPC inicialmente arranca en "modo 1". Para cambiar de un modo a otro, se usa la orden MODE, seguida por el número de modo:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> 0</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si queremos que nuestro programa sea robusto, debería escoger un modo de pantalla nada más comenzar, para que no se comporte de forma incorrecta si el equipo estaba en un modo de pantalla distinto del que esperábamos, Cuando se cambia de modo, también se borrará la pantalla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Tenemos una orden para cambiar el color de texto (PEN) y otra para el color de fondo (PAPER). A continuación de cualquiera de estas órdenes se indica el número de color que se quiere usar, de 0 a 15 (en modo 0; si estamos en un modo de mayor resolución, tendremos menos colores disponibles: 0 a 3 en modo 1, 0 a 1 en modo 2):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">PAPER</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">3</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"hola"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Los valores predefinidos para cada uno de los colores son:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Modo 2:</div>
<table border="1" cellpadding="5" style="background: white; border: 1px none rgb(221, 221, 221); box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px; margin-bottom: 1.25rem;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td style="background-color: navy; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">0: Azul (paleta 1)</td><td style="background-color: yellow; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">1: Amarillo intenso (paleta 24)</td></tr>
</tbody></table>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Modo 1:</div>
<table border="1" cellpadding="5" style="background: white; border: 1px none rgb(221, 221, 221); box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px; margin-bottom: 1.25rem;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td style="background-color: navy; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">0: Azul (paleta 1)</td><td style="background-color: yellow; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">1: Amarillo intenso (paleta 24)</td></tr>
<tr style="background: rgb(249, 249, 249); box-sizing: border-box;"><td style="background-color: cyan; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">2: Cyan claro (paleta 20)</td><td style="background-color: red; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">3: Rojo claro (paleta 6)</td></tr>
</tbody></table>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Modo 0:</div>
<table border="1" cellpadding="5" style="background: white; border: 1px none rgb(221, 221, 221); box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px; margin-bottom: 1.25rem;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td style="background-color: navy; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">0: Azul (paleta 1)</td><td style="background-color: yellow; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">1: Amarillo intenso (paleta 24)</td><td style="background-color: cyan; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">2: Cyan claro (paleta 20)</td><td style="background-color: red; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">3: Rojo claro (paleta 6)</td></tr>
<tr style="background: rgb(249, 249, 249); box-sizing: border-box;"><td style="background-color: white; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">4: Blanco (paleta 26)</td><td style="background-color: black; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">5: Negro (paleta 0)</td><td style="background-color: blue; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">6: Azul claro (paleta 2)</td><td style="background-color: magenta; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">7: Magenta claro (paleta 8)</td></tr>
<tr style="box-sizing: border-box;"><td style="background-color: teal; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">8: Cyan (paleta 10)</td><td style="background-color: olive; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">9: Amarillo (paleta 12)</td><td style="background-color: #8080ff; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">10: Azul pálido (paleta 14)</td><td style="background-color: #ff8080; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">11: Rosa (paleta 16)</td></tr>
<tr style="background: rgb(249, 249, 249); box-sizing: border-box;"><td style="background-color: lime; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">12: Verde claro (paleta 18)</td><td style="background-color: #80ff80; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">13: Verde pálido (paleta 22)</td><td style="background-color: navy; box-sizing: border-box; color: yellow; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">14: Parpadeo Azul/Amarillo</td><td style="background-color: #0080ff; box-sizing: border-box; color: #ff8080; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">15: Parpadeo azul cielo/Rosa</td></tr>
</tbody></table>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero esos valores se pueden redefinir a partir de los 27 colores de la paleta. Para redefinir un color utilizaremos "INK pluma, color". Por ejemplo, podemos hacer que el color de fondo sea púrpura con:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,<span style="box-sizing: border-box; color: #0044ff;">7</span> : <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PAPER</span> 0</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
O establecer el segundo color de texto (si estamos en modo 1 o modo 0) a verde lima con</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">2</span>,<span style="box-sizing: border-box; color: #0044ff;">21</span> : <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PEN</span> <span style="box-sizing: border-box; color: #0044ff;">2</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La lista completa de colores que forman la paleta es:</div>
<table border="1" cellpadding="5" style="background: white; border: 1px none rgb(221, 221, 221); box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px; margin-bottom: 1.25rem;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td style="background-color: black; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">0 - Negro (5)</td><td style="background-color: navy; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">1 - Azul (0,14)</td><td style="background-color: blue; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">2 - Azul claro (6)</td><td style="background-color: maroon; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">3 - Rojo</td><td style="background-color: purple; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">4 - Magenta</td><td style="background-color: #8000ff; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">5 - Violeta</td><td style="background-color: red; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">6 - Rojo claro (3)</td><td style="background-color: #ff0080; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">7 - Púrpura</td><td style="background-color: magenta; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">8 - Magenta claro (7)</td></tr>
<tr style="background: rgb(249, 249, 249); box-sizing: border-box;"><td style="background-color: green; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">9 - Verde</td><td style="background-color: teal; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">10 - Cyan (8)</td><td style="background-color: #0080ff; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">11 - Azul cielo (15)</td><td style="background-color: olive; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">12 - Amarillo (9)</td><td style="background-color: grey; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">13 - Gris</td><td style="background-color: #8080ff; box-sizing: border-box; color: white; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">14 - Azul pálido (10)</td><td style="background-color: #ff8000; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">15 - Anaranjado</td><td style="background-color: #ff8080; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">16 - Rosa (11)</td><td style="background-color: #ff80ff; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">17 - Magenta pálido</td></tr>
<tr style="box-sizing: border-box;"><td style="background-color: lime; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">18 - Verde claro (12)</td><td style="background-color: #00ff80; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">19 - Verde mar</td><td style="background-color: cyan; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">20 - Cyan claro (2)</td><td style="background-color: #80ff00; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">21 - Verde lima</td><td style="background-color: #80ff80; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">22 - Verde pálido (13)</td><td style="background-color: #80ffff; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">23 - Cyan pálido</td><td style="background-color: yellow; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">24 - Amarillo claro (1)</td><td style="background-color: #ffff80; box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">25 - Amarillo pálido</td><td style="box-sizing: border-box; color: black; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">26 - Blanco (4)</td></tr>
</tbody></table>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
También podemos cambiar el color del borde de la pantalla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">BORDER</span> <span style="box-sizing: border-box; color: #0044ff;">23</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
14. Repetir mientras se cumpla una condición: el "bucle de juego"</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un juego típicamente realiza una serie de tareas que se repiten en cada "fotograma": comprobar qué teclas pulsamos, mover los enemigos y demás elementos del fondo, comprobar colisiones entre los elementos (que nos pueden dar puntos o hacer perder una vida) y dibujar todo en pantalla. Esta estructura repetitiva es lo que se suele conocer como el "bucle de juego".</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Iremos completando esos detalles poco a poco, pero vamos a crear ya la estructura básica para ese bloque repetitivo. El bloque comienza por la orden WHILE (mientras), y termina con la orden WEND. En la orden WHILE hay que indicar la condición que hace que se repita. Por ejemplo, podemos crear una variable "terminado", que empiece teniendo el valor 0 (para indicar que no ha terminado la partida) y que más adelante cambie de valor para indicar cuando termine la partida (por ejemplo, si chocamos con un enemigo).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> terminado=0
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De modo que el programa completo por ahora sería algo como:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: velocidad=<span style="box-sizing: border-box; color: #0044ff;">1</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> x = x+velocidad
<span style="box-sizing: border-box; color: #0044ff;">60</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">80</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> x=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocidad = -velocidad
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Ahora el programa se repite sin fin, porque aún no cambiamos el valor de la variable "terminado", así que para terminar de probarlo deberemos <b style="box-sizing: border-box; line-height: inherit;">pulsar dos veces la tecla ESC</b> de nuestro CPC.</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
15. Comprobar las teclas</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos saber si se ha pulsado alguna tecla mirando el valor de INKEY$. Es un texto, de modo que la variable en la que guardemos su valor deberá tener un nombre terminado con el simbolo $, para indicar que no va a almacenar valores numéricos sino caracteres:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">tecla$ = <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Ahora tecla$ podrá tener valores como "w", "a", "s", "d" o la tecla que se haya pulsado... o bien una cadena vacía ("") si no se ha pulsado ninguna tecla. de modo que podríamos hacer que nuestro personaje se moviera con esas teclas así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">42</span> tecla$ = <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span>$
<span style="box-sizing: border-box; color: #0044ff;">44</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> tecla$=<span style="box-sizing: border-box; color: #008800;">"a"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">46</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> tecla$=<span style="box-sizing: border-box; color: #008800;">"d"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">48</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> tecla$=<span style="box-sizing: border-box; color: #008800;">"w"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> tecla$=<span style="box-sizing: border-box; color: #008800;">"s"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">52</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> tecla$=<span style="box-sizing: border-box; color: #008800;">"x"</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">60</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La orden INKEY$ es fácil de usar y existe en casi cualquier versión de BASIC, pero tiene limitaciones: no funcionará correctamente si está activado el bloqueo de mayúsculas (porque la tecla "A" no nos devolverá "a" sino "A") y además tiene un cierto retardo antes de empezar a repetirse. En los Amstrad CPC existe una alternativa: la orden INKEY(x), que devolverá -1 si la tecla con código "x" no está pulsada. Por ejemplo, si sabemos que la tecla "abajo" tiene el código 2, podríamos comprobar si está pulsada con:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">2</span><span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> ...</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El problema es conocer los códigos de las teclas, pero están recopilados en la siguiente imagen:</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_codigosTecla.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Así, una versión alternativa del programa sería:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<br />
<pre class="locobasic locobasic" style="-webkit-text-stroke-width: 0px; background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; display: block; font-family: monospace; font-size: 1.1em; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5em; margin: 0px; orphans: auto; padding: 15px; text-align: start; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">MODE</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> 0,0: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">INK</span> <span style="box-sizing: border-box; color: #0044ff;">1</span>,<span style="box-sizing: border-box; color: #0044ff;">20</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: terminado=0
<span style="box-sizing: border-box; color: #0044ff;">15</span> arriba=0: abajo=<span style="box-sizing: border-box; color: #0044ff;">2</span>: derecha=<span style="box-sizing: border-box; color: #0044ff;">1</span>: izqda=<span style="box-sizing: border-box; color: #0044ff;">8</span>: salir=<span style="box-sizing: border-box; color: #0044ff;">63</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WHILE</span> terminado = 0
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">42</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>arriba<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">44</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>abajo<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> y=y+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">46</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>derecha<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x+<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">48</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>izqda<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x=x-<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">INKEY</span><span style="box-sizing: border-box; color: red;">(</span>salir<span style="box-sizing: border-box; color: red;">)</span> <> -<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> terminado=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">60</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">WEND</span></pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-40803881873121959002014-09-25T10:19:00.001+02:002014-09-25T15:05:16.839+02:00Un mini-juego en BASIC de Amstrad CPC (2: variables, bucles, condiciones)<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
6. Variables</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En un programa habrá datos que cambian, como la posición de nuestro personaje. Para eso usaremos "variables", a las que podemos asignar un valor y modificarlo más adelante. Por ejemplo, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> x=<span style="box-sizing: border-box; color: #0044ff;">20</span>: y=<span style="box-sizing: border-box; color: #0044ff;">15</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Como se ve, para dar un valor a una variable basta con indicar su nombre, el símbolo "igual" (=) y el valor que queremos que tenga.</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
7. Edición de programas</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El programa anterior se parece mucho al que le precede. Hemos añadido una línea 5, algo que se puede hacer directamente, pero también hemos modificado la línea 10. Para eso hay dos alternativas: volver a escribirla por completo, o, más rápido, teclear <b style="box-sizing: border-box; line-height: inherit;">EDIT</b> 10 [Intro] para modificar sólo lo que haya cambiado. Dentro de poco veremos cómo teclear el programa desde un ordenador moderno y llevarlo a un emulador.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
8. Bucles y contadores</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos hacer que una variable tome varios valores sucesivos, utilizando la orden FOR, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> x = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">5</span>
<span style="box-sizing: border-box; color: #0044ff;">110</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> x
<span style="box-sizing: border-box; color: #0044ff;">120</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> x</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Este programa da valores a "x", desde 1 hasta (TO) 5. Para cada valor, lo escribe (PRINT x) y pasa al siguiente valor repetitivo (NEXT x), de modo que en pantalla aparecerán los números del 1 al 5, cada uno en una línea. Este tipo de estructuras repetitivas se suelen llamar "bucles".</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Esto nos puede servir para mover algo de un lado a otro de la pantalla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>
<span style="box-sizing: border-box; color: #0044ff;">7</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> x = <span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">30</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> x</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(Ya puedes borrar las líneas 100, 110 y 120 si las habías llegado a teclear).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Este fuente tiene dos problemas: la figura móvil "deja rastro" (aparecen muchas personas en pantalla, en vez de una sola), y se mueve demasiado deprisa.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Es fácil no dejar rastro: basta escribir un espacio en blanco en la casilla anterior:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>
<span style="box-sizing: border-box; color: #0044ff;">7</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> x = <span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">30</span>
<span style="box-sizing: border-box; color: #0044ff;">8</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x-<span style="box-sizing: border-box; color: #0044ff;">1</span>,y
<span style="box-sizing: border-box; color: #0044ff;">9</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> x</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para que no vaya tan deprisa, podemos hacer una pausa tras cada dibujado. Pronto veremos alternativas mejores, pero como primer acercamiento, no puede basta un FOR vacío para hacer esa pausa:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>
<span style="box-sizing: border-box; color: #0044ff;">7</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> x = <span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">30</span>
<span style="box-sizing: border-box; color: #0044ff;">8</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x-<span style="box-sizing: border-box; color: #0044ff;">1</span>,y
<span style="box-sizing: border-box; color: #0044ff;">9</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> x</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Esas "200 vueltas sin hacer nada" hacen que el programa se detenga un instante al final de cada pasada. Ese valor 200 se podría cambiar por cualquier otro, según la velocidad de animación que quisiéramos conseguir.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por cierto, esa misma orden FOR nos puede ayudar a ver todo el juego de caracteres de un Amstrad CPC, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i = <span style="box-sizing: border-box; color: #0044ff;">32</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">255</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span>i<span style="box-sizing: border-box; color: red;">)</span>;: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(Un punto y coma después de una orden PRINT hace que no se avance a la siguiente línea de la pantalla tras escribir)</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
O bien podemos mostrar el número de cada carácter delante de él, para poder relacionarlos con más facilidad:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i = <span style="box-sizing: border-box; color: #0044ff;">32</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">255</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> i;<span style="box-sizing: border-box; color: #008800;">"="</span>;CHR$<span style="box-sizing: border-box; color: red;">(</span>i<span style="box-sizing: border-box; color: red;">)</span>;<span style="box-sizing: border-box; color: #008800;">" "</span>;: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_charset.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
9. Condiciones</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos comprobar si se cumple una condición y dar algún paso en ese caso, usando la construcción IF...THEN (si...entonces). Por ejemplo, para no permitir que la coordenada X de nuestro personaje sea menor que uno y así evitar que nos salgamos de la zona utilizable de la pantalla y que el juego se interrumpa con un mensaje de error:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">22</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x < <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> x = <span style="box-sizing: border-box; color: #0044ff;">1</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Con el símbolo "<" comprobamos si x "es menor" que 1. También podemos comprobar si es mayor, o mayor o igual, o exactamente igual, o distinto, usando los siguientes símbolos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="txt" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">> Mayor que
>= Mayor o igual que
< Menor que
>= Menor o igual que
= Igual a
<> Distinto de</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos enlazar varias condiciones con AND (y), OR (o) y NOT (no). Por ejemplo, podemos hacer que la velocidad sea cero cuando se llegue al margen izquierdo de la pantalla (x=1) o al margen derecho (x=40) así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">22</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> x=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocidad = 0</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Con esa estructura, podemos ampliar el ejemplo anterior, para que nuestro personaje se mueva de lado a lado 100 veces, y "rebote" cada vez que llegue a un extremo de la pantalla:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">5</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: velocidad=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">7</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">100</span>
<span style="box-sizing: border-box; color: #0044ff;">8</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">9</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">10</span> x = x+velocidad
<span style="box-sizing: border-box; color: #0044ff;">15</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">22</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> x=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocidad = -velocidad
<span style="box-sizing: border-box; color: #0044ff;">25</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
10. Renumerar el programa</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Nuestro programa tiene ya tantas líneas intermedias (7,8,9,10) que empieza a ser "demasiado compacto" y en ciertas zonas ya no podríamos añadir más órdenes entre las existentes. Si queremos que las líneas vuelvan a estar separadas de 10 en 10, podemos usar la orden RENUM [Intro] y se convertirá en</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> x=<span style="box-sizing: border-box; color: #0044ff;">10</span>: y=<span style="box-sizing: border-box; color: #0044ff;">5</span>: velocidad=<span style="box-sizing: border-box; color: #0044ff;">1</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> i = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">100</span>
<span style="box-sizing: border-box; color: #0044ff;">30</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">" "</span>
<span style="box-sizing: border-box; color: #0044ff;">50</span> x = x+velocidad
<span style="box-sizing: border-box; color: #0044ff;">60</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> x,y
<span style="box-sizing: border-box; color: #0044ff;">70</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span>
<span style="box-sizing: border-box; color: #0044ff;">80</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">IF</span> x=<span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">OR</span> x=<span style="box-sizing: border-box; color: #0044ff;">40</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">THEN</span> velocidad = -velocidad
<span style="box-sizing: border-box; color: #0044ff;">90</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">FOR</span> pausa = <span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">TO</span> <span style="box-sizing: border-box; color: #0044ff;">200</span>: <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> pausa
<span style="box-sizing: border-box; color: #0044ff;">100</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">NEXT</span> i</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_personajeRebota.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos renumerar de forma que el programa comience desde cierto número de línea, no necesariamente la 10, haciendo cosas como "RENUM 100", o podemos hacer que se renumere sólo a partir de cierta línea y se conserven las anteriores con su numeración original, con "RENUM 100, 8", o incluso qué incremento se deberá usar a partir de ese momento: "RENUM 100, 8, 5".</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-75247182638564845292014-09-24T12:46:00.000+02:002014-09-24T12:46:31.272+02:00Un mini-juego en BASIC de Amstrad CPC (1: escribir, crear un programa)Se acerca el <a href="http://concursocpc.byterealms.com/concurso2014/">concurso de juegos retro para Amstrad CPC organizado por ByteRealms</a>. Eso me ha motivado a desempolvar un tutorial breve que hice para la Revista de Usuarios Amstrad titulado "Aprende a programar en BASIC de Amstrad CPC... creando un mini-juego" Durante los próximos (pocos) días, podrás encontrar aquí una versión ampliada, por si te apetece entrar en ese mundillo...<br />
<br />
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
1. Escribir en pantalla</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Escribir un texto en pantalla es fácil: usaremos la orden <b style="box-sizing: border-box; line-height: inherit;">PRINT</b>, seguida del texto que queremos mostrar. Este texto lo escribiremos en pantalla entre comillas.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #008800;">"Hola"</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Cuando pulsemos la tecla de "retorno" (Intro, Entrar, Return,o una flecha hacia abajo y hacia la izquierda), nuestro CPC analiza esa orden y la "ejecuta", mostrando el texto Hola en pantalla.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Las órdenes del lenguaje BASIC, como PRINT, son palabras en inglés, o abreviaturas de éstas. Lo mismo ocurre en la mayoría de lenguajes de programación. Además en BASIC las podemos escribir en mayúsculas o en minúsculas indistintamente (esto ya no es tan habitual en otros lenguajes).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para probar esa orden puedes usar un Amstrad CPC real, un emulador de escritorio como <a href="http://www.winape.net/" style="box-sizing: border-box; color: #008cba; line-height: inherit; text-decoration: none;">WinApe</a>, <a href="http://cngsoft.no-ip.org/cpce/index.htm" style="box-sizing: border-box; color: #008cba; line-height: inherit; text-decoration: none;">CPCE</a> o <a href="http://sourceforge.net/projects/javacpc/" style="box-sizing: border-box; color: #008cba; line-height: inherit; text-decoration: none;">JavaCPC</a>, o incluso un emulador para navegadores web, basado en Javascript, como <a href="http://roland.retrolandia.net/464s" style="box-sizing: border-box; color: #008cba; line-height: inherit; text-decoration: none;">Roland</a></div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
2. Escribir un carácter extendido</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El juego de caracteres de un Amstrad CPC incluye muchos más símbolos que letras y números. También hay símbolos que nos permiten dibujar recuadros, o incluso alguno más específico, como una "persona", que nos puede venir bien para este "mini-juego". Para obtener uno de estos símbolos necesitamos saber su "número" asociado, y usar la expresión <b style="box-sizing: border-box; line-height: inherit;">CHR$</b>, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<img alt="" src="http://www.nachocabanes.com/amstrad/curso2014/cpc_hola.png" style="background-color: white; box-sizing: border-box; color: #222222; display: inline-block; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; height: auto; line-height: 16px; max-width: 100%; vertical-align: middle;" /><span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;"></span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
(Más adelante veremos cómo saber cuál es todo el juego de caracteres del Amstrad CPC)</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
3. Situarnos en cualquier posición de la pantalla</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Existe una orden que nos permite movernos a en cualquier posición de la pantalla. Se trata de <b style="box-sizing: border-box; line-height: inherit;">LOCATE</b>, a la que se le indican las "coordenadas" en las que nos queremos colocar (X, columna, contando desde la parte izquierda de la pantalla, con valores de 1 a 80, e Y, fila, contando desde la parte superior de la pantalla, con valores de 1 a 25):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">20</span>,<span style="box-sizing: border-box; color: #0044ff;">15</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Como sólo sabemos dar una orden cada vez, LOCATE resulta un tanto inútil todavía: la orden anterior se coloca en el centro de la línea 15... no hace nada... y baja a la línea 16. Necesitamos poder dar varias órdenes seguidas...</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4. Varias órdenes en una</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si queremos dar varios pasos seguidos, podemos indicar varias órdenes separadas entre un símbolo de "<b style="box-sizing: border-box; line-height: inherit;">dos puntos</b>" (:).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">20</span>,<span style="box-sizing: border-box; color: #0044ff;">15</span>:<span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<span style="font-size: 16.3636360168457px; line-height: 23.2727279663086px;">Ahora sí se verá nuestra "persona" centrada en la pantalla.</span></h2>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
5. Un programa formado por varias líneas</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Aunque podamos escribir varias órdenes en una misma línea, no será suficiente para un programa real: en un Amstrad CPC, cada línea puede tener una longitud máxima de 256 caracteres.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La alternativa es crear un programa formado por varias líneas. Podemos indicar un <b style="box-sizing: border-box; line-height: inherit;">número de línea</b> delante de cada orden, y así el programa no se podrá en marcha automáticamente, sino que quedará "almacenado":</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">1</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">20</span>,<span style="box-sizing: border-box; color: #0044ff;">15</span>
<span style="box-sizing: border-box; color: #0044ff;">2</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Cuando tecleemos <b style="box-sizing: border-box; line-height: inherit;">RUN</b> (y pulsemos Intro), será cuando el programa se ponga en funcionamiento, siguiendo el orden numérico de las órdenes que hemos escrito (primero la 1 y después la 2). Si queremos comprobar en algún momento el "listado" de nuestro programa (todas las órdenes que lo forman), lo podemos hacer con la orden <b style="box-sizing: border-box; line-height: inherit;">LIST</b> (seguida por Intro, claro).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para poder añadir una orden entre dos que ya existen, es habitual "dejar hueco", no numerándolas de uno en uno, sino dando un salto mayor, típicamente de 10 en 10:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="locobasic locobasic" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #0044ff;">10</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">LOCATE</span> <span style="box-sizing: border-box; color: #0044ff;">20</span>,<span style="box-sizing: border-box; color: #0044ff;">15</span>
<span style="box-sizing: border-box; color: #0044ff;">20</span> <span style="box-sizing: border-box; color: #000088; font-weight: bold;">PRINT</span> <span style="box-sizing: border-box; color: #aa00aa; font-weight: bold;">CHR</span>$<span style="box-sizing: border-box; color: red;">(</span><span style="box-sizing: border-box; color: #0044ff;">248</span><span style="box-sizing: border-box; color: red;">)</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para <b style="box-sizing: border-box; line-height: inherit;">borrar</b> una línea, basta con teclear su número y pulsar Intro. Por ejemplo, si has tecleado todo lo anterior, tu programa tendrá las líneas 1, 2, 10 y 20. Podrías borrar la línea 1 tecleando 1[Intro] y la 2 de igual forma. Si quieres borrar TODO el programa, puedes usar la orden <b style="box-sizing: border-box; line-height: inherit;">NEW</b>.</div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-29693408.post-79709048251078059962014-09-24T09:43:00.000+02:002014-09-24T09:43:19.267+02:00Pascal - 6d: Parámetros por referencia<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
6.4. Modificación de parámetros</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Ya habíamos visto qué son los <b style="box-sizing: border-box; line-height: inherit;">parámetros</b>: una serie de datos extra, que indicábamos entre paréntesis en la cabecera de un procedimiento o función.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Es algo que estamos usando, casi sin darnos cuenta, desde el primer apartado del curso, cuando empezamos a usar "WriteLn":</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Hola'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Esta línea es una llamada al procedimiento "WriteLn", y como parámetros le estamos indicando lo que queremos que escriba, en este caso, el texto "Hola".</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero vamos a ver qué ocurre si modificamos un parámetro:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* PROCMOD1.PAS, Procedimiento que modifica parametros *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Primer intento: paso por valor *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> ModificarParametros1;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span> dato<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">procedure</span> modifica<span style="box-sizing: border-box; color: #009900;">(</span> variable <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
variable <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">3</span> ;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Dentro: '</span><span style="box-sizing: border-box; color: #339933;">,</span> variable <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
dato <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Antes: '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
modifica<span style="box-sizing: border-box; color: #009900;">(</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Después: '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
¿Qué podemos esperar que pase? Vamos a ir siguiendo cada instrucción:</div>
<ul style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px;">
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Declaramos el nombre del programa</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Usaremos la variable "dato", de tipo entero.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">El procedimiento "modifica" toma una variable de tipo entero, le asigna el valor 3 y la escribe. Lógicamente, siempre escribirá 3.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Empieza el cuerpo del programa: damos el valor 2 a "dato".</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Escribimos el valor de "dato". Claramente, será 2.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Llamamos al procedimiento "modifica", que asigna el valor 3 a "dato" y lo escribe.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Finalmente volvemos a escribir el valor de "dato"... ¿3?</li>
</ul>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pues no es eso lo que ocurre: escribe <b style="box-sizing: border-box; line-height: inherit;">un 2</b>. Las modificaciones que hagamos a "dato" dentro del procedimiento "modifica" sólo son válidas mientras estemos <b style="box-sizing: border-box; line-height: inherit;">dentro</b> de ese procedimiento (lo que realmente ocurre es que el procedimiento está recibiendo una copia de la variable, de modo que si hacemos algún cambio, éstos no se cambios no afectan a la variable original, que existe fuera del procedimiento).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Eso es <b style="box-sizing: border-box; line-height: inherit;">pasar un parámetro</b> <b style="box-sizing: border-box; line-height: inherit;">por valor</b>: podemos leer su valor, pero no podemos alterarlo (los cambios se pierden al salir).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La alternativa es "<b style="box-sizing: border-box; line-height: inherit;">pasar parámetros por referencia</b>, añadiendo la palabra "var" delante de cada parámetro que sea modificable dentro del procedimiento (o función):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* PROCMOD2.PAS, Procedimiento que modifica parametros *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Segundo intento: paso por referencia *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> ModificarParametros2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span> dato<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">procedure</span> modifica<span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">var</span> variable <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
variable <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">3</span> ;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Dentro: '</span><span style="box-sizing: border-box; color: #339933;">,</span> variable <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
dato <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Antes: '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
modifica<span style="box-sizing: border-box; color: #009900;">(</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Después: '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Esta vez la última línea del programa sí que escribe un 3 y no un 2, porque hemos permitido que los cambios hechos a la variable salgan del procedimiento (para eso hemos añadido la palabra "var").</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El nombre "<b style="box-sizing: border-box; line-height: inherit;">referencia</b>" alude a que no se pasa realmente al procedimiento o función el valor de la variable, sino la dirección de memoria en la que se encuentra, algo que más adelante llamaremos un "puntero".</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Una de las aplicaciones más habituales de pasar parámetros por referencia es cuando debemos devolver <b style="box-sizing: border-box; line-height: inherit;">más de un valor</b>: habíamos visto que una función era muy parecida a un procedimiento, pero además devolvía un valor (pero <b style="box-sizing: border-box; line-height: inherit;">sólo uno</b>); cuando necesitamos obtener más de un valor de salida, la forma habitual de conseguirlo es pasándolos como parámetros por referencia, (precedidos por la palabra "var"). Existe alguna otra alternativa menos elegante, como devolver un array, cosas que no tiene mucho sentido si no se trata de datos relacionados..</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Otra aplicación puede ser optimizar (ligeramente) velocidad: si pasamos datos de gran tamaño, será algo más lento pasarlos por valor (hay que duplicar toda su estructura) que pasarlos por referencia (sólo se pasa su dirección), pero este tipo de consideraciones hay que tenerlas más adelante, no en la primera implementación del programa, porque tratar de optimizar velocidad antes de tener la certeza de que todo funciona correctamente puede dar lugar a errores difíciles de detectar.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
¿Y si la variable <b style="box-sizing: border-box; line-height: inherit;">tiene el mismo nombre</b> en la función y en el cuerpo del programa? ¿Conseguiremos "engañar" al compilador y modificar su valor sin necesidad de usar "var"?</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* PROCMOD3.PAS, Procedimiento que modifica parametros *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Tercer intento: paso por valor de variables con el *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* el mismo nombre *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> ModificarParametros3;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span> dato<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">procedure</span> modifica<span style="box-sizing: border-box; color: #009900;">(</span> dato <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
dato <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">3</span> ;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Dentro: '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
dato <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Antes: '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
modifica<span style="box-sizing: border-box; color: #009900;">(</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Después: '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Como se ve en este ejemplo, da igual el nombre que tengan las variables. El comportamiento será el mismo: ambas variables son distintas, aunque el nombre parezca indicar lo contrario.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
(Como siempre, tienes más detalles y ejercicios propuestos en la <a href="http://www.nachocabanes.com/pascal/cupas5/cupas06d.php">versión oficial del curso</a>).Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-24208282242973022532014-09-23T10:02:00.002+02:002014-09-23T10:36:07.167+02:00Pascal - 6c: Funciones<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
6.3. Funciones</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En muchas ocasiones querremos obtener un valor como resultado de esa "subrutina" que hemos creado. Llamaremos "<b style="box-sizing: border-box; line-height: inherit;">función</b>" a un procedimiento capaz de devolver un valor. Por ejemplo, podríamos crear una función sencilla, que calcule (y devuelva) el doble del número que se le pase como parámetro, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* DOBLE.PAS, Primer ejemplo de funcion *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> FuncionDoble;
<span style="box-sizing: border-box; color: black; font-weight: bold;">function</span> doble<span style="box-sizing: border-box; color: #009900;">(</span> numero<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span><span style="box-sizing: border-box; color: #009900;">)</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
doble <span style="box-sizing: border-box; color: #339933;">:=</span> numero <span style="box-sizing: border-box; color: #339933;">*</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Cuerpo del programa *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
n<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce un numero entero: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span> n <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Su doble es: '</span><span style="box-sizing: border-box; color: #339933;">,</span> doble<span style="box-sizing: border-box; color: #009900;">(</span>n<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Y el doble de 5 es: '</span><span style="box-sizing: border-box; color: #339933;">,</span> doble<span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box; color: #cc66cc;">5</span><span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(*
Ejemplo de ejecucion:
Introduce un numero entero: 3
Su doble es: 6
Y el doble de 5 es: 10
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Aquí hay varios detalles que merece la pena comentar, algunos de ellos nuevos:</div>
<ul style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; list-style-position: outside; margin: 0px 0px 1.25rem 1.1rem; padding: 0px;">
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Esta función se llama "doble".</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Tiene un <b style="box-sizing: border-box; line-height: inherit;">parámetro</b> llamado "numero", que es un número entero.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">El resultado va a ser también un número entero.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Antes de salir de la función, le asignamos el que será su valor definitivo.</li>
<li style="box-sizing: border-box; margin: 0px; padding: 0px;">Desde el cuerpo del programa usamos la función 2 veces: la primera para calcular el doble del número "n", que ha introducido el usuario, y la segunda para hallar el doble de 5.</li>
</ul>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Una función puede recibir más de un parámetro, y puede realizar operaciones más complejas. Por ejemplo, podríamos calcular una potencia (un número elevado a otro) mediante multiplicaciones repetitivas, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* POTENCIA.PAS, Segundo ejemplo de funcion *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> PruebaDePotencia;
<span style="box-sizing: border-box; color: black; font-weight: bold;">function</span> potencia<span style="box-sizing: border-box; color: #009900;">(</span>a<span style="box-sizing: border-box; color: #339933;">,</span>b<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span><span style="box-sizing: border-box; color: #009900;">)</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Definimos la funcion *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Locales: para bucles *)</span>
temporal<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">(* y para el valor temporal *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
temporal <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Inicializacion *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> b <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
temporal <span style="box-sizing: border-box; color: #339933;">:=</span> temporal <span style="box-sizing: border-box; color: #339933;">*</span> a; <span style="box-sizing: border-box; color: #666666; font-style: italic;">(* multiplicamos "b" veces por "a" *)</span>
potencia <span style="box-sizing: border-box; color: #339933;">:=</span> temporal; <span style="box-sizing: border-box; color: #666666; font-style: italic;">(* y finalmente devolvemos el valor *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
numero1<span style="box-sizing: border-box; color: #339933;">,</span> numero2<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Cuerpo del programa *)</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Potencia de un numero entero'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce el primer numero'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span> numero1 <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce el segundo numero'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span> numero2 <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> numero1 <span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box;">' elevado a '</span><span style="box-sizing: border-box; color: #339933;">,</span> numero2 <span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box;">' vale '</span><span style="box-sizing: border-box; color: #339933;">,</span>
potencia <span style="box-sizing: border-box; color: #009900;">(</span>numero1<span style="box-sizing: border-box; color: #339933;">,</span> numero2<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: #009900;">)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Por supuesto, una función puede devolver valores de otros tipos, no solo numéricos. Así, una función que nos devolviera la inicial de una palabra podría ser:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* INICIAL.PAS, Funcion que devuelve char *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> FuncionInicial;
<span style="box-sizing: border-box; color: black; font-weight: bold;">function</span> inicial<span style="box-sizing: border-box; color: #009900;">(</span> texto<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span><span style="box-sizing: border-box; color: #009900;">)</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">char</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
inicial <span style="box-sizing: border-box; color: #339933;">:=</span> texto<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Cuerpo del programa *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
frase<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce una frase: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span> frase <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Su primera letra es: '</span><span style="box-sizing: border-box; color: #339933;">,</span> inicial<span style="box-sizing: border-box; color: #009900;">(</span>frase<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(*
Ejemplo de ejecucion:
Introduce una frase: hola, que tal
Su primera letra es: h
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
O bien podríamos recorrer una frase formada por varias palabras, para así construir y devolver una cadena que contenga las iniciales de todas ellas:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* INICIALES.PAS, Funcion que devuelve un string *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> FuncionIniciales;
<span style="box-sizing: border-box; color: black; font-weight: bold;">function</span> iniciales<span style="box-sizing: border-box; color: #009900;">(</span> texto<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span><span style="box-sizing: border-box; color: #009900;">)</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
temporal<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
temporal <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">''</span>;
temporal <span style="box-sizing: border-box; color: #339933;">:=</span> temporal <span style="box-sizing: border-box; color: #339933;">+</span> texto<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> length<span style="box-sizing: border-box; color: #009900;">(</span>texto<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> texto<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #339933;">-</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box;">' '</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
temporal <span style="box-sizing: border-box; color: #339933;">:=</span> temporal <span style="box-sizing: border-box; color: #339933;">+</span> texto<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span>;
iniciales <span style="box-sizing: border-box; color: #339933;">:=</span> temporal;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Cuerpo del programa *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
frase<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce una frase con varias palabras: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span> frase <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Sus iniciales son: '</span><span style="box-sizing: border-box; color: #339933;">,</span> iniciales<span style="box-sizing: border-box; color: #009900;">(</span>frase<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(*
Ejemplo de ejecucion:
Introduce una frase con varias palabras: hola, que tal
Sus iniciales son: hqt
*)</span>
</pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-57727688689822608492014-09-22T11:42:00.002+02:002014-09-22T11:44:49.726+02:00Pascal - 6b: Procedimientos con parámetros<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
6.2. Procedimientos con parámetros.</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La verdadera potencia de los procedimientos está en que no tienen por qué trabajar siempre con los mismos datos, sino que podemos indicarles unos datos adicionales, que llamaremos <b style="box-sizing: border-box; line-height: inherit;">parámetros</b>. Por ejemplo, podemos mejorar el procedimiento que escribía asteriscos, si le indicamos la cantidad de asteriscos que debe mostrar en pantalla, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* PROC03.PAS, procedimientos con parametros *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Proc03;
<span style="box-sizing: border-box; color: black; font-weight: bold;">procedure</span> EscribirAsteriscos<span style="box-sizing: border-box; color: #009900;">(</span> cantidad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Escribimos N asteriscos y avanzamos de linea }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> cantidad <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'*'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Primer texto'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
EscribirAsteriscos<span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box; color: #cc66cc;">12</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Y un segundo texto'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
EscribirAsteriscos<span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box; color: #cc66cc;">18</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Y texto de despedida'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
EscribirAsteriscos<span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box; color: #cc66cc;">20</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(*
Resultado:
Primer texto
************
Y un segundo texto
******************
Y texto de despedida
********************
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
¿Quieres ejercicicios propuestos? Ya sabes: <a href="http://www.nachocabanes.com/pascal/cupas5/cupas06b.php">la versión oficial del curso</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-57398541220021569742014-09-20T12:16:00.000+02:002014-09-20T12:17:24.540+02:00Pascal - 6a: Procedimientos<h1 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.75rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
6. Procedimientos y funciones</h1>
<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
6.1. Procedimientos.</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Hemos visto cómo hacer que se repita un bloque de programa, usando estructuras como "for", "while" o "repeat". Pero cuando un fragmento de programa se debe repetir en varias partes de nuestro fuente, el resultado puede seguir siendo redundante. Por ejemplo, podemos escribir varias frases "subrayadas" con asterisco así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* PROC01.PAS, procedimientos: acercamiento *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Proc01;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Primer texto }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Primer texto'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Escribimos 20 asteriscos y avanzamos de linea }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">20</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'*'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Segundo texto }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Y un segundo texto'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Escribimos 20 asteriscos y avanzamos de linea }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">20</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'*'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Tercer texto }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Texto de despedida'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Escribimos 20 asteriscos y avanzamos de linea }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">20</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'*'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(*
Resultado:
Primer texto
********************
Y un segundo texto
********************
Texto de despedida
********************
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Esto sigue siendo claramente repetitivo, a pesar de utilizar "for". Para mejorarlo, podemos crear un "bloque" llamado "Escribir20asteriscos" y que sirva como una "abreviatura" que nos permita no tener que teclear tantos código repetitivo. Además, el repetir menos hace que el programa sea menos propenso a errores, ya sea en el momento de teclear o cuando vayamos a ampliarlo o corregirlo (por ejemplo, si queremos cambiar los 20 asteriscos por 18, corremos el riesgo de olvidar hacerlo en alguno de los bloques). Quedaría así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* PROC02.PAS, procedimientos: uso real *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Proc02;
<span style="box-sizing: border-box; color: black; font-weight: bold;">procedure</span> Escribir20asteriscos;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Escribimos 20 asteriscos y avanzamos de linea }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">20</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'*'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Primer texto'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
Escribir20asteriscos;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Y un segundo texto'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
Escribir20asteriscos;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Texto de despedida'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
Escribir20asteriscos;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(*
Resultado:
Primer texto
********************
Y un segundo texto
********************
Texto de despedida
********************
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Estos bloques, que llamaremos "procedimientos" (y que en otros lenguajes de programación se conocen como "subrutinas") ayudarán a que nuestro programa sea menos repetitivo y resulte más fácil de leer.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En este programa, "i" es una <b style="box-sizing: border-box; line-height: inherit;">variable local</b>: se declara dentro del procedimiento "Escribir20asteriscos" y sólo es accesible dentro de él. Si en el cuerpo del programa intentamos hacer algo como "i:=2;" el programa no compilará, porque la variable no existe en esa zona. Debemos buscar conseguir que <b style="box-sizing: border-box; line-height: inherit;">tantas variables como podamos sean locales</b>. Sólo deberán ser "globales" (compartidas por todo el programa, y declaradas fuera de procedimientos) las variables que realmente se vayan a utilizar desde varias zonas distintas.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-40830057613783272682014-09-19T11:09:00.003+02:002014-09-19T11:18:40.792+02:00Pascal - 5b: Definición de tipos<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
5.2. Definición de tipos.</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El "tipo" de una variable es lo que determina qué clase de valores podremos guardar en ella. En los programas que hemos creado hasta ahora, el "tipo" es lo que indicamos junto al nombre de una variable cuando la declaramos. Por ejemplo,</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: black; font-weight: bold;">var</span> PrimerNumero<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">real</span>;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
indica que vamos a usar una variable que se va a llamar PrimerNumero y que almacenará números reales (con decimales), mientras que</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: black; font-weight: bold;">const</span> intentos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span> <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">3</span>;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
indica que vamos a usar una variable llamada intentos, que guardará números enteros y que tendrá como valor inicial 3.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
También podemos <b style="box-sizing: border-box; line-height: inherit;">crear</b> nuestros tipos de datos, a partir de los tipos básicos que permite el lenguaje, usando la palabra "type". Así, por ejemplo, podemos crear una nueva versión del ejemplo de "array de records" del apartado 4.3.3, definiendo</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARR_REC2.PAS, "array" de varios "record" *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Segunda version, con "const" y "type" *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> RecordArray2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">const</span>
maxDatos <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">10</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">type</span>
ficha <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span><span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #009900;">]</span>;
edad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span> <span style="box-sizing: border-box; color: #009900;">[</span>1..<span style="box-sizing: border-box; color: #0066ee;">maxDatos</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> ficha;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Ignacio'</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">edad</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">23</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El primer nombre es '</span><span style="box-sizing: border-box; color: #339933;">,</span> datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">' y la primera edad '</span><span style="box-sizing: border-box; color: #339933;">,</span> datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">edad</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El primer nombre es Ignacio y la primera edad 23
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Esto añade legibilidad, pero no es imprescindible. Entonces... ¿no será necesario definir tipos? Sí, en algunas circunstancias concretas sí será necesario. Un primer ejemplo en cuando tenemos dos variables declaradas de igual forma en distintas partes del programa, como en este ejemplo:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* TIPOS1.PAS, asignacion INCORRECTA de tipos *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* No compila !!! *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Tipos1;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
ficha1<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
email<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
anyoNacimiento<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
ficha2<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
email<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
anyoNacimiento<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
ficha1.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Pepe'</span>;
ficha1.<span style="box-sizing: border-box; color: #0066ee;">email</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'p@p.com'</span>;
ficha1.<span style="box-sizing: border-box; color: #0066ee;">anyoNacimiento</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1990</span>;
ficha2 <span style="box-sizing: border-box; color: #339933;">:=</span> ficha1;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> ficha2.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Aunque a nuestros ojos parezca que ambas variables son del mismo tipo, para el compilador no es así, de modo que el programa anterior no compilar correctamente.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podríamos declarar ambas a la vez, de la siguiente forma:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
ficha1<span style="box-sizing: border-box; color: #339933;">,</span> ficha2<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
email<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
anyoNacimiento<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
pero eso no servirá si las variables están en zonas separadas del programa (algo que nos empezará a ocurrir pronto). En ese caso, no habrá más remedio que crear un nuevo tipo de datos, y declarar ambas variables como pertenecientes a dicho tipo:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* TIPOS2.PAS, asignacion correcta de tipos *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Tipos2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">type</span> TipoFicha <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
email<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
anyoNacimiento<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
ficha1<span style="box-sizing: border-box; color: #339933;">:</span> TipoFicha;
ficha2<span style="box-sizing: border-box; color: #339933;">:</span> TipoFicha;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
ficha1.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Pepe'</span>;
ficha1.<span style="box-sizing: border-box; color: #0066ee;">email</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'p@p.com'</span>;
ficha1.<span style="box-sizing: border-box; color: #0066ee;">anyoNacimiento</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1990</span>;
ficha2 <span style="box-sizing: border-box; color: #339933;">:=</span> ficha1;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> ficha2.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Y habrá más casos en los que sea imprescindible declarar tipos, como cuando vayamos a volcar nuestros "record" a fichero, pero eso lo veremos más adelante.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-89065472378070484902014-09-18T10:31:00.000+02:002014-09-18T10:31:21.008+02:00Pascal - 5a: Constantes<h1 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.75rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<span style="font-size: 2.3125rem; line-height: 1.4;">5.1. Definición de constantes</span></h1>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
5.1.1. Valores que no cambian</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Cuando desarrollamos un programa, nos podemos encontrar con que hay variables que realmente "no varían" a lo largo de la ejecución de un programa, sino que su valor es <b style="box-sizing: border-box; line-height: inherit;">constante</b>.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Hay una manera especial de definirlas: con el especificador "<b style="box-sizing: border-box; line-height: inherit;">const</b>", que tiene el formato</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: black; font-weight: bold;">const</span> Nombre <span style="box-sizing: border-box; color: #339933;">=</span> Valor;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Cuando las declaramos, no será necesario indicar el tipo de datos, porque el compilador lo puede deducir:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: black; font-weight: bold;">const</span> MiNombre <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box;">'Nacho Cabanes'</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">const</span> PI <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">3.1415926535</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">const</span> LongitudMaxima <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">128</span>; </pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Ya en el cuerpo del programa, estas constantes se manejan igual que variables como las que habíamos visto hasta hora, con la diferencia de que no se nos permitirá cambiar su valor. Por tanto, es válido hacer</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span>MiNombre<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> Longitud > LongitudMaxima <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span> ...
<span style="box-sizing: border-box; color: #0066ee;">OtraVariable</span> <span style="box-sizing: border-box; color: #339933;">:=</span> MiNombre;
LongitudCircunferencia <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span> <span style="box-sizing: border-box; color: #339933;">*</span> PI <span style="box-sizing: border-box; color: #339933;">*</span> radio; </pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
pero no podríamos hacer</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">PI <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">3.14</span>;
MiNombre <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Nacho'</span>;
LongitudMaxima <span style="box-sizing: border-box; color: #339933;">:=</span> LongitudMaxima <span style="box-sizing: border-box; color: #339933;">+</span> <span style="box-sizing: border-box; color: #cc66cc;">10</span>;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Con los pocos conocimientos que llevamos hasta ahora, las constantes nos resultarán especialmente útiles para indicar el tamaño máximo de un array, de modo que los cambios en el programa sean mínimos en caso de que decidamos usar un tamaño de array mayor o menor, como en este ejemplo:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* CONST01.PAS, Const y arrays (01) *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">Program</span> Const01;
<span style="box-sizing: border-box; color: black; font-weight: bold;">const</span>
MAXIMO <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..<span style="box-sizing: border-box; color: #0066ee;">MAXIMO</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> MAXIMO <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Deme el dato '</span><span style="box-sizing: border-box; color: #339933;">,</span>i<span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box;">': '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Los datos al reves son: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> MAXIMO <span style="box-sizing: border-box; color: black; font-weight: bold;">downto</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si decidimos que queremos trabajar con 10 datos, el único cambio sería el valor de la constante; el resto de programa se comportaría correctamente en cuanto recompilásemos.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Como se ve en este ejemplo, las declaraciones de constantes se hacen antes del cuerpo del programa principal, y generalmente antes de las declaraciones de variables.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
5.1.2. Inicialización: Constantes "con tipo"</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En Turbo Pascal (y Free Pascal), el identificador "const" tiene también otro uso menos habitual: definir lo que se suele llamar "<b style="box-sizing: border-box; line-height: inherit;">constantes con tipo</b>", que no son más que <b style="box-sizing: border-box; line-height: inherit;">variables normales</b>, pero a las que damos un valor inicial antes de que comience a ejecutarse el programa. Se usa</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: black; font-weight: bold;">const</span> variable<span style="box-sizing: border-box; color: #339933;">:</span> tipo <span style="box-sizing: border-box; color: #339933;">=</span> valor;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un ejemplo más detallado sería:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* CONSTTIPO.PAS, Constantes con tipo *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">Program</span> ConstTipo;
<span style="box-sizing: border-box; color: black; font-weight: bold;">const</span>
x<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span> <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span>;
y<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span> <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'La suma de X e Y es: '</span><span style="box-sizing: border-box; color: #339933;">,</span> x<span style="box-sizing: border-box; color: #339933;">+</span>y<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Nuevo valor para X? '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>x<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Nuevo valor para Y? '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>y<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'La nueva suma de X e Y es: '</span><span style="box-sizing: border-box; color: #339933;">,</span> x<span style="box-sizing: border-box; color: #339933;">+</span>y<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Ejemplo de ejecucion:
La suma de X e Y es: 7
Nuevo valor para X? 3
Nuevo valor para Y? 6
La nueva suma de X e Y es: 9
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La única ventaja real sobre el uso "habitual" de una variable es la legibilidad: en el mismo punto en el que se declara la variable, queda indicado cuál queremos que sea su valor inicial.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<i style="box-sizing: border-box; line-height: inherit;"><b style="box-sizing: border-box; line-height: inherit;">Ejercicio propuesto 5.1.2.1:</b> Crea un programa que pida al usuario 10 números enteros y vaya calculando y mostrando su suma. No debes almacenar los datos en un array, y la suma debe guardarse en una variable que se haya inicializado a 0, usando una "constante con tipo".</i></blockquote>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<i style="box-sizing: border-box; line-height: inherit;"><b style="box-sizing: border-box; line-height: inherit;">Ejercicio propuesto 5.1.2.2:</b> Crea un programa que pida al usuario 5 números enteros y vaya calculando y mostrando su producto. No debes almacenar los datos en un array, y el producto se debe guardar en una variable que se haya inicializado a 1, empleando una "constante con tipo".</i></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
5.1.3. Inicialización de arrays</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Las "constantes con tipo" son especialmente útiles para dar valores iniciales a todo un array, indicando todos sus valores entre paréntesis y separados por comas, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* CONSTTIPOARR.PAS, Constantes con tipo *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* como forma de dar valores iniciales a un array *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> ConstTipoArr;
<span style="box-sizing: border-box; color: black; font-weight: bold;">const</span>
diasMes <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..12<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span> <span style="box-sizing: border-box; color: #339933;">=</span>
<span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box; color: #cc66cc;">31</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">28</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">31</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">31</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Enero a Junio }</span>
<span style="box-sizing: border-box; color: #cc66cc;">31</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">31</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">31</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">31</span><span style="box-sizing: border-box; color: #009900;">)</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Julio a Diciembre }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
mes<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Dime un numero de mes: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>mes<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Ese mes tiene '</span><span style="box-sizing: border-box; color: #339933;">,</span> diasMes<span style="box-sizing: border-box; color: #009900;">[</span> mes <span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' dias'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Ejemplo de ejecucion:
Dime un numero de mes: 7
Ese mes tiene 31 dias
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
No sólo se pueden emplear valores numéricos. Por ejemplo, también podemos crear un array de cadenas de texto, si delimitamos los valores entre comillas simples, de la siguiente manera:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* CONSTTIPOARR2.PAS, Constantes con tipo *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* como forma de dar valores iniciales a un array *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Version con cadenas de texto *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">Program</span> ConstTipoArr2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">const</span>
nombreMes <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..12<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span> <span style="box-sizing: border-box; color: #339933;">=</span>
<span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'enero'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'febrero'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'marzo'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'abril'</span><span style="box-sizing: border-box; color: #339933;">,</span>
<span style="box-sizing: border-box;">'mayo'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'junio'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'julio'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'agosto'</span><span style="box-sizing: border-box; color: #339933;">,</span>
<span style="box-sizing: border-box;">'septiembre'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'octubre'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'noviembre'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'diciembre'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
mes<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Dime un numero de mes: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>mes<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Ese mes se llama '</span><span style="box-sizing: border-box; color: #339933;">,</span> nombreMes<span style="box-sizing: border-box; color: #009900;">[</span> mes <span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Ejemplo de ejecucion:
Dime un numero de mes: 4
Ese mes se llama abril
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
(Como siempre, más detalles y ejercicios propuestos en la <a href="http://www.nachocabanes.com/pascal/cupas5/cupas05.php">página oficial</a> del curso).Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-21900321665345182972014-09-17T23:52:00.002+02:002014-09-18T10:31:21.000+02:00Pascal - 4d3: Conjuntos (set)<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.4.3. Conjuntos</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<a href="https://www.blogger.com/null" name="conjuntos" style="box-sizing: border-box; color: #008cba; line-height: inherit;"></a>También podemos crear y manipular <b style="box-sizing: border-box; line-height: inherit;">conjuntos</b> (sets). Un conjunto está formado por una serie de elementos de un tipo base, que debe ser un ordinal de no más de 256 valores posibles, como un "char", un "byte" o un enumerado.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Para construir un "<b style="box-sizing: border-box; line-height: inherit;">set</b>" utilizaremos los corchetes ( [ ] ), y dentro de ellos enumeramos los valores posibles, uno a uno, o bien como rangos de valores separados por ".." :</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
letras<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">set</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">char</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
letras <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box;">'a'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'b'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'c'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'d'</span><span style="box-sizing: border-box; color: #009900;">]</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ... *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Las <b style="box-sizing: border-box; line-height: inherit;">operaciones</b> que podemos realizar con conjuntos son:</div>
<table border="" style="background: white; border: 1px solid rgb(221, 221, 221); box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px; margin-bottom: 1.25rem;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">Operac</td><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">Nombre</td></tr>
<tr style="background: rgb(249, 249, 249); box-sizing: border-box;"><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">+</td><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">Unión</td></tr>
<tr style="box-sizing: border-box;"><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">-</td><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">Diferencia</td></tr>
<tr style="background: rgb(249, 249, 249); box-sizing: border-box;"><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">*</td><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">Intersección</td></tr>
<tr style="box-sizing: border-box;"><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">in</td><td style="box-sizing: border-box; font-size: 0.875rem; line-height: 1.125rem; margin: 0px; padding: 0.5625rem 0.625rem;">Pertenencia</td></tr>
</tbody></table>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Así, un ejemplo que cree un conjunto a partir de dos subconjuntos y que compruebe si un cierto dato pertenece o no al conjunto, podría quedar así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* SET01.PAS, Ejemplo de conjuntos (Sets) *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Set01;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
minusculasValidas<span style="box-sizing: border-box; color: #339933;">,</span>
mayusculasValidas<span style="box-sizing: border-box; color: #339933;">,</span>
letrasValidas<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">set</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">char</span>;
letra<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">char</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
minusculasValidas <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box;">'a'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'b'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'c'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'d'</span><span style="box-sizing: border-box; color: #009900;">]</span>;
mayusculasValidas <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box;">'F'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'H'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'K'</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'M'</span><span style="box-sizing: border-box; color: #009900;">]</span>;
letrasValidas <span style="box-sizing: border-box; color: #339933;">:=</span> minusculasValidas
<span style="box-sizing: border-box; color: #339933;">+</span> mayusculasValidas;
<span style="box-sizing: border-box; color: black; font-weight: bold;">repeat</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Introduce una letra...'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span> letra <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">not</span> <span style="box-sizing: border-box; color: #009900;">(</span>letra <span style="box-sizing: border-box; color: black; font-weight: bold;">in</span> letrasValidas<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'No aceptada!'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">until</span> letra <span style="box-sizing: border-box; color: black; font-weight: bold;">in</span> letrasValidas;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Ejemplo de ejecucion:
Introduce una letra...
e
No aceptada!
Introduce una letra...
t
No aceptada!
Introduce una letra...
n
No aceptada!
Introduce una letra...
m
No aceptada!
Introduce una letra...
M
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-48370323501573120602014-09-16T22:20:00.000+02:002014-09-16T22:20:45.190+02:00Pascal - 4d2: Datos enumerados<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.4.2. Datos enumerados</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos crear nuestros propios tipos de <b style="box-sizing: border-box; line-height: inherit;">datos enumerados</b>, detallando todos los valores que puede tomar una variable, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span> dia<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #009900;">(</span>Lunes<span style="box-sizing: border-box; color: #339933;">,</span> Martes<span style="box-sizing: border-box; color: #339933;">,</span> Miercoles<span style="box-sizing: border-box; color: #339933;">,</span> Jueves<span style="box-sizing: border-box; color: #339933;">,</span> Viernes<span style="box-sizing: border-box; color: #339933;">,</span>
Sabado<span style="box-sizing: border-box; color: #339933;">,</span> Domingo<span style="box-sizing: border-box; color: #009900;">)</span>;
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos asignar uno de esos valores a la variable (sin comillas, porque no son cadenas de texto), comprobar un valor, o incluso avanzar de un valor al siguiente con "succ" (sucesor) y retroceder al que le precede con "prec" (precedente):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ENUMERADO1.PAS, Variables enumeradas *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Enumerado1;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
dia<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #009900;">(</span>Lunes<span style="box-sizing: border-box; color: #339933;">,</span> Martes<span style="box-sizing: border-box; color: #339933;">,</span> Miercoles<span style="box-sizing: border-box; color: #339933;">,</span> Jueves<span style="box-sizing: border-box; color: #339933;">,</span> Viernes<span style="box-sizing: border-box; color: #339933;">,</span>
Sabado<span style="box-sizing: border-box; color: #339933;">,</span> Domingo<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
dia <span style="box-sizing: border-box; color: #339933;">:=</span> Lunes;
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> <span style="box-sizing: border-box; color: #009900;">(</span>dia <span style="box-sizing: border-box; color: #339933;">=</span> Martes<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El dia es Martes'</span><span style="box-sizing: border-box; color: #009900;">)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'No es Martes'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
dia <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #000066;">succ</span><span style="box-sizing: border-box; color: #009900;">(</span> dia <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> <span style="box-sizing: border-box; color: #009900;">(</span>dia <span style="box-sizing: border-box; color: #339933;">=</span> Martes<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Ahora el dia es Martes'</span><span style="box-sizing: border-box; color: #009900;">)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Aun no es Martes'</span><span style="box-sizing: border-box; color: #009900;">)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
No es Martes
Ahora el dia es Martes
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
También se puede saber el "número de orden", con la función "ord". Por ejemplo, "ord(Lunes)" valdría 1, porque es el primer dato de la lista. De igual modo, podríamos recorrer todos los valores posibles usando "for": "for dia := Lunes to Viernes do ..."</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En algunos compiladores, como Free Pascal (pero no Turbo Pascal, ni siquiera en su versión 7), se nos permite mostrar en pantalla el valor de un dato enumerado, y habitualmente lo que ocurrirá es que se mostrará la cadena de texto equivalente, como en este ejemplo:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ENUMERADO2.PAS, Variables enumeradas *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Visualizacion (solo Free Pascal) *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Enumerado2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
dia<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #009900;">(</span>Lunes<span style="box-sizing: border-box; color: #339933;">,</span> Martes<span style="box-sizing: border-box; color: #339933;">,</span> Miercoles<span style="box-sizing: border-box; color: #339933;">,</span> Jueves<span style="box-sizing: border-box; color: #339933;">,</span> Viernes<span style="box-sizing: border-box; color: #339933;">,</span>
Sabado<span style="box-sizing: border-box; color: #339933;">,</span> Domingo<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
dia <span style="box-sizing: border-box; color: #339933;">:=</span> Lunes;
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> <span style="box-sizing: border-box; color: #009900;">(</span>dia <span style="box-sizing: border-box; color: #339933;">=</span> Lunes<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El dia es '</span><span style="box-sizing: border-box; color: #339933;">,</span> dia<span style="box-sizing: border-box; color: #009900;">)</span>;
dia <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #000066;">succ</span><span style="box-sizing: border-box; color: #009900;">(</span> dia <span style="box-sizing: border-box; color: #009900;">)</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Avanzamos un dia }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Ahora el dia es '</span><span style="box-sizing: border-box; color: #339933;">,</span> dia<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El dia es Lunes
Ahora el dia es Martes
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero Free Pascal llega más allá, nos permite incluso introducir valores mediante teclado para una variable enumerada (nuevamente, esta posibilidad no existe en Turbo Pascal):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ENUMERADO3.PAS, Variables enumeradas *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Lectura desde teclado (Free Pascal) *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Enumerado3;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
dia1<span style="box-sizing: border-box; color: #339933;">,</span> dia2<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #009900;">(</span>Lunes<span style="box-sizing: border-box; color: #339933;">,</span> Martes<span style="box-sizing: border-box; color: #339933;">,</span> Miercoles<span style="box-sizing: border-box; color: #339933;">,</span> Jueves<span style="box-sizing: border-box; color: #339933;">,</span> Viernes<span style="box-sizing: border-box; color: #339933;">,</span>
Sabado<span style="box-sizing: border-box; color: #339933;">,</span> Domingo<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
dia1 <span style="box-sizing: border-box; color: #339933;">:=</span> Lunes;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce un dia: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>dia2<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> <span style="box-sizing: border-box; color: #009900;">(</span>dia1 <span style="box-sizing: border-box; color: #339933;">=</span> dia2<span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El dia es '</span><span style="box-sizing: border-box; color: #339933;">,</span> dia1<span style="box-sizing: border-box; color: #009900;">)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Mi dia es '</span><span style="box-sizing: border-box; color: #339933;">,</span> dia1<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Y el tuyo es '</span><span style="box-sizing: border-box; color: #339933;">,</span> dia2<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(*
Ejemplo de ejecucion 1:
Introduce un dia:
lunes
El dia es Lunes
Ejemplo de ejecucion 2:
Introduce un dia:
martes
Mi dia es Lunes
Y el tuyo es Martes
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En compiladores más antiguos, deberemos usar otros tipos de datos (números, caracteres o cadenas de texto) para interactuar con el usuario, y convertirlos posteriormente al tipo enumerado dentro de nuestro programa, empleando "if" o "case".</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-77423801944430279322014-09-15T11:38:00.002+02:002014-09-16T22:20:45.217+02:00Pascal - 4d1: Subrangos<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.4. Otros tipos de datos: conjuntos, enumerados y subrangos</h2>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Vamos a ver algún otro tipo de datos, quizá menos utilizado que los anteriores, pero que ayudan a que nuestros programas sean más elegantes y más legibles.</div>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.4.1. Subrangos</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos indicar los posibles valores que puede tomar una variable, indicándolo en forma de <b style="box-sizing: border-box; line-height: inherit;">subrango</b>, al igual que se hace con los índices de un array:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
dia<span style="box-sizing: border-box; color: #339933;">:</span> 1..31;
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un ejemplo completo podría ser así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* SUBRANGO1.PAS, Variables de tipo "subrango" *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> SubRango1;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
dia<span style="box-sizing: border-box; color: #339933;">:</span> 1..31;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce el dia: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>dia<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Has tecleado '</span><span style="box-sizing: border-box; color: #339933;">,</span> dia<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(*
Ejemplo de ejecucion 1:
Introduce el dia: 12
Has tecleado 12
Ejemplo de ejecucion 2:
Introduce el dia: 45
Has tecleado 45
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Pero hay que tener una precaución: estas construcciones hacen nuestro programa más legible, pero es frecuente que el compilador no haga comprobaciones para asegurarse de que los valores realmente deban estar en ese rango, de modo que se nos permitirá introducir valores mayores o menores, como se ve en ese ejemplo.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Como alternativa, en algunos compiladores podemos forzar que se comprueben errores de valores fuera de rango en tiempo de ejecución, de modo que el programa se interrumpiría con un código de error (que más adelante veremos cómo interceptar) si ese valor introducido no es correcto. En Turbo Pascal y Free Pascal, esto se consigue incluyendo en nuestro programa la directiva {$R+}, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* SUBRANGO2.PAS, Variables de tipo "subrango" *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Version con comprobacion de rangos *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{$R+}</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> SubRango2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
dia<span style="box-sizing: border-box; color: #339933;">:</span> 1..31;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce el dia: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>dia<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Has tecleado '</span><span style="box-sizing: border-box; color: #339933;">,</span> dia<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Ejemplo de ejecucion:
Introduce el dia: 45
Runtime error 201 at $080480FB
$080480FB
$08063733
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-31373689849889691262014-09-14T12:54:00.001+02:002014-09-16T22:20:45.181+02:00Pascal - 4c: Records (registros)<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.3. Registros (records)</h2>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.3.1. ¿Qué es un registro?</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<a href="https://www.blogger.com/null" name="record" style="box-sizing: border-box; color: #008cba; line-height: inherit;"></a>La principal limitación de un array es que todos los datos que contiene deben ser del mismo tipo. Pero a veces nos interesa agrupar datos de distinta naturaleza, como pueden ser el nombre y la edad de una persona, que serían del tipo string y byte, respectivamente. En ese caso, podemos emplear los records o <b style="box-sizing: border-box; line-height: inherit;">registros</b>, que se definen indicando el nombre y el tipo de cada dato individual (cada <b style="box-sizing: border-box; line-height: inherit;">campo</b>), y se accede a estos campos indicando el nombre de la variable y el nombre del campo, separados por un punto:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* RECORD1.PAS, Contacto con los "record" *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Record1;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
dato<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span><span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #009900;">]</span>;
edad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
dato.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Ignacio'</span>;
dato.<span style="box-sizing: border-box; color: #0066ee;">edad</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">23</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El nombre es '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">' y la edad '</span><span style="box-sizing: border-box; color: #339933;">,</span> dato.<span style="box-sizing: border-box; color: #0066ee;">edad</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El nombre es Ignacio y la edad 23
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
La peculiaridad en la definición de un "record" es la aparición de una palabra <b style="box-sizing: border-box; line-height: inherit;">end</b> después de los nombres de los campos, lo que indica que hemos terminado de enumerar éstos.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.3.2. Abreviando con "with"</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Puede parecer engorroso el hecho de escribir "dato." antes de cada campo. También hay una forma de solucionarlo: cuando vamos a realizar varias operaciones sobre los campos de un mismo registro (record), empleamos la orden <b style="box-sizing: border-box; line-height: inherit;">with</b>, con la que el programa anterior quedaría</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* RECORD2.PAS, "record" y "with" *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Record2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
dato<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span><span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #009900;">]</span>;
edad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
with dato <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
nombre <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Ignacio'</span>;
edad <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">23</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El nombre es '</span><span style="box-sizing: border-box; color: #339933;">,</span> nombre <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">' y la edad '</span><span style="box-sizing: border-box; color: #339933;">,</span> edad<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El nombre es Ignacio y la edad 23
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En este caso tenemos un nuevo bloque en el cuerpo del programa, delimitado por el "begin" y el "end" situados más a la derecha, y equivale a decir "en toda esta parte del programa me estoy refiriendo a la variable dato". Así, podemos nombrar los campos que queremos modificar o escribir, sin necesidad de repetir a qué variable pertenecen.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<i style="box-sizing: border-box; line-height: inherit;">Nota</i>: aquí vuelve a aparecer la <b style="box-sizing: border-box; line-height: inherit;">escritura indentada</b>: para conseguir una mayor legibilidad, escribimos un poco más a la derecha todo lo que depende de la orden "with". No es algo obligatorio, pero sí recomendable.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.3.3. Arrays de registros</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Es habitual no usar un único registro, sino un conjunto de ellos, de modo que tendríamos un array de registros. Por ejemplo, podríamos guardar los datos de 5 personas con una estructura como ésta:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARR_REC.PAS, "array" de varios "record" *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> RecordArray;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span> <span style="box-sizing: border-box; color: #009900;">[</span>1..10<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span>
<span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span><span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #009900;">]</span>;
edad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">byte</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Ignacio'</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">edad</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">23</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El primer nombre es '</span><span style="box-sizing: border-box; color: #339933;">,</span> datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">' y la primera edad '</span><span style="box-sizing: border-box; color: #339933;">,</span> datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">edad</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El primer nombre es Ignacio y la primera edad 23
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos usar un array de registros para crear una pequeña agenda, que nos permita guardar datos de personas y ver los datos almacenados, empleando un menú básico:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* AGENDA0.PAS, Ejemplo de "Agenda": *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Permite añadir datos y mostrarlos *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Agenda0;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
gente<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span> <span style="box-sizing: border-box; color: #009900;">[</span>1..1000<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Los datos }</span>
<span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
email<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
anyoNacimiento<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
cantidad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Cantidad de datos existentes }</span>
opcion<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Opción escogida }</span>
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Para bucles "for" }</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{Cuerpo del programa principal}</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> 0;
<span style="box-sizing: border-box; color: black; font-weight: bold;">repeat</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Agenda'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'1- Añadir una nueva persona'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'2- Ver nombres de todos'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'0- Salir'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Escoja una opción: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span>opcion<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">case</span> opcion <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span>
<span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Añadir datos de una persona }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> cantidad < <span style="box-sizing: border-box; color: #cc66cc;">1000</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> cantidad <span style="box-sizing: border-box; color: #339933;">+</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduciendo la persona '</span><span style="box-sizing: border-box; color: #339933;">,</span> cantidad<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduzca el nombre: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span>gente<span style="box-sizing: border-box; color: #009900;">[</span>cantidad<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduzca el correo electrónico: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span>gente<span style="box-sizing: border-box; color: #009900;">[</span>cantidad<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">email</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduzca el año de nacimiento: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span>gente<span style="box-sizing: border-box; color: #009900;">[</span>cantidad<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">anyoNacimiento</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Base de datos llena'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Ver nombres de todos }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> cantidad <span style="box-sizing: border-box; color: #339933;">=</span> 0 <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'No hay datos'</span><span style="box-sizing: border-box; color: #009900;">)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> cantidad <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span>i<span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #339933;">,</span> gente<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
0<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Salir de la aplicación }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Saliendo...'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Opción incorrecta!'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Fin de "case" }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">until</span> opcion <span style="box-sizing: border-box; color: #339933;">=</span> 0;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Este esqueleto es fácil de ampliar. Por ejemplo, podemos añadir la opción de buscar cualquier ficha que contenga un cierto texto, usando "pos" para ver si aparece en cualquier posición y un "boolean" para llevar la cuenta de si hemos encontrado alguna ficha correcta o no:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* AGENDA0B.PAS, Ejemplo de "Agenda" *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Permite añadir datos, mostrarlos y buscar *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Agenda0b;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
gente<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span> <span style="box-sizing: border-box; color: #009900;">[</span>1..1000<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Los datos }</span>
<span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
email<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
anyoNacimiento<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
cantidad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Cantidad de datos existentes }</span>
opcion<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Opción escogida }</span>
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Para bucles "for" }</span>
textoBuscar<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Para búsquedas }</span>
encontrado<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">boolean</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Idem }</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{Cuerpo del programa principal}</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> 0;
<span style="box-sizing: border-box; color: black; font-weight: bold;">repeat</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Agenda'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'1- Añadir una nueva persona'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'2- Ver nombres de todos'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'3- Buscar una persona'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'0- Salir'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Escoja una opción: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span>opcion<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">case</span> opcion <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span>
<span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Añadir datos de una persona }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> cantidad < <span style="box-sizing: border-box; color: #cc66cc;">1000</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> cantidad <span style="box-sizing: border-box; color: #339933;">+</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduciendo la persona '</span><span style="box-sizing: border-box; color: #339933;">,</span> cantidad<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduzca el nombre: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span>gente<span style="box-sizing: border-box; color: #009900;">[</span>cantidad<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduzca el correo electrónico: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span>gente<span style="box-sizing: border-box; color: #009900;">[</span>cantidad<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">email</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduzca el año de nacimiento: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span>gente<span style="box-sizing: border-box; color: #009900;">[</span>cantidad<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">anyoNacimiento</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Base de datos llena'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Ver nombres de todos }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> cantidad <span style="box-sizing: border-box; color: #339933;">=</span> 0 <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'No hay datos'</span><span style="box-sizing: border-box; color: #009900;">)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> cantidad <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span>i<span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #339933;">,</span> gente<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: #cc66cc;">3</span><span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Buscar una persona }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">Write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'¿Qué texto busca? '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">ReadLn</span><span style="box-sizing: border-box; color: #009900;">(</span> textoBuscar <span style="box-sizing: border-box; color: #009900;">)</span>;
encontrado <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">false</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> cantidad <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> pos <span style="box-sizing: border-box; color: #009900;">(</span>textoBuscar<span style="box-sizing: border-box; color: #339933;">,</span> gente<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span><span style="box-sizing: border-box; color: #009900;">)</span> > 0 <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
encontrado <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">true</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span> i<span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box;">' - Nombre: '</span><span style="box-sizing: border-box; color: #339933;">,</span> gente<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">nombre</span><span style="box-sizing: border-box; color: #339933;">,</span>
<span style="box-sizing: border-box;">', Email: '</span><span style="box-sizing: border-box; color: #339933;">,</span> gente<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">email</span><span style="box-sizing: border-box; color: #339933;">,</span>
<span style="box-sizing: border-box;">', Nacido en: '</span><span style="box-sizing: border-box; color: #339933;">,</span> gente<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span>.<span style="box-sizing: border-box; color: #0066ee;">anyoNacimiento</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">not</span> encontrado <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'No se ha encontrado.'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
0<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Salir de la aplicación }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Saliendo...'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Opción incorrecta!'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">WriteLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Fin de "case" }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">until</span> opcion <span style="box-sizing: border-box; color: #339933;">=</span> 0;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.3.4. Registros variantes</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
<a href="https://www.blogger.com/null" name="regVariantes" style="box-sizing: border-box; color: #008cba; line-height: inherit;"></a>Hasta ahora hemos visto los registros (records), utilizando campos fijos, pero no tiene por qué ser necesariamente así. Tenemos a nuestra disposición los <b style="box-sizing: border-box; line-height: inherit;">registros variantes</b>, en los que con un "<b style="box-sizing: border-box; line-height: inherit;">case</b>" podemos elegir unos campos u otros. La mejor forma de entenderlos es con un ejemplo.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* REGVAR.PAS, registros variantes *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> RegistrosVariantes;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
punto<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">case</span> cartesiano<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">boolean</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">true</span> <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #009900;">(</span>X<span style="box-sizing: border-box; color: #339933;">,</span>Y<span style="box-sizing: border-box; color: #339933;">,</span>Z <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">real</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">false</span> <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #009900;">(</span>R<span style="box-sizing: border-box; color: #339933;">,</span>theta<span style="box-sizing: border-box; color: #339933;">,</span>phi <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">real</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
punto.<span style="box-sizing: border-box; color: #0066ee;">cartesiano</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">true</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">x</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">y</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #339933;">-</span><span style="box-sizing: border-box; color: #cc66cc;">1</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">z</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">2.3</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Con coordenadas cartesianas, x vale '</span><span style="box-sizing: border-box; color: #339933;">,</span>punto.<span style="box-sizing: border-box; color: #0066ee;">x</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">)</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">cartesiano</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">false</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">r</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">12.3</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">theta</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #339933;">-</span><span style="box-sizing: border-box; color: #cc66cc;">15</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">phi</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">45</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Con coordenadas esfericas, phi vale '</span><span style="box-sizing: border-box; color: #339933;">,</span>punto.<span style="box-sizing: border-box; color: #0066ee;">phi</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
Con coordenadas cartesianas, x vale 5.0
Con coordenadas esfericas, phi vale 45.0
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Realmente, no es necesario usar un campo para cambiar entre un juego de valores y otro, porque realmente se trata de varios conjuntos de capas que "se solapan", ocupando el mismo espacio en memoria:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* REGVAR2.PAS, registros variantes (2) *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> RegistrosVariantes2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
punto<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">record</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">case</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">boolean</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">true</span> <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #009900;">(</span>X<span style="box-sizing: border-box; color: #339933;">,</span>Y<span style="box-sizing: border-box; color: #339933;">,</span>Z <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">real</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">false</span> <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #009900;">(</span>R<span style="box-sizing: border-box; color: #339933;">,</span>theta<span style="box-sizing: border-box; color: #339933;">,</span>phi <span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">real</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
punto.<span style="box-sizing: border-box; color: #0066ee;">x</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">y</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #339933;">-</span><span style="box-sizing: border-box; color: #cc66cc;">1</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">z</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">2.3</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Con coordenadas cartesianas, x vale '</span><span style="box-sizing: border-box; color: #339933;">,</span>punto.<span style="box-sizing: border-box; color: #0066ee;">x</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">)</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">r</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">12.3</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">theta</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #339933;">-</span><span style="box-sizing: border-box; color: #cc66cc;">15</span>;
punto.<span style="box-sizing: border-box; color: #0066ee;">phi</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">45</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Con coordenadas esfe ricas, phi vale '</span><span style="box-sizing: border-box; color: #339933;">,</span>punto.<span style="box-sizing: border-box; color: #0066ee;">phi</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Como curiosidad, x vale '</span><span style="box-sizing: border-box; color: #339933;">,</span>punto.<span style="box-sizing: border-box; color: #0066ee;">x</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #339933;">:</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
Con coordenadas cartesianas, x vale 5.0
Con coordenadas esfericas, phi vale 45.0
Como curiosidad, x vale 12.3
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
El riesgo, como se ve en este último ejemplo, es que al modificar un juego de valores, el otro se altera a la vez, ya que están solapados en memoria, pero los datos posiblemente no tendrán sentido si accedemos a ellos usando campos distintos de los que habíamos empleado para guardar la información.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div>
(<a href="http://www.nachocabanes.com/pascal/cupas5/cupas04c.php">Versión oficial del curso</a>)</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-60805620604588405732014-09-13T11:33:00.000+02:002014-09-16T22:20:45.208+02:00Pascal - 4b: Cadenas de texto<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.2. Cadenas de texto (strings)</h2>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.2.1. ¿Qué es una cadena de texto?</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un <b style="box-sizing: border-box; line-height: inherit;">string</b> es una secuencia de caracteres. Se usan para almacenar texto. En algunas versiones de Pascal existe un límite de 255 letras, y, en ese caso, cada string ocupa 256 bytes. En otras versiones esa limitación es mucho más suave, con tamaños por encima de 32.000 letras, como es el caso de GNU Pascal. En Pascal estándar, el formato era string[n] (o string(n) en algunos compiladores), donde n es la anchura máxima que queremos almacenar en esa cadena de caracteres (de 0 a 255), y en ese caso ocupará n+1 bytes en memoria.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Vamos a ver un primer ejemplo que pida al usuario su nombre y le salude:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* SALUDO.PAS, Pedir nombre al usuario y saludarle *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> Saludo;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
nombre<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span><span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">30</span><span style="box-sizing: border-box; color: #009900;">]</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Introduce tu nombre, por favor'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>nombre<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Hola '</span><span style="box-sizing: border-box; color: #339933;">,</span>nombre<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Ejemplo de ejecucion:
Introduce tu nombre, por favor
Nacho
Hola Nacho
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<span style="background-color: white; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 16px;">Podemos dar un valor a una cadena, o comparar el valor de una cadena con un texto prefijado, si indicamos el texto entre comillas simples, así:</span><br />
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* STRING1.PAS, Dar valor prefijado a un string *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> String1;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
saludo<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
saludo <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Hola, soy un texto'</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> saludo <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
Hola, soy un texto
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.2.2. Acceder a las letras de una cadena</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos acceder a las letras que forman una cadena usando corchetes, como si se tratara de un array de caracteres, en el que el primer elemento está en la posición 1 y la cantidad de letras se sabe con "length":</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* STRING2.PAS, Acceder a las letras de un string *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> String2;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
saludo<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
saludo <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Hola, soy un texto'</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'El texto tiene '</span><span style="box-sizing: border-box; color: #339933;">,</span> length<span style="box-sizing: border-box; color: #009900;">(</span>saludo<span style="box-sizing: border-box; color: #009900;">)</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' letras'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'La primera es '</span><span style="box-sizing: border-box; color: #339933;">,</span> saludo<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El texto tiene 18 letras
La primera es H
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.2.3. Operaciones habituales con cadenas</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos crear una cadena a partir de varias (<b style="box-sizing: border-box; line-height: inherit;">concatenar</b>), usando el símbolo de la suma o la orden <b style="box-sizing: border-box; line-height: inherit;">concat</b>, que a la que indicaremos varias subcadenas entre paréntesis:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* STRING3.PAS, Concatenar cadenas *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> String3;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
palabra1<span style="box-sizing: border-box; color: #339933;">,</span> palabra2<span style="box-sizing: border-box; color: #339933;">,</span> espacio<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
resultado1<span style="box-sizing: border-box; color: #339933;">,</span> resultado2<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
palabra1 <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Hola'</span>;
espacio <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">' '</span>;
palabra2 <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Pascal'</span>;
resultado1 <span style="box-sizing: border-box; color: #339933;">:=</span> palabra1 <span style="box-sizing: border-box; color: #339933;">+</span> espacio <span style="box-sizing: border-box; color: #339933;">+</span> palabra2 <span style="box-sizing: border-box; color: #339933;">+</span> <span style="box-sizing: border-box;">'!'</span>;
resultado2 <span style="box-sizing: border-box; color: #339933;">:=</span> concat<span style="box-sizing: border-box; color: #009900;">(</span>palabra1<span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'-'</span><span style="box-sizing: border-box; color: #339933;">,</span> palabra2<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> resultado1 <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> resultado2 <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
Hola Pascal!
Hola-Pascal
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Si necesitamos partir de una cadena <b style="box-sizing: border-box; line-height: inherit;">vacía</b> (por ejemplo, para irle añadiendo letras) o bien queremos vaciar una cadena ya existente, lo podemos hacer usando dos comillas simples que no contengan nada entre medias (ni siquiera un espacio):</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* STRING4.PAS, Vaciar una cadena *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> String4;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
texto<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
texto <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">''</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'El texto es '</span><span style="box-sizing: border-box; color: #339933;">,</span> texto <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">10</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
texto <span style="box-sizing: border-box; color: #339933;">:=</span> texto <span style="box-sizing: border-box; color: #339933;">+</span> <span style="box-sizing: border-box;">'-'</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Ahora el texto es '</span><span style="box-sizing: border-box; color: #339933;">,</span> texto <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El texto es
Ahora el texto es ----------
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos <b style="box-sizing: border-box; line-height: inherit;">extraer una subcadena</b> (un fragmento del texto original) con la orden <b style="box-sizing: border-box; line-height: inherit;">copy</b>, que debe recibir tres parámetros: la cadena, la posición de comienzo y la cantidad de caracteres a extraer:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* STRING5.PAS, Extraer una subcadena *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> String5;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
texto<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
texto <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Hola, esto es un ejemplo'</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'La primera palabra es '</span><span style="box-sizing: border-box; color: #339933;">,</span> copy<span style="box-sizing: border-box; color: #009900;">(</span>texto<span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">4</span><span style="box-sizing: border-box; color: #009900;">)</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Otro fragmento es "'</span><span style="box-sizing: border-box; color: #339933;">,</span> copy<span style="box-sizing: border-box; color: #009900;">(</span>texto<span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">9</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">5</span><span style="box-sizing: border-box; color: #009900;">)</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">'"'</span> <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
La primera palabra es Hola
Otro fragmento es "to es"
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
También es posible <b style="box-sizing: border-box; line-height: inherit;">ver si contiene una subcadena</b>, usando <b style="box-sizing: border-box; line-height: inherit;">pos</b>, que recibe como datos la subcadena a buscar y la cadena que la contiene, y devolverá 0 si no aparece, o un número mayor que cero (la posición) en caso de que sí esté contenida:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* STRING6.PAS, Posicion de una subcadena *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> String6;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
texto<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
texto <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Hola, esto es un ejemplo'</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'La palabra "esto" aparece en la posicion '</span><span style="box-sizing: border-box; color: #339933;">,</span>
pos<span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'esto'</span><span style="box-sizing: border-box; color: #339933;">,</span> texto<span style="box-sizing: border-box; color: #009900;">)</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
La palabra "esto" aparece en la posicion 7
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Finalmente, también tenemos la posibilidad de <b style="box-sizing: border-box; line-height: inherit;">insertar una subcadena</b>, usando <b style="box-sizing: border-box; line-height: inherit;">insert</b>, o de <b style="box-sizing: border-box; line-height: inherit;">borrar una subcadena</b>, con <b style="box-sizing: border-box; line-height: inherit;">delete</b>. A "insert" se le indican 3 datos: el texto a insertar, la cadena dentro de la que queremos incluirlo, y la posición en la que debe aparecer; a "delete" se le detalla la cadena, la posición en la que empezar a borrar y la cantidad de letras a eliminar:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* STRING7.PAS, Insertar y borrar en una cadena *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> String7;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
texto<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
texto <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Hola, esto es un ejemplo'</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'El texto original es '</span><span style="box-sizing: border-box; color: #339933;">,</span> texto <span style="box-sizing: border-box; color: #009900;">)</span>;
insert<span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">' amigo,'</span><span style="box-sizing: border-box; color: #339933;">,</span> texto<span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box; color: #cc66cc;">6</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Tras insertar queda '</span><span style="box-sizing: border-box; color: #339933;">,</span> texto <span style="box-sizing: border-box; color: #009900;">)</span>;
delete<span style="box-sizing: border-box; color: #009900;">(</span> texto<span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box; color: #cc66cc;">14</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> <span style="box-sizing: border-box;">'Y tras borrar queda '</span><span style="box-sizing: border-box; color: #339933;">,</span> texto <span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El texto original es Hola, esto es un ejemplo
Tras insertar queda Hola, amigo, esto es un ejemplo
Y tras borrar queda Hola, amigo, es un ejemplo
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Además, algunas versiones de Pascal permiten convertir un texto a minúsculas o a mayúsculas de forma simple. Por ejemplo, con FreePascal se puede usar upperCase(x) para convertir un string a mayúsculas y lowerCase(x) para convertir a minúsculas.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.2.4. Arrays de cadenas</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Podemos crear un array formado por varias cadenas de texto, igual que los creábamos a partir de datos numéricos. El manejo será idéntico. La única peculiaridad que merece la pena comentar es que si queremos acceder a una letra concreta de una de esas cadenas deberemos usar dos pares de corchetes: la primera pareja indicará la posición en que está la frase dentro del array, y la segunda pareja de corchetes detallará qué letra dentro de esa cadena:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAYST.PAS, Contacto con array de strings *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">Program</span> ArraySt;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..4<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">string</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Hola'</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'Adios'</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">3</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'1234'</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">4</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box;">'(.,)'</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'La tercera letra de la segunda cadena es '</span><span style="box-sizing: border-box; color: #339933;">,</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">3</span><span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
La tercera letra de la segunda cadena es i
*)</span>
</pre>
(Ya sabes... más detalles y ejercicios propuestos, en la <a href="http://www.nachocabanes.com/pascal/cupas5/cupas04b.php">página oficial del curso</a>)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-29693408.post-2239932938959239442014-09-12T12:48:00.000+02:002014-09-16T22:20:45.171+02:00Pascal - 4a: Arrays<h2 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 2.3125rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.1. Arrays</h2>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.1.1. Arrays de una dimensión</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un <b style="box-sizing: border-box; line-height: inherit;">array</b> (que algunos autores traducen como "<b style="box-sizing: border-box; line-height: inherit;">arreglo</b>") es una estructura que se utiliza para guardar una serie de elementos, todos los cuales son del mismo tipo (por ejemplo, 20 números reales).</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
A la hora de definir un array, deberemos indicar el índice inferior y superior (desde dónde y hasta dónde queremos contar), separados por dos puntos (..), así como el tipo de datos de esos elementos individuales. Por ejemplo, para guardar hasta 200 números enteros, usaríamos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">lista<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span> <span style="box-sizing: border-box; color: #009900;">[</span>1..200<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Se suele emplear para definir <b style="box-sizing: border-box; line-height: inherit;">vectores o matrices</b>. Para mostrar en pantalla el segundo elemento de esa lista de números (o de ese vector) se usaría</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span> lista<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #009900;">)</span>;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un ejemplo completo, que guarde varios datos en un array y luego muestre uno de ellos podría ser:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAY00.PAS, Contacto con arrays *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Datos en posiciones prefijadas *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">Program</span> Array00;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..4<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">20</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">12</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">3</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">7</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">4</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">35</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El segundo dato es '</span><span style="box-sizing: border-box; color: #339933;">,</span>dato<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Es habitual recorrer todo un array usando un bucle "for", de modo que podamos pedir y mostrar los datos de forma repetitiva. Por ejemplo, podríamos pedir al usuario 5 números y luego mostrarlos en orden inverso, así:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAY01.PAS, Ejemplo de uso de arrays (01): *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Pedir datos y mostrarlos al revés *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">Program</span> Array01;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..5<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Deme el dato '</span><span style="box-sizing: border-box; color: #339933;">,</span>i<span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box;">': '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Los datos al reves son: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">downto</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.1.2. Buscar en un array</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Buscar en un array "tiene truco": si el elemento que estamos mirando contiene el dato que buscábamos, sabremos con seguridad que el dato existía, pero, por el contrario, no podremos afirmar que un dato no existe hasta que no hayamos comprobado todos los elementos. Por eso, lo habitual es usar un "boolean" para memorizar si lo hemos encontrado o no:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAYB.PAS, Buscar en un array *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> ArrayB;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..5<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
encontrado<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">boolean</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Deme el dato '</span><span style="box-sizing: border-box; color: #339933;">,</span>i<span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box;">': '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
encontrado <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">false</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Buscando un 10... '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">5</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">10</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span> encontrado <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">true</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> encontrado <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Encontrado!'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'No encontrado.'</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.1.3. Máximo y mínimo de un array</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
No es difícil encontrar el valor máximo o el mínimo de un array. Debemos empezar con un máximo (o mínimo) provisional, que puede ser el primer valor del array. A partir de ese punto, vamos comparando uno a uno con todos los demás datos. Si el dato actual es mayor que el máximo (o menor que el mínimo), pasará a ser nuestro nuevo máximo (o mínimo), que deberemos memorizar.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAYMAX.PAS, Maximo valor en un array *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> ArrayMax;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..6<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
maximo<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">20</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">12</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">3</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">7</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">4</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">35</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">5</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">48</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">6</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">14</span>;
maximo <span style="box-sizing: border-box; color: #339933;">:=</span> datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">6</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span> > maximo <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
maximo <span style="box-sizing: border-box; color: #339933;">:=</span> datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El maximo es: '</span><span style="box-sizing: border-box; color: #339933;">,</span> maximo<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
El maximo es: 48
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.1.4. Arrays de dos o más dimensiones</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Cuando se trata de una matriz de 2, 3 o más dimensiones, podemos indicar los rangos de valores aceptables, separados por comas. Por ejemplo, una matriz de bidimensional de tamaño 3x2 que debiera contener números reales sería:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;">matriz1<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span> <span style="box-sizing: border-box; color: #009900;">[</span>1..3<span style="box-sizing: border-box; color: #339933;">,</span> 1..2<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">real</span></pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
y para ver el elemento (3,1) de la matriz haríamos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span> matriz1<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">3</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #009900;">)</span>;</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Un ejemplo más completo, que pidiera 2x3 datos y mostrar uno de ellos sería:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAYBI.PAS, Array bidimensional *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> ArrayBi;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..2<span style="box-sizing: border-box; color: #339933;">,</span> 1..3<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
fila<span style="box-sizing: border-box; color: #339933;">,</span>columna<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> fila <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> columna <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">3</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Deme el dato de la fila '</span><span style="box-sizing: border-box; color: #339933;">,</span>fila<span style="box-sizing: border-box; color: #339933;">,</span>
<span style="box-sizing: border-box;">' y columna '</span><span style="box-sizing: border-box; color: #339933;">,</span> columna<span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">': '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>fila<span style="box-sizing: border-box; color: #339933;">,</span> columna<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'El dato de la fila 1 y columna 2 es '</span><span style="box-sizing: border-box; color: #339933;">,</span> datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Ejemplo de ejecucion:
Deme el dato de la fila 1 y columna 1: 1
Deme el dato de la fila 1 y columna 2: 20
Deme el dato de la fila 1 y columna 3: 3
Deme el dato de la fila 2 y columna 1: 54
Deme el dato de la fila 2 y columna 2: 15
Deme el dato de la fila 2 y columna 3: 9
El dato de la fila 1 y columna 2 es 20
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.1.5. Sobredimensionar un array</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Cuando no sabemos cuántos datos vamos a tener que guardar, una primera solución es sobredimensionar: crear un array más grande de lo que esperemos necesitar y llevar un contador de cuántos datos ya hemos almacenado:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAYSD.PAS, Array sobredimensionado *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">program</span> ArraySD;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..20<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Los datos en si }</span>
cantidad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Cantidad de datos guardados }</span>
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>; <span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Para bucles }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Pedimos 200 datos o hasta introducir el valor 999 }</span>
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> 0;
<span style="box-sizing: border-box; color: black; font-weight: bold;">repeat</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> cantidad ><span style="box-sizing: border-box; color: #339933;">=</span> <span style="box-sizing: border-box; color: #cc66cc;">200</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'No caben mas datos!'</span><span style="box-sizing: border-box; color: #009900;">)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">else</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> cantidad<span style="box-sizing: border-box; color: #339933;">+</span><span style="box-sizing: border-box; color: #cc66cc;">1</span>;
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Deme el dato '</span><span style="box-sizing: border-box; color: #339933;">,</span>cantidad<span style="box-sizing: border-box; color: #339933;">,</span><span style="box-sizing: border-box;">' (999 para salir): '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">readLn</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>cantidad<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">until</span> datos<span style="box-sizing: border-box; color: #009900;">[</span>cantidad<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">=</span><span style="box-sizing: border-box; color: #cc66cc;">999</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ El ultimo dato no hay que guardarlo }</span>
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> cantidad<span style="box-sizing: border-box; color: #339933;">-</span><span style="box-sizing: border-box; color: #cc66cc;">1</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Al final, muestro todos }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Cantidad de datos: '</span><span style="box-sizing: border-box; color: #339933;">,</span> cantidad<span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Los datos al reves son: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> cantidad <span style="box-sizing: border-box; color: black; font-weight: bold;">downto</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Ejemplo de ejecucion:
Deme el dato 1 (999 para salir): 23
Deme el dato 2 (999 para salir): 45
Deme el dato 3 (999 para salir): 7
Deme el dato 4 (999 para salir): 16
Deme el dato 5 (999 para salir): 999
Cantidad de datos: 4
Los datos al reves son: 16 7 45 23
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.1.6. Borrar e insertar en un array</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
En un array sobredimensionado, nos puede interesar borrar o insertar datos. Para borrar, deberemos desplazar hacia "la izquierda" (hacia el principio del array) los datos que hay desde esa posición, y luego disminuir el contador de datos:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAYBor.PAS, Borrar en un array sobredimensionado *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">Program</span> ArrayBor;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..10<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
cantidad<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
i<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
posicionBorrar<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">20</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">12</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">3</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">7</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">4</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">35</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">5</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">8</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">6</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">49</span>;
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">6</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Primero mostramos los datos }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Los datos iniciales son: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> cantidad <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Ahora borramos el tercero }</span>
posicionBorrar <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">3</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> posicionBorrar <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> cantidad<span style="box-sizing: border-box; color: #339933;">-</span><span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #339933;">+</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>;
cantidad <span style="box-sizing: border-box; color: #339933;">:=</span> cantidad<span style="box-sizing: border-box; color: #339933;">-</span><span style="box-sizing: border-box; color: #cc66cc;">1</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Y mostramos el resultado }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Los datos tras borrar el tercero son: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> cantidad <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
Los datos iniciales son:
20 12 7 35 8 49
Los datos tras borrar el tercero son:
20 12 35 8 49
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
De forma similar, podríamos insertar un dato en una cierta posición, si primero desplazamos hacia "la derecha" (hacia el final del array) los datos que hay a partir de esa posición e incrementamos el contador que almacena la cantidad de datos.</div>
<blockquote style="background-color: white; border-left-color: rgb(221, 221, 221); border-left-style: solid; border-left-width: 1px; box-sizing: border-box; color: #6f6f6f; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin: 0px 0px 1.25rem; padding: 0.5625rem 1.25rem 0px 1.1875rem;">
<br /></blockquote>
<h3 style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 1.6875rem; font-weight: normal; line-height: 1.4; margin: 0.2rem 0px 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
4.1.7. Ordenar los datos de un array</h3>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
¿Y si necesitamos ordenar los datos de menor a mayor, o de mayor a menor, o (pronto) alfabéticamente? Hay muchas formas de hacerlo. Algunas son eficientes pero difíciles de entender, otras son sencillas pero lentas, otras son intermedias entre ambas.</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
Uno de los algoritmos de ordenación más simples y conocidos es el de "burbuja", en el que se va comparando cada dato con todos los anteriores, de modo que el más pequeño (el más "ligero", como si se tratara de una burbuja) vaya desplazándose hacia el final del array (como si "subiera hacia la superficie"). Tras cada pasada, el número más pequeño quedará colocado en su sitio:</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
<pre class="pascal pascal" style="background: rgb(242, 242, 242); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 1px solid rgb(224, 224, 224); box-sizing: border-box; color: #222222; font-size: 1.1em; line-height: 1.5em; padding: 15px; word-wrap: break-word;"><span style="box-sizing: border-box; color: #666666; font-style: italic;">(* ARRAYORD.PAS, Ordenar un array (burbuja) *)</span>
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Parte de CUPAS5, por Nacho Cabanes *)</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">Program</span> ArrayOrd;
<span style="box-sizing: border-box; color: black; font-weight: bold;">var</span>
datos<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">array</span><span style="box-sizing: border-box; color: #009900;">[</span>1..6<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">of</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
i<span style="box-sizing: border-box; color: #339933;">,</span>j<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
temporal<span style="box-sizing: border-box; color: #339933;">:</span> <span style="box-sizing: border-box; color: #000066; font-weight: bold;">integer</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">20</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">2</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">12</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">3</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">7</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">4</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">35</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">5</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">49</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span><span style="box-sizing: border-box; color: #cc66cc;">6</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">8</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Primero mostramos los datos }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Los datos iniciales son: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">6</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Ahora ordenamos mediante burbuja }</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">6</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">downto</span> <span style="box-sizing: border-box; color: #cc66cc;">2</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> j <span style="box-sizing: border-box; color: #339933;">:=</span> 0 <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> i <span style="box-sizing: border-box; color: #339933;">-</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">if</span> datos<span style="box-sizing: border-box; color: #009900;">[</span>j<span style="box-sizing: border-box; color: #009900;">]</span> > datos<span style="box-sizing: border-box; color: #009900;">[</span>j <span style="box-sizing: border-box; color: #339933;">+</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">then</span>
<span style="box-sizing: border-box; color: black; font-weight: bold;">begin</span>
temporal <span style="box-sizing: border-box; color: #339933;">:=</span> datos<span style="box-sizing: border-box; color: #009900;">[</span>j<span style="box-sizing: border-box; color: #009900;">]</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span>j<span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> datos<span style="box-sizing: border-box; color: #009900;">[</span>j <span style="box-sizing: border-box; color: #339933;">+</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span>;
datos<span style="box-sizing: border-box; color: #009900;">[</span>j <span style="box-sizing: border-box; color: #339933;">+</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span><span style="box-sizing: border-box; color: #009900;">]</span> <span style="box-sizing: border-box; color: #339933;">:=</span> temporal;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>;
<span style="box-sizing: border-box; color: #666666; font-style: italic;">{ Y mostramos el resultado }</span>
<span style="box-sizing: border-box; color: #000066;">writeLn</span><span style="box-sizing: border-box; color: #009900;">(</span><span style="box-sizing: border-box;">'Los datos tras ordenar son: '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">for</span> i <span style="box-sizing: border-box; color: #339933;">:=</span> <span style="box-sizing: border-box; color: #cc66cc;">1</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">to</span> <span style="box-sizing: border-box; color: #cc66cc;">6</span> <span style="box-sizing: border-box; color: black; font-weight: bold;">do</span>
<span style="box-sizing: border-box; color: #000066;">write</span><span style="box-sizing: border-box; color: #009900;">(</span>datos<span style="box-sizing: border-box; color: #009900;">[</span>i<span style="box-sizing: border-box; color: #009900;">]</span><span style="box-sizing: border-box; color: #339933;">,</span> <span style="box-sizing: border-box;">' '</span><span style="box-sizing: border-box; color: #009900;">)</span>;
<span style="box-sizing: border-box; color: #000066;">writeLn</span>;
<span style="box-sizing: border-box; color: black; font-weight: bold;">end</span>.
<span style="box-sizing: border-box; color: #666666; font-style: italic;">(* Resultado:
Los datos iniciales son:
20 12 7 35 49 8
Los datos tras ordenar son:
7 8 12 20 35 49
*)</span>
</pre>
<div style="background-color: white; box-sizing: border-box; color: #222222; font-family: 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.6; margin-bottom: 0.5rem; margin-top: 0.5rem; padding: 0px; text-rendering: optimizelegibility;">
</div>
Como siempre, más detalles y ejercicios en la <a href="http://www.nachocabanes.com/pascal/cupas5/cupas04.php">página oficial del curso</a>.Unknownnoreply@blogger.com0