jueves, 29 de mayo de 2014

El juego de las siete y media. Parte III.


MODIFICACIÓN: Mostrar el podio con los tres ganadores de la partida.

Vamos a ver primero un ejemplo de código de cómo hacerlo y luego las cosas interesantes que hemos añadido:


Este es el resultado de una partida cualquiera:


Se puede ver cómo se han cogido los tres jugadores con puntuaciones más altas y se han colocado en el podio.

Ahora vamos a ver detalladamente el código. Lo más llamativo es algo que no había comentado antes, en realidad, son dos cosas en una: el uso de la memoria estática y los arrays de varias dimensiones. Suena muy técnico, pero no es tan complicado.

La memoria estática se da cuando el valor de un array es siempre fijo, se puede construir desde el primer momento, no es necesario hacerlo más tarde con la palabra new. Un array normal en memoria estática se declararía así:    
     
                                                  double podio[3];

Así se montaría una "estantería" de tres pisos desde el primer momento y con tamaño fijo (la ventaja de la memoria dinámica es que se puede modificar el tamaño).

Los arrays (matrices o como le hemos llamado aquí "estanterías") pueden ser de varias dimensiones, ¿y qué significa esto? Pues imaginemos nuestra estantería, en un array simple de, supongamos 4 estantes, tenemos un sólo mueble de 4 estantes. Ahora imaginemos que en vez de un mueble, montamos 2, tendríamos dos estanterías de 4 estantes cada una. Y así indefinidamente.

Si vemos el código, vemos que tenemos
          
                                                  double podio[3][2]

si seguimos con la metáfora de las estanterías, esto se correspondería a 3 estanterías, con dos estantes cada una. Concretamente, tenemos las tres posiciones del podio, cada una con dos espacios para guardar números, en el primer espacio almacenamos el resultado de la jugada y en el segundo el número que identifica al jugador.

Cuando el programa encuentra un valor que es mejor que el primer valor (el oro), modifica todo el podio bajando una posición al primero y al segundo y coloca en primer lugar el nuevo valor. Si el nuevo valor es sólo mejor que el segundo (pero no el primero), se baja una posición el segundo clasificado (pasando a tercer lugar) y se coloca en segundo lugar el nuevo valor. Si es sólo mejor que el tercero, directamente se intercambia el valor del tercer clasificado con el nuevo valor.

Todo termina mostrando el mensaje con el podio.

Para la próxima modificación, una un poco más sencilla, vamos a mostrar el valor de cada carta.

No hay comentarios:

Publicar un comentario