sq[3] = new square(x+1,y+1,3);
break;
case 5:
sq[0] = new square(x,y,6);
sq[1] = new square(x+1,y,6);
sq[2] = new square(x+1,y+1,6);
sq[3] = new square(x+1,y+2,6);
break;
case 6:
sq[0] = new square(x+1,y,4);
sq[1] = new square(x,y,4);
sq[2] = new square(x,y+1,4);
sq[3] = new square(x,y+2,4);
break;
}
return sq;
}
function redraw(name,sq){
var obj;
for(var i=0; i<sq.length; i++){
obj = document.all(name + sq[i].rows + "#" + sq[i].cols);
obj.style.background = color[sq[i].color];
}
}
function cleardraw(name,sq){
var obj;
for(var i=0; i<sq.length; i++){
obj = document.all(name + sq[i].rows + "#" + sq[i].cols);
obj.style.background = color[0];
}
}
function isbounds(sq){
for(var i=0; i<sq.length; i++){
if(sq[i].cols<0 || sq[i].cols>9 || sq[i].rows<0 || sq[i].rows>19)
return false;
}
return true;
}
function sortsquare(sq,name,ismax){
if(ismax){
var max = 0;
if(name=="rows"){
for(var i=0; i<sq.length; i++){
if(sq[i].rows>max) max = sq[i].rows;
}
}
else{
for(var i=0; i<sq.length; i++){
if(sq[i].cols>max) max = sq[i].cols;
}
}
return max;
}
else{
var min = 20;
if(name=="rows"){
for(var i=0; i<sq.length; i++){
if(sq[i].rows<min) min = sq[i].rows;
}
}
else{
for(var i=0; i<sq.length; i++){
if(sq[i].cols<min) min = sq[i].cols;
}
}
return min;
}
}
function startgame(){
start.disabled = true;
pause.focus();
type = parseint(math.random()*7);
oldtype = type;
type = parseint(math.random()*7);
var m = 4/2 -1;
newsq = choosesquare(type,m,0);
redraw('forecast',newsq);
start();
}
function start(){
if(isover){
var s = "本次游戏结束! ";
overgame(s);
}
gscore.innertext = score;
gline.innertext = lines;
glevel.innertext = level;
oldtype = type;
cleardraw('forecast',newsq);
type = parseint(math.random()*7);
var m = 4/2 -1;
newsq = choosesquare(type,m,0);
redraw('forecast',newsq);
var mm = cols/2 -1;
cursq = choosesquare(oldtype,mm,0);
redraw('main',cursq);
window.clearinterval(timerid);
timerid = window.setinterval("run()",delay[level]);
}
function run(){
if(ispause) return;
if(movecursq(0,1,false) == false){
window.clearinterval(timerid);
if(removelines()==true) {
dellines();
lines = lines + delline.length;
switch(delline.length){
case 1:
score = score + 100;
break;
case 2:
score = score + 300;
break;
case 3:
score = score + 700;
break;
case 4:
score = score + 1000;
break;
}
level = parseint(score/10000);
}
start();
}
}
function removelines(){
var obj,m=0;
var isremove = true;
var searchpos = true;
var del = new array();
for(var i=19; i>=0; i--){
for(var j=0; j<10; j++){
obj = document.all("main" + i + "#" + j);
if(obj.style.background == color[0]){
isremove = false;
}
else{
searchpos = false;
}
}
if(searchpos) {
end = i;
if(del.length>0){delline=del;return true;}
else{return false;}
}