目录结构调整

This commit is contained in:
2026-02-04 23:47:45 +08:00
parent 6938c911c3
commit 6b22238c6e
8780 changed files with 15333 additions and 574 deletions

View File

@@ -0,0 +1,597 @@
var Board = function(){//构造方法
this.spidbeg = -1;
this.splist = [];
this.boxlist = [];
this.bbox_x = [];
this.bbox_y = [];
}
if(typeof(Board.prototype.creat) == "undefined"){
Board.prototype.create = function(raw,col,spbeg){//创建方阵
this.spidbeg = spbeg;
for(var i = 0;i < raw;i++){
var listTemp = [];
for(var j=0;j<col;j++){
//var boxTemp = new Box();
listTemp[j] = -1;
}
this.boxlist.push(listTemp);
}
for(var i = 0;i < raw;i++){
var listTemp = [];
for(var j=0;j<col;j++){
listTemp[j] = i*col+j + spbeg;
}
this.splist.push(listTemp);
}
for(var i=0;i<this.splist.length;i++){
var iTemp = [];
for(var j=0;j<this.splist[0].length;j++){
iTemp.push(get_self(this.splist[i][j],18,0,0,0));
}
this.bbox_x.push(iTemp);
}
for(var i=0;i<this.splist.length;i++){
var iTemp = [];
for(var j=0;j<this.splist[0].length;j++){
iTemp.push(get_self(this.splist[i][j],19,0,0,0));
}
this.bbox_y.push(iTemp);
}
};
}
if(typeof(Board.prototype.init) == "undefined"){
Board.prototype.init = function(stlist){//数据初始化
if(stlist.length != COL){return;}
if(stlist[0].length!=RAW){return;}
for(var i = 0;i < raw;i++){
for(var j=0;j<col;j++){
this.boxlist[i][j].state = stlist[i][j];
}
}
};
}
if(typeof(Board.prototype.clear33) == "undefined"){
Board.prototype.clear33 = function(){//清除3X3格子
var p1=ifast_random(6);
var p2=ifast_random(6);
var parr = [];
var sarr = [];
for(var i=p1;i<p1+3;i++){
for(var j=p2;j<p2+3;j++){
if(this.boxlist[i][j]>0){
parr.push([i,j]);
sarr.push(this.splist[i][j]);
}
}
}
this.clear(parr,sarr);
};
}
if(typeof(Board.prototype.getspava) == "undefined"){
Board.prototype.getspava = function(arr){//获取所有不为空的方格精灵号
for(var i = 0;i < RAW;i++){
for(var j=0;j<COL;j++){
if(this.boxlist[i][j]>-1){
arr.push(this.splist[i][j]);
}
}
}
};
}
if(typeof(Board.prototype.allcolor) == "undefined"){
Board.prototype.allcolor = function(carr){//统计方阵中所有的颜色
for(var i = 0;i < RAW;i++){
for(var j=0;j<COL;j++){
if(this.boxlist[i][j]>-1){
if(carr.length==0){
carr.push(this.boxlist[i][j]);
}else{
var bTemp=0;
for(var k=0;k<carr.length;k++){
if(carr[k]==this.boxlist[i][j]){
bTemp = 1;
}
}
if(bTemp==0){
carr.push(this.boxlist[i][j]);
}
}
}
}
}
};
}
if(typeof(Board.prototype.clearsome) == "undefined"){
Board.prototype.clearsome = function(){//消除方阵中一定数量方格
var carr=[];
var slist=[];
this.getspava(carr);
var l=carr.length;
if(l==0){return;}
if(l<4){
for(i=0;i<l;i++){
var b = carr[ifast_random(carr.length)];
slist.push(b);
C_Fun.removeByValue(carr,b);
}
}else if(l>=4){
for(i=0;i<4;i++){
var b = carr[ifast_random(carr.length)];
slist.push(b);
C_Fun.removeByValue(carr,b);
}
}
var pos=[];
for(var i=0;i<slist.length;i++){
var arr = this.getpos(slist[i]);
pos.push(arr);
this.boxlist[arr[0]][arr[1]] = -1;
set_self(slist[i],1,12,0,0);
}
utlscore(pos);
};
}
if(typeof(Board.prototype.clearone) == "undefined"){
Board.prototype.clearone = function(carr){//消除方阵中某种颜色
var carr=[];
var pos=[];
this.allcolor(carr);
if(carr.length==0){return;}
var t = carr[ifast_random(carr.length)];
//var arr=[1,2,3,4,5,6];
//C_Fun.removeByValue(arr,t);
//var ty = arr[ifast_random(arr.length)];
for(var i=0;i<RAW;i++){
for(j=0;j<COL;j++){
if(this.boxlist[i][j]==t){
this.boxlist[i][j]=-1;
pos.push([i,j]);
set_self(this.splist[i][j],1,12,0,0);
}
}
}
utlscore(pos);
};
}
if(typeof(Board.prototype.changeone) == "undefined"){
Board.prototype.changeone = function(carr){//改变方阵中某种颜色
var carr=[];
this.allcolor(carr);
var t = carr[ifast_random(carr.length)];
var arr=[1,2,3,4,5,6];
C_Fun.removeByValue(arr,t);
var ty = arr[ifast_random(arr.length)];
for(var i=0;i<RAW;i++){
for(j=0;j<COL;j++){
if(this.boxlist[i][j]==t){
this.boxlist[i][j]=ty;
set_self(this.splist[i][j],1,ty,0,0);
}
}
}
var poarr=[];
var sparr=[];
this.chgclear(poarr,sparr);
this.clear(poarr,sparr);
};
}
if(typeof(Board.prototype.getspid) == "undefined"){
Board.prototype.getspid = function(raw,col){//获得方格精灵号
return this.splist[raw][col];
};
}
if(typeof(Board.prototype.getpos) == "undefined"){
Board.prototype.getpos = function(spid){//获得精灵号为spid的方格位置
for(var i=0;i<9;i++){
for(j=0;j<9;j++){
if(this.splist[i][j]==spid){
return [i,j];
}
}
}
return null;
};
}
if(typeof(Board.prototype.cabplace) == "undefined"){
Board.prototype.canplace = function(block,raw,col){//能否放置
};
}
if(typeof(Board.prototype.place) == "undefined"){
Board.prototype.place = function(block,raw,col){//放置方块
};
}
if(typeof(Board.prototype.chgclear) == "undefined"){
Board.prototype.chgclear = function(posarr,sparr){//判断是否有方格可消除
//if(arr==null){return;}
var iTemp = 0;
while(iTemp < RAW){
var tarr=[-1,0];
var parr=[];
var poarr=[];
for(var i=0;i<COL;i++){
//if(this.boxlist[iTemp][i]>-1){
if(tarr[0]==-1){
if(this.boxlist[iTemp][i]>-1){
tarr[0] = this.boxlist[iTemp][i];
tarr[1] = 1;
parr.push(this.splist[iTemp][i]);
poarr.push([iTemp,i]);
}
}else{
if(this.boxlist[iTemp][i] == tarr[0]){//相同块
if(this.boxlist[iTemp][i]>-1){
tarr[1]++;
parr.push(this.splist[iTemp][i]);
poarr.push([iTemp,i]);
}
if(i==COL-1){
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<parr.length;k++){
var bTemp=0;
for(var m=0;m<sparr.length;m++){
if(sparr[m]==parr[k]){
bTemp = 1;
}
}
if(bTemp==0){
sparr.push(parr[k]);
posarr.push(poarr[k]);
}
}
tarr=[-1,0];
parr=[];
poarr =[];
}
}
}else{
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<parr.length;k++){
var bTemp=0;
for(var m=0;m<sparr.length;m++){
if(sparr[m]==parr[k]){
bTemp = 1;
}
}
if(bTemp==0){
sparr.push(parr[k]);
posarr.push(poarr[k]);
}
}
}
if(this.boxlist[iTemp][i] == -1){
tarr=[-1,0];
parr=[];
poarr =[];
}else{
if(i<COL-1){
tarr=[this.boxlist[iTemp][i],1];
parr=[];
parr.push(this.splist[iTemp][i]);
poarr=[];
poarr.push([iTemp,i]);
}else{
tarr=[-1,0];
parr=[];
poarr =[];
}
}
}
}
}
iTemp++;
}
var cTemp = 0;
while(cTemp < COL){
var tarr=[-1,0];
var parr=[];
var poarr=[];
for(var i=0;i<RAW;i++){
if(tarr[0]==-1){
if(this.boxlist[i][cTemp]>-1){
tarr[0] = this.boxlist[i][cTemp];
tarr[1] = 1;
parr.push(this.splist[i][cTemp]);
poarr.push([i,cTemp]);
}
}else{
if(this.boxlist[i][cTemp] == tarr[0]){//相同块
if(this.boxlist[i][cTemp]>-1){
tarr[1]++;
parr.push(this.splist[i][cTemp]);
poarr.push([i,cTemp]);
if(i==RAW-1){
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<parr.length;k++){
var bTemp=0;
for(var m=0;m<sparr.length;m++){
if(sparr[m]==parr[k]){
bTemp = 1;
}
}
if(bTemp==0){
sparr.push(parr[k]);
posarr.push(poarr[k]);
}
}
tarr=[-1,0];
parr=[];
poarr =[];
}
}
}
}else{
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<parr.length;k++){
var bTemp=0;
for(var m=0;m<sparr.length;m++){
if(sparr[m]==parr[k]){
bTemp = 1;
}
}
if(bTemp==0){
sparr.push(parr[k]);
posarr.push(poarr[k]);
}
}
}
if(this.boxlist[i][cTemp] == -1){
tarr=[-1,0];
parr=[];
poarr=[];
}else{
if(i<RAW-1){
tarr=[this.boxlist[i][cTemp],1];
parr=[];
parr.push(this.splist[i][cTemp]);
poarr=[];
poarr.push([i,cTemp]);
}else{
tarr=[-1,0];
parr=[];
poarr=[];
}
}
}
}
//}
}
cTemp++;
}
if(posarr.length>0){
return true;//有可消除方格
}else{
return false;//无可消除方格
}
};
}
if(typeof(Board.prototype.newgame) == "undefined"){
Board.prototype.newgame = function(){//新游戏
C_Block.newgame();
for(var i=0;i<this.boxlist.length;i++){
for(var j=0;j<this.boxlist[i].length;j++){
this.boxlist[i][j] = -1;
set_self(this.splist[i][j],1,12,0,0);
}
}
};
}
if(typeof(Board.prototype.canclear) == "undefined"){
Board.prototype.canclear = function(posarr,sparr,arr){//判断方格放置方块后是否有方格可消除
if(arr==null){return;}
var iTemp = arr[0][0];
while(iTemp < arr[0][0]+arr[1][0]){
var tarr=[-1,0];
var parr=[];
var poarr=[];
for(var i=0;i<COL;i++){
if(tarr[0]==-1){
if(this.boxlist[iTemp][i]>-1){
tarr[0] = this.boxlist[iTemp][i];
tarr[1] = 1;
parr.push(this.splist[iTemp][i]);
poarr.push([iTemp,i]);
}
}else{
if(this.boxlist[iTemp][i] == tarr[0]){//相同块
if(this.boxlist[iTemp][i]>-1){
tarr[1]++;
parr.push(this.splist[iTemp][i]);
poarr.push([iTemp,i]);
}
if(i==COL-1){
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<parr.length;k++){
var bTemp=0;
for(var m=0;m<sparr.length;m++){
if(sparr[m]==parr[k]){
bTemp = 1;
}
}
if(bTemp==0){
sparr.push(parr[k]);
posarr.push(poarr[k]);
}
}
tarr=[-1,0];
parr=[];
poarr =[];
}
}
}else{
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<parr.length;k++){
var bTemp=0;
for(var m=0;m<sparr.length;m++){
if(sparr[m]==parr[k]){
bTemp = 1;
}
}
if(bTemp==0){
sparr.push(parr[k]);
posarr.push(poarr[k]);
}
}
}
if(this.boxlist[iTemp][i] == -1){
tarr=[-1,0];
parr=[];
poarr =[];
}else{
if(i<COL-1){
tarr=[this.boxlist[iTemp][i],1];
parr=[];
parr.push(this.splist[iTemp][i]);
poarr=[];
poarr.push([iTemp,i]);
}else{
tarr=[-1,0];
parr=[];
poarr =[];
}
}
}
}
}
iTemp++;
}
var cTemp = arr[0][1];
while(cTemp < arr[0][1]+arr[1][1]){
var tarr=[-1,0];
var parr=[];
var poarr=[];
for(var i=0;i<RAW;i++){
if(tarr[0]==-1){
if(this.boxlist[i][cTemp]>-1){
tarr[0] = this.boxlist[i][cTemp];
tarr[1] = 1;
parr.push(this.splist[i][cTemp]);
poarr.push([i,cTemp]);
}
}else{
if(this.boxlist[i][cTemp] == tarr[0]){//相同块
if(this.boxlist[i][cTemp]>-1){
tarr[1]++;
parr.push(this.splist[i][cTemp]);
poarr.push([i,cTemp]);
if(i==RAW-1){
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<parr.length;k++){
var bTemp=0;
for(var m=0;m<sparr.length;m++){
if(sparr[m]==parr[k]){
bTemp = 1;
}
}
if(bTemp==0){
sparr.push(parr[k]);
posarr.push(poarr[k]);
}
}
tarr=[-1,0];
parr=[];
poarr =[];
}
}
}
}else{
if(tarr[1]>=3){//个数大于等于3
for(var k=0;k<parr.length;k++){
var bTemp=0;
for(var m=0;m<sparr.length;m++){
if(sparr[m]==parr[k]){
bTemp = 1;
}
}
if(bTemp==0){
sparr.push(parr[k]);
posarr.push(poarr[k]);
}
}
}
if(this.boxlist[i][cTemp] == -1){
tarr=[-1,0];
parr=[];
poarr=[];
}else{
if(i<RAW-1){
tarr=[this.boxlist[i][cTemp],1];
parr=[];
parr.push(this.splist[i][cTemp]);
poarr=[];
poarr.push([i,cTemp]);
}else{
tarr=[-1,0];
parr=[];
poarr=[];
}
}
}
}
}
cTemp++;
}
if(posarr.length>0){
return true;//有可消除方格
}else{
utlplayWav("00003.mp3",2);
return false;//无可消除方格
}
};
}
if(typeof(Board.prototype.clear) == "undefined"){
Board.prototype.clear = function(posarr,sparr){//消除符合要求的方格
if(sparr.length == 0){return;}
for(var i=0;i<sparr.length;i++){
set_self(sparr[i],1,17,0,0);
play_ani(1,sparr[i],43,1,13,0,CLEARTIME,0,0,0,1,0,0);
}
utlscore(posarr);
};
}
if(typeof(Board.prototype.judgeplace) == "undefined"){
Board.prototype.judgeplace = function(block){//判断当前块是否有地方可放置
};
}