L'objectiu d'aquest CodeLab és conèixer la utilitat de les matrius en la disposició de elements en forma tabular. Una matriu bidimensional es pot traslladar fàcilment en una disposició de taula. Cada element de la matriu bidimensional, és al seu temps un array d'elements. És com considerar que cada element de la matriu és una fila, i cada element de l'array és una cel·la d'aquesta fila.

En aquest CodeLab utilitzarem la plataforma de desenvolupament Greenfoot per a programar una versió bàsica del joc Minesweeper.

Descarrega Greenfoot de la seva web oficial:

Download Greenfoot

Segueix les passes de l'assistent d'instalació i obre l'aplicació.

Crea un nou Scenario anomenat "Minesweeper":

Per al desenvolupament del joc necessitaràs aquestes imatges. Descarrega-les a la carpeta images del projecte i posa a cadascuna el nom que s'indica:

0.png

1.png

2.png

3.png

4.png

5.png

6.png

7.png

8.png

hide.png

mine.png

Quan s'obre el projecte es mostra aquesta finestra:

A l'esquerra trobem la finestra de previsualització del joc, a la dreta les classes dels objectes del joc.

Les classes que deriven de World són les diferents pantalles del joc. En el nostre joc, la classe MyWorld representarà el tauler de mines.

Les classes que deriven de Actor són els elements del joc. En el nostre joc, els elements són les caselles del tauler.

Anem a crear, doncs, la classe Casella. Fes clic-dreta sobre la classe Actor i selecciona "New subclass..."

Posa-li Casella com a nom de la classe:

Definirem els següents camps de la classe Casella:

Camp

Descripció

boolean hasMine = false;

Aquest camp determina si la casella té o no una mina. En principi el posem a false, però més endavant asignarem aleatòriament algunes caselles a true.

int mineCount = 0;

Aquest camp diu quantes caselles al voltant d'aquesta tenen un mina.

String image = "hide.png";

La imatge en que s'ha de mostrar la casella. Inicialment totes estan amagadaes (). Quan es faci clic sobre una casella revelarem el que hi ha a sota ()

Fes doble-clic sobre la classe Casella i afegeix els camps:

Ara programarem la classe MyWorld.

Crearem una matriu d'objectes de classe Casella que representarà les cel·les del camp de mines.

Definirem tres camps: rows (nombre de files), cols (nombre de columnes) i difficulty (la quantitat de mines).

Farem dos recorreguts a la matriu.

Si executes el joc veuràs el camp de mines:

Acabarem aquesta versió del joc fent que quan es faci clic en una casella, reveli el que hi ha a sota:

Les accions que volem que faci un Actor les hem de posar al mètode act()

Aquesta és l'estructura de la matriu que representa el tauler. A partir de la classe Casella s'han creat diversos objectes que s'han assignat a cadascuna de les posicions del tauler.

I aixi queda finalment el joc: