90 lines
1.6 KiB
Plaintext
90 lines
1.6 KiB
Plaintext
class Grid {
|
|
field Array grid;
|
|
|
|
/** Constructs a new Tile
|
|
*/
|
|
constructor Grid new() {
|
|
var int i;
|
|
let grid = Array.new(220);
|
|
do Screen.setPenColor(Screen.DARKGREY());
|
|
do Screen.drawRectangle(2,4,3,283);
|
|
do Screen.drawRectangle(2,284,147,285);
|
|
do Screen.drawRectangle(146,4,147,285);
|
|
let i=0;
|
|
while (i<220){
|
|
let grid[i]=-1;
|
|
let i=i+1;
|
|
}
|
|
return this;
|
|
}
|
|
|
|
/** Deallocates the Tile's memory. */
|
|
method void dispose() {
|
|
do grid.dispose();
|
|
do Memory.deAlloc(this);
|
|
return;
|
|
}
|
|
|
|
method void draw(int x, int y, int color){
|
|
do Screen.setPenColor(color);
|
|
do Screen.drawRectangle((x*14)+6,(y*14)-24,(x*14)+18,(y*14)-12);
|
|
if ((x<10)&(x>-1)&(y>-1)&(y<22)) {let grid[(y*10)+x] = color;}
|
|
return;
|
|
}
|
|
|
|
method boolean hasTile(int x, int y){
|
|
if ((x>9)|(x<0)|(y>21)|(y<0)){
|
|
return true;
|
|
}
|
|
if (grid[(y*10)+x]=-1){
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
method boolean isClear(int x, int y){
|
|
return (grid[(y*10)+x]=Screen.DARKGREY());
|
|
}
|
|
|
|
method int clearRow(){
|
|
var int x,y,z;
|
|
var int r;
|
|
var boolean isClear;
|
|
let y=0;
|
|
let r=0;
|
|
while (y<22){
|
|
let isClear = true;
|
|
let x=0;
|
|
while (x<10){
|
|
if (~hasTile(x,y)) { let isClear = false;}
|
|
let x=x+1;
|
|
}
|
|
if (isClear){
|
|
let r=r+1;
|
|
let x=0;
|
|
while (x<10){
|
|
do draw(x,y,Screen.DARKGREY());
|
|
let x=x+1;
|
|
}
|
|
}
|
|
let y = y+1;
|
|
}
|
|
let y=1;
|
|
while (y<22){
|
|
let x=0;
|
|
while (x<10){
|
|
if (isClear(x,y)) {
|
|
let z=y;
|
|
while (z>0){
|
|
do draw(x,z,grid[(z*10)-10+x]);
|
|
let z=z-1;
|
|
}
|
|
}
|
|
let x=x+1;
|
|
}
|
|
let y = y+1;
|
|
}
|
|
|
|
return r;
|
|
}
|
|
}
|