Files
2026-02-04 23:47:45 +08:00

1234 lines
30 KiB
JavaScript

var C_Block = {};//方块
C_Block.List = [];
var Block = function(){//构造方法
this.id = -1;
this.kd = -1;
this.group = -1;//该块包含方格所属群组
this.isSelect = 0;
this.sp = -1;
this.spbeg = 0;
this.x = 0;
this.y = 0;
this.margin = [];
this.type = [];
this.tt=[];
this.splist = [];
}
C_Block.create = function(){//创建方块
this.List.length = maxsize.blk;
for(var k=0;k<this.List.length;k++){
var b = new Block();
b.id = k;
b.x = bposition[k][0];
b.y = bposition[k][1];
b.sp = blocksplist[k];
b.spbeg = blockspbeg[k];
b.group = blockgrplist[k];
for(var i = 0;i < B_RAW;i++){
var listTemp = [];
var mTemp = [];
for(var j=0;j<B_COL;j++){
//var boxTemp = new Box();
listTemp[j] = i*B_COL+j + blockspbeg[k];
mTemp[j] = -1;
}
b.splist.push(listTemp);
b.margin.push(mTemp);
}
//for(var i = 0;i < B_RAW;i++){
//var listTemp = [];
//for(var j=0;j<B_COL;j++){
//b.boxlist[i][j].sp = i*B_COL+j + blockspbeg[k];
//}
//}
this.List[k] = b;
}
}
C_Block.flashblock = function(){//刷新块
for(var i=0;i<3;i++){
if(this.List[i].kd>-1){
this.List[i].clear();
this.List[i].genblock();
}
}
}
C_Block.changecolor = function(){//改变颜色
for(var i=0;i<3;i++){
if(this.List[i].kd>-1){
//this.List[i].clear();
this.List[i].changecolor();
}
}
}
C_Block.newgame = function(){//新游戏
for(var i=0;i<3;i++){
this.List[i].newgame();
}
}
C_Block.newblock = function(){//重新生成所有块
for(var i=0;i<3;i++){
this.List[i].genblock();
}
}
C_Block.canrenew = function(){//重新生成所有块
for(var i=0;i<3;i++){
if(this.List[i].kd>-1){
return;
}
}
this.newblock();
}
C_Block.avaplace = function(){//游戏是否结束
blockava = [-1,-1,-1];
var sum = 0;
var bsum = 0;
var ind = -1;
for(var i=0;i<3;i++){
if(this.List[i].kd>-1){
sum++;
this.List[i].canplace();
}
}
for(var i=0;i<3;i++){
if(blockava[i] == 1){
bsum++;
ind = i;
}
}
if(bsum==1){
if(sum>1){
if(this.List[ind].haveclear()){
return true;
}else{
return false;
}
}else{
for(var i=0;i<3;i++){
if(this.List[i].kd>-1){
if(this.List[i].canplace()){
return true;
}
}
}
}
}
if(bsum>1){
for(var i=0;i<3;i++){
if(this.List[i].kd>-1){
if(this.List[i].canplace()){
return true;
}
}
}
}
return false;
}
C_Block.getblock = function(bpos){//获取方块
if(bpos<0){return null;}
return this.List[bpos];
}
C_Block.clear = function(){//清除所有方块内容
}
if(typeof(Block.prototype.click) == "undefined"){
Block.prototype.click = function(){//选择该块
this.isSelect = 1;
};
}
if(typeof(Block.prototype.haveclear) == "undefined"){
Block.prototype.haveclear = function(){//判断该块是否放置后有可消除
var barr =[];
for(var i=0;i<9;i++){
barr.push([-1,-1,-1,-1,-1,-1,-1,-1,-1]);
}
for(var i=0;i < RAW;i++){
for(var j=0;j<COL;j++){
for(var m=0;m<g_board.boxlist.length;m++){
for(n=0;n<g_board.boxlist[m].length;n++){
barr[m][n] = g_board.boxlist[m][n];
}
}
switch(this.kd){
case 0:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
//bTemp = false;
continue;
}
if(g_board.boxlist[i][j] == -1 && g_board.boxlist[i+2][j] == -1){
barr[i][j] = this.margin[0][1];
barr[i+2][j] = this.margin[2][1];
var parr=[];
if(this.isclear(barr,parr,[[i,j],[this.type[0],this.type[1]]])){
return true;
}
}
break;
case 1:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
//bTemp = false;
continue;
}
if(g_board.boxlist[i][j] == -1 && g_board.boxlist[i+1][j]== -1){
barr[i][j] = this.margin[0][1];
barr[i+1][j] = this.margin[1][1];
var parr=[];
if(this.isclear(barr,parr,[[i,j],[this.type[0],this.type[1]]])){
return true;
}
}
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
//bTemp = false;
continue;
}
var t = true;
var bps=[];
var mpos =[];
for(var m=0;m<2;m++){
for(var n=0;n<2;n++){
if(this.margin[m][n] != -1){
if(g_board.boxlist[i+m][j+n] != -1){
t=false;
}
else{
//bps.push([i+m,j+n]);
//mpos.push([m,n]);
barr[i+m][j+n] = this.margin[m][n];
}
}
}
}
if(t){
var parr=[];
if(this.isclear(barr,parr,[[i,j],[this.type[0],this.type[1]]])){
return true;
}
}
break;
case 8:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
continue;
}
if(g_board.boxlist[i][j] == -1 && g_board.boxlist[i][j+1]== -1){
barr[i][j] = this.margin[1][0];
barr[i][j+1] = this.margin[1][1];
var parr=[];
if(this.isclear(barr,parr,[[i,j],[this.type[0],this.type[1]]])){
return true;
}
}
break;
case 9:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
//bTemp = false;
continue;
}
if(g_board.boxlist[i][j] == -1 && g_board.boxlist[i][j+2]== -1){
barr[i][j] = this.margin[1][0];
barr[i][j+2] = this.margin[1][2];
var parr=[];
if(this.isclear(barr,parr,[[i,j],[this.type[0],this.type[1]]])){
return true;
}
}
break;
case 10:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
//bTemp = false;
continue;
}
if(g_board.boxlist[i][j] == -1){
barr[i][j] = this.margin[1][1];
var parr=[];
if(this.isclear(barr,parr,[[i,j],[this.type[0],this.type[1]]])){
return true;
}
}
break;
}
}
}
return false;
};
}
if(typeof(Block.prototype.isclear) == "undefined"){
Block.prototype.isclear = function(blist,posarr,arr){//是否有可消除
var iTemp = arr[0][0];
while(iTemp < arr[0][0]+arr[1][0]){
var tarr=[-1,0];
var poarr=[];
for(var i=0;i<COL;i++){
if(tarr[0]==-1){
if(blist[iTemp][i]>-1){
tarr[0] = blist[iTemp][i];
tarr[1] = 1;
poarr.push([iTemp,i]);
}
}else{
if(blist[iTemp][i] == tarr[0]){//相同块
if(blist[iTemp][i]>-1){
tarr[1]++;
poarr.push([iTemp,i]);
}
if(i==COL-1){
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<poarr.length;k++){
var bTemp=0;
for(var m=0;m<posarr.length;m++){
if(posarr[m][0]==poarr[k][0]&&posarr[m][1]==poarr[k][1]){
bTemp = 1;
}
}
if(bTemp==0){
posarr.push(poarr[k]);
}
}
tarr=[-1,0];
poarr =[];
}
}
}else{
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<poarr.length;k++){
var bTemp=0;
for(var m=0;m<posarr.length;m++){
if(posarr[m][0]==poarr[k][0]&&posarr[m][1]==poarr[k][1]){
bTemp = 1;
}
}
if(bTemp==0){
posarr.push(poarr[k]);
}
}
}
if(blist[iTemp][i] == -1){
tarr=[-1,0];
poarr =[];
}else{
if(i<COL-1){
tarr=[blist[iTemp][i],1];
poarr=[];
poarr.push([iTemp,i]);
}else{
tarr=[-1,0];
poarr =[];
}
}
}
}
//}
}
iTemp++;
}
var cTemp = arr[0][1];
while(cTemp < arr[0][1]+arr[1][1]){
var tarr=[-1,0];
var poarr=[];
for(var i=0;i<RAW;i++){
if(tarr[0]==-1){
if(blist[i][cTemp]>-1){
tarr[0] = blist[i][cTemp];
tarr[1] = 1;
poarr.push([i,cTemp]);
}
}else{
if(blist[i][cTemp] == tarr[0]){//相同块
if(blist[i][cTemp]>-1){
tarr[1]++;
poarr.push([i,cTemp]);
if(i==RAW-1){
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<poarr.length;k++){
var bTemp=0;
for(var m=0;m<posarr.length;m++){
if(posarr[m][0]==poarr[k][0]&&posarr[m][1]==poarr[k][1]){
bTemp = 1;
}
}
if(bTemp==0){
posarr.push(poarr[k]);
}
}
tarr=[-1,0];
poarr =[];
}
}
}
}else{
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<poarr.length;k++){
var bTemp=0;
for(var m=0;m<posarr.length;m++){
if(posarr[m][0]==poarr[k][0]&&posarr[m][1]==poarr[k][1]){
bTemp = 1;
}
}
if(bTemp==0){
posarr.push(poarr[k]);
}
}
}
if(blist[i][cTemp] == -1){
tarr=[-1,0];
poarr=[];
}else{
if(i<RAW-1){
tarr=[blist[i][cTemp],1];
poarr=[];
poarr.push([i,cTemp]);
}else{
tarr=[-1,0];
poarr=[];
}
}
}
}
}
cTemp++;
}
if(posarr.length>0){
return true;
}else{
return false;
}
};
}
if(typeof(Block.prototype.newgame) == "undefined"){
Block.prototype.newgame = function(){//新游戏
for(var i=0;i<this.margin.length;i++){
for(var j=0;j<this.margin[i].length;j++){
this.margin[i][j] = -1;
set_self(this.splist[i][j],1,12,0,0);
}
}
this.type=[];
this.kd=-1;
};
}
if(typeof(Block.prototype.move) == "undefined"){
Block.prototype.move = function(offmovex,offmovey){//块移动
if(this.kd > -1){
set_self(bkflist[this.id],18,offmovex,1,0,0);
set_self(bkflist[this.id],19,offmovey,1,0,0);
set_group(this.group,18,offmovex,1,0);
set_group(this.group,19,offmovey,1,0);
}
};
}
if(typeof(Block.prototype.canplace) == "undefined"){
Block.prototype.canplace = function(){//判断该块是否有位置可放置
for(var i=0;i < RAW;i++){
for(var j=0;j<COL;j++){
switch(this.kd){
case 0:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
continue;
}
if(g_board.boxlist[i][j] == -1 && g_board.boxlist[i+2][j] == -1){
blockava[this.id] = 1;
}
break;
case 1:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
//bTemp = false;
continue;
}
if(g_board.boxlist[i][j] == -1 && g_board.boxlist[i+1][j]== -1){
blockava[this.id] = 1;
//return true;
}
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
continue;
}
var t = true;
var bps=[];
var mpos =[];
for(var m=0;m<2;m++){
for(var n=0;n<2;n++){
if(this.margin[m][n] != -1){
if(g_board.boxlist[i+m][j+n] != -1){
t=false;
}
}
}
}
if(t){
blockava[this.id] = 1;
}else{
continue;
}
break;
case 8:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
continue;
}
if(g_board.boxlist[i][j] == -1 && g_board.boxlist[i][j+1]== -1){
blockava[this.id] = 1;
}
break;
case 9:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
//bTemp = false;
continue;
}
if(g_board.boxlist[i][j] == -1 && g_board.boxlist[i][j+2]== -1){
blockava[this.id] = 1;
}
break;
case 10:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
continue;
}
if(g_board.boxlist[i][j] == -1){
blockava[this.id] = 1;
}
break;
}
}
}
if(blockava[this.id] == -1){
return false
}else{
return true;
}
};
}
if(typeof(Block.prototype.place) == "undefined"){
Block.prototype.place = function(){//判断块是否可放置
var sp_x1 = get_self(this.splist[0][0],18,0,0,0);
var sp_y1 = get_self(this.splist[0][0],19,0,0,0);
var sp_x2 = get_self(this.splist[0][1],18,0,0,0);
var sp_y2 = get_self(this.splist[0][1],19,0,0,0);
var sp_x3 = get_self(this.splist[1][0],18,0,0,0);
var sp_y3 = get_self(this.splist[1][0],19,0,0,0);
var sp_x4 = get_self(this.splist[1][1],18,0,0,0);
var sp_y4 = get_self(this.splist[1][1],19,0,0,0);
if(isSlide==1){
for(var i=0;i < RAW;i++){
for(var j=0;j<COL;j++){
if((ifast_abs(sp_x1 - g_board.bbox_x[i][j])<=C_EEROR && ifast_abs(sp_y1 - g_board.bbox_y[i][j])<=C_EEROR && this.kd>=2 && this.kd <= 7) ||
(ifast_abs(sp_x2 - g_board.bbox_x[i][j])<=C_EEROR && ifast_abs(sp_y2 - g_board.bbox_y[i][j])<=C_EEROR &&this.kd >=0 && this.kd<=1 ) ||
(ifast_abs(sp_x3 - g_board.bbox_x[i][j])<=C_EEROR && ifast_abs(sp_y3 - g_board.bbox_y[i][j])<=C_EEROR &&this.kd >=8 && this.kd<=9) ||
(ifast_abs(sp_x4 - g_board.bbox_x[i][j])<=C_EEROR && ifast_abs(sp_y4 - g_board.bbox_y[i][j])<=C_EEROR &&this.kd ==10)){
allsp = [];
var sppos = [];
var bsppos = [];
typelist = [];
set_self(bkflist[this.id],18,this.x,0,0,0);
set_self(bkflist[this.id],19,this.y,0,0,0);
switch(this.kd){
case 0:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
this.restpos();
return;
}
if(g_board.boxlist[i][j] != -1 || g_board.boxlist[i+2][j] != -1){
this.restpos();
return;
}
bsppos =[[i,j],[i+2,j]];
allsp = [g_board.splist[i][j],g_board.splist[i+2][j]];//需要替换的精灵号
sppos = [[0,1],[2,1]];
typelist = [this.margin[0][1],this.margin[2][1]];
break;
case 1:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
this.restpos();
return;
}
if(g_board.boxlist[i][j] != -1 || g_board.boxlist[i+1][j]!= -1){
this.restpos();
return;
}
bsppos =[[i,j],[i+1,j]];
allsp = [g_board.splist[i][j],g_board.splist[i+1][j]];//需要替换的精灵号
sppos = [[0,1],[1,1]];
typelist = [this.margin[0][1],this.margin[1][1]];
break;
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
this.restpos();
return;
}
for(var m=0;m<2;m++){
for(var n=0;n<2;n++){
if(this.margin[m][n] != -1){
if(g_board.boxlist[i+m][j+n] == -1){
bsppos.push([i+m,j+n]);
allsp.push(g_board.splist[i+m][j+n]);
sppos.push([m,n]);
typelist.push(this.margin[m][n]);
}else{
//allsp=[];
//appos=[];
this.restpos();
return;
}
}
}
}
break;
case 8:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
this.restpos();
return;
}
if(g_board.boxlist[i][j] != -1 || g_board.boxlist[i][j+1]!= -1){
this.restpos();
return;
}
bsppos =[[i,j],[i,j+1]];
allsp = [g_board.splist[i][j],g_board.splist[i][j+1]];//需要替换的精灵号
sppos = [[1,0],[1,1]];
typelist = [this.margin[1][0],this.margin[1][1]];
break;
case 9:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
this.restpos();
return;
}
if(g_board.boxlist[i][j] != -1 || g_board.boxlist[i][j+2]!= -1){
this.restpos();
return;
}
bsppos = [[i,j],[i,j+2]];
allsp = [g_board.splist[i][j],g_board.splist[i][j+2]];//需要替换的精灵号
sppos = [[1,0],[1,2]];
typelist = [this.margin[1][0],this.margin[1][2]];
break;
case 10:
if((i + this.type[0]) > RAW || (j + this.type[1]) > COL){//判断边界
this.restpos();
return;
}
if(g_board.boxlist[i][j] != -1){
this.restpos();
return;
}
bsppos =[[i,j]];
allsp = [g_board.splist[i][j]];//需要替换的精灵号
sppos = [[1,1]];
typelist = [this.margin[1][1]];
break;
}
for(var k=0;k<allsp.length;k++){
g_board.boxlist[bsppos[k][0]][bsppos[k][1]] = this.margin[sppos[k][0]][sppos[k][1]];
set_self(allsp[k],1,this.margin[sppos[k][0]][sppos[k][1]],0,0);
}
var sp_x = get_self(this.splist[0][0],18,0,0,0) - 3;
var sp_y = get_self(this.splist[0][0],19,0,0,0) - 3;
set_group(this.group,18,this.x - sp_x,1,0,0);
set_group(this.group,19,this.y - sp_y,1,0,0);
//logmessage("放置成功后:编号 = "+this.id+" x = "+this.x+" y = "+this.y);
//logmessage("放置的块ID为:"+this.id+" 精灵号 = "+bkflist[this.id]+" x = "+this.x+" y = "+this.y);
allsplist=[];
poslist=[];
g_board.canclear(poslist,allsplist,[[i,j],[this.type[0],this.type[1]]]);
this.clear();
g_board.clear(poslist,allsplist);
C_Block.canrenew();
if(C_Block.avaplace()){
//logmessage("有位置可放!");
}else{
//g_player.sethscore(g_player.score);
//showmessage("没有可放位置,游戏结束!该盘得分 = "+g_player.score+"最高分 = "+g_player.highscore);
//g_player.setscore(0);
//g_game.newgame();
//utlnewgame(0);
utlgameover();
}
return;
}
}
}
}
this.restpos();
};
}
if(typeof(Block.prototype.restpos) == "undefined"){
Block.prototype.restpos = function(){//块回原位
//play_wav("00006.mp3");
utlplayWav("00006.mp3",2);
set_self(bkflist[this.id],18,this.x,0,0,0);
set_self(bkflist[this.id],19,this.y,0,0,0);
//logmessage("回原位:编号 = "+this.id+" x = "+this.x+" y = "+this.y);
var sp_x = get_self(this.splist[0][0],18,0,0,0)-3;
var sp_y = get_self(this.splist[0][0],19,0,0,0)-3;
set_group(this.group,18,this.x - sp_x,1,0,0);
set_group(this.group,19,this.y - sp_y,1,0,0);
};
}
if(typeof(Block.prototype.clear) == "undefined"){
Block.prototype.clear = function(){//清除块
this.kd = -1;
this.type =[];
this.tt=[];
for(var i=0;i<3;i++){
for(var j=0;j<3;j++){
if(this.margin[i][j] != -1){
this.margin[i][j] = -1;
set_self(this.splist[i][j],1,12,0,0);
}
}
}
};
}
if(typeof(Block.prototype.genblock) == "undefined"){
Block.prototype.genblock = function(){//重新生成块
var type = ifast_random(18);
switch(type){
case 0:
case 11:
this.kd = 0;
this.type = [3,1];
var b_type = ifast_random(6)+1;
this.margin[0][1] = b_type;
this.margin[2][1] = b_type;
break;
case 1:
case 12:
this.kd = 1;
this.type = [2,1];
var b_type = ifast_random(6)+1;
this.margin[0][1] = b_type;
this.margin[1][1] = b_type;
break;
case 2:
case 13:
this.kd = 2;
this.type=[2,2];
var b_type = ifast_random(6)+1;
var ind = ifast_random(2);
this.tt.push(ind);
switch(ind){
case 0:
this.margin[0][1] = b_type;
this.margin[1][0] = b_type;
break;
case 1:
this.margin[0][0] = b_type;
this.margin[1][1] = b_type;
break;
}
break;
case 3:
case 14:
this.kd = 3;
this.type=[2,2];
var b_type = ifast_random(6)+1;
var ind = ifast_random(4);
this.tt.push(ind);
for(var i=0;i<2;i++){
for(var j=0;j<2;j++){
if((i*2+j)!= ind){
this.margin[i][j] = b_type;
}
}
}
break;
case 4:
this.kd = 4;
this.type = [2,2];
var carr = [1,2,3,4,5,6];
//var b_type = carr[ifast_random(carr.length)];
//C_Fun.removeByValue(carr,b_type);
var b_type = C_Fun.randomtype(carr);
var ind = ifast_random(4);
this.tt.push(ind);
for(var i=0;i<2;i++){
for(var j=0;j<2;j++){
if((i*2+j)!= ind){
this.margin[i][j] = b_type;
}
}
}
var b_type1 = C_Fun.randomtype(carr);
for(var i=0;i<2;i++){
for(var j=0;j<2;j++){
if(this.margin[i][j] == -1){
this.margin[i][j] = b_type1;
}
}
}
break;
case 5:
this.kd = 5;
this.type = [2,2];
var carr = [1,2,3,4,5,6];
var t1 = C_Fun.randomtype(carr);//颜色
var p1 = ifast_random(2);//相连两个横竖放
this.tt.push(p1);
switch(p1){
case 0://横
var p2 = ifast_random(2);//相连两个放置位置
this.tt.push(p2);
this.margin[p2][0] = t1;
this.margin[p2][1] = t1;
break;
case 1://竖
var p2 = ifast_random(2);//相连两个放置位置
this.tt.push(p2);
this.margin[0][p2] = t1;
this.margin[1][p2] = t1;
break;
}
var t2 = C_Fun.randomtype(carr);
var t3;
var btemp = 0;
for(var i=0;i<2;i++){
for(var j=0;j<2;j++){
if(this.margin[i][j] == -1){
if(btemp == 0){
this.margin[i][j] = t2;
t3 = C_Fun.randomtype(carr);
btemp = 1;
}else{
this.margin[i][j] = t3;
}
}
}
}
break;
case 6:
this.kd = 6;
this.type = [2,2];
var carr = [1,2,3,4,5,6];
var t1 = C_Fun.randomtype(carr);
var p1 = ifast_random(2);
this.tt.push(p1);
switch(p1){
case 0:
this.margin[0][0] = t1;
this.margin[1][1] = t1;
break;
case 1:
this.margin[0][1] = t1;
this.margin[1][0] = t1;
break;
}
var t2 = C_Fun.randomtype(carr);
var t3;
var btemp = 0;
for(var i=0;i<2;i++){
for(var j=0;j<2;j++){
if(this.margin[i][j] == -1){
if(btemp == 0){
this.margin[i][j] = t2;
t3 = C_Fun.randomtype(carr);
btemp = 1;
}else{
this.margin[i][j] = t3;
}
}
}
}
break;
case 7:
this.kd = 7;
this.type = [2,2];
var carr = [1,2,3,4,5,6];
this.margin[0][0] = C_Fun.randomtype(carr);
this.margin[0][1] = C_Fun.randomtype(carr);
this.margin[1][0] = C_Fun.randomtype(carr);
this.margin[1][1] = C_Fun.randomtype(carr);
break;
case 8:
case 15:
this.kd = 8;
this.type = [1,2];
var t1 = ifast_random(6)+1;
this.margin[1][0] = t1;
this.margin[1][1] = t1;
break;
case 9:
case 16:
this.kd = 9;
this.type = [1,3];
var t1 = ifast_random(6)+1;
this.margin[1][0] = t1;
this.margin[1][2] = t1;
break;
case 10:
case 17:
this.kd = 10;
this.type = [1,1];
var t1 = ifast_random(6)+1;
this.margin[1][1] = t1;
break;
}
for(var i=0;i<this.margin.length;i++){
for(var j=0;j< this.margin[0].length;j++){
if(this.margin[i][j] > -1){
set_self(this.splist[i][j],1,this.margin[i][j],0,0);
}
}
}
};
}
if(typeof(Block.prototype.changecolor) == "undefined"){
Block.prototype.changecolor = function(){//块回原位
switch(this.kd){
case 0:
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][1]);
var b_type = carr[ifast_random(5)];
this.margin[0][1] = b_type;
this.margin[2][1] = b_type;
break;
case 1:
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][1]);
var b_type = carr[ifast_random(5)];
this.margin[0][1] = b_type;
this.margin[1][1] = b_type;
break;
case 2:
var carr = [1,2,3,4,5,6];
if(this.margin[0][1]>-1){
C_Fun.removeByValue(carr,this.margin[0][1]);
var b_type = carr[ifast_random(5)];
this.margin[0][1] = b_type;
this.margin[1][0] = b_type;
}else{
if(this.margin[0][0]>-1){
C_Fun.removeByValue(carr,this.margin[0][0]);
var b_type = carr[ifast_random(5)];
this.margin[0][0] = b_type;
this.margin[1][1] = b_type;
}
}
break;
case 3:
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][1]);
var b_type = carr[ifast_random(5)];
for(var i=0;i<2;i++){
for(var j=0;j<2;j++){
if(this.margin[i][j]>-1){
this.margin[i][j] = b_type;
}
}
}
break;
case 4:
var iTemp=parseInt(this.tt[0]/2);
var jTemp=this.tt[0]%2;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[iTemp][jTemp]);
var b1 = carr[ifast_random(5)];
var b2;
if(this.tt[0]==0){
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][1]);
C_Fun.removeByValue(carr,b1);
var b2 = carr[ifast_random(4)];
}else{
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,b1);
var b2 = carr[ifast_random(4)];
}
for(var i=0;i<2;i++){
for(var j=0;j<2;j++){
if((i*2+j)== this.tt[0]){
this.margin[i][j] = b1;
}else{
this.margin[i][j] = b2;
}
}
}
break;
case 5:
//var p1 = ifast_random(2);//相连两个横竖放
var p1 =this.tt[0];
switch(p1){
case 0://横
var p2 = this.tt[1];//相连两个放置位置
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[p2][0]);
var t1 = carr[ifast_random(5)];
this.margin[p2][0] = t1;
this.margin[p2][1] = t1;
break;
case 1://竖
var p2 = this.tt[1];//相连两个放置位置
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[p2][0]);
var t1 = carr[ifast_random(5)];
this.margin[0][p2] = t1;
this.margin[1][p2] = t1;
break;
}
if(this.tt[0]==0){
if(this.tt[1]==0){
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][0]);
C_Fun.removeByValue(carr,this.margin[0][0]);
var t2 = carr[ifast_random(4)];
this.margin[1][0]=t2;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][1]);
C_Fun.removeByValue(carr,this.margin[1][0]);
C_Fun.removeByValue(carr,this.margin[0][0]);
var t3 = carr[ifast_random(3)];
this.margin[1][1]=t3;
}else if(this.tt[1]==1){
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[1][0]);
var t2 = carr[ifast_random(4)];
this.margin[0][0]=t2;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][1]);
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[1][0]);
var t3 = carr[ifast_random(3)];
this.margin[0][1]=t3;
}
}else if(this.tt[0]==1){
if(this.tt[1]==0){
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
var t2 = carr[ifast_random(4)];
this.margin[0][1]=t2;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
C_Fun.removeByValue(carr,this.margin[0][0]);
var t3 = carr[ifast_random(3)];
this.margin[1][1]=t3;
}else if(this.tt[1]==1){
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
var t2 = carr[ifast_random(4)];
this.margin[0][0]=t2;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][0]);
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
var t3 = carr[ifast_random(3)];
this.margin[1][0]=t3;
}
}
break;
case 6:
var p1 = this.tt[0];
switch(p1){
case 0:
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][0]);
var t1 = carr[ifast_random(5)];
this.margin[0][0] = t1;
this.margin[1][1] = t1;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][1]);
C_Fun.removeByValue(carr,this.margin[0][0]);
var t2 = carr[ifast_random(4)];
this.margin[0][1]=t2;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
C_Fun.removeByValue(carr,this.margin[0][0]);
var t3 = carr[ifast_random(3)];
this.margin[1][0]=t3;
break;
case 1:
this.margin[0][1] = t1;
this.margin[1][0] = t1;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][1]);
var t1 = carr[ifast_random(5)];
this.margin[0][1] = t1;
this.margin[1][0] = t1;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
var t2 = carr[ifast_random(4)];
this.margin[0][0]=t2;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][1]);
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
var t3 = carr[ifast_random(3)];
this.margin[1][1]=t3;
break;
}
break;
case 7:
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][0]);
var t1 = carr[ifast_random(5)];
this.margin[0][0] = t1;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
var t2 = carr[ifast_random(4)];
this.margin[0][1]=t2;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][0]);
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
var t3 = carr[ifast_random(3)];
this.margin[1][0]=t3;
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][1]);
C_Fun.removeByValue(carr,this.margin[0][0]);
C_Fun.removeByValue(carr,this.margin[0][1]);
C_Fun.removeByValue(carr,this.margin[1][0]);
var t4 = carr[ifast_random(2)];
this.margin[1][1] = t4;
break;
case 8:
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][0]);
var t1 = carr[ifast_random(5)];
this.margin[1][0] = t1;
this.margin[1][1] = t1;
break;
case 9:
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][0]);
var t1 = carr[ifast_random(5)];
this.margin[1][0] = t1;
this.margin[1][2] = t1;
break;
case 10:
var carr = [1,2,3,4,5,6];
C_Fun.removeByValue(carr,this.margin[1][1]);
var t1 = carr[ifast_random(5)];
this.margin[1][1] = t1;
break;
}
for(var i=0;i<this.margin.length;i++){
for(var j=0;j< this.margin[0].length;j++){
if(this.margin[i][j] > -1){
set_self(this.splist[i][j],1,this.margin[i][j],0,0);
}
}
}
};
}