Skip to content

Commit 14f9375

Browse files
committed
変数DATAにpuz_boardの管理を任せた
1 parent 3a7d56c commit 14f9375

File tree

1 file changed

+17
-25
lines changed

1 file changed

+17
-25
lines changed

Script/script.js

Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ let [chain_now,chainable]=[false,false];
1010
let chain_info={color : null,count : 0};
1111
let chain_yx =new Array();//[i].(x | y)
1212
let adj_list = new Array();//[i].(y | x)
13-
let puz_board=new Array();// [y][x][Layer].(type | power)
1413
//SECTOR_2.5:準const変数群
1514
let PUZ_BOARD_BONE=new Array();
1615
let DATA={};
@@ -31,19 +30,18 @@ const is_adj_break = obj_type => [-2].includes(obj_type);
3130
const dest_sync = field_type => [1].includes(field_type);
3231
const update_cell = (y,x) =>
3332
[PUZ_BOARD_BONE[y][x].querySelector("img.object").src,PUZ_BOARD_BONE[y][x].querySelector("img.field").src] =
34-
[`Pictures/Orbs/${puz_board[y][x][0].type}.svg`,`Pictures/Fields/${puz_board[y][x][1].type}.svg`];
33+
[`Pictures/Orbs/${DATA.board.obj[y][x][0]}.svg`,`Pictures/Fields/${DATA.board.field[y][x][1]}.svg`];
3534

3635
function update_display(){
3736
for(let i=0;i<DATA.size.Height;i++)for(let j=0;j<DATA.size.Width;j++)update_cell(i,j);
3837
document.querySelector("#puz_info").innerText = `Score : ${DATA.target.score} Hand : ${DATA.target.hand}`;
3938
}
4039
function obj_erase(y,x,isobj=true){
41-
const TARGET = puz_board[y][x][isobj?0:1];
42-
[TARGET.type,TARGET.power] = [0,0];
40+
const TARGET = isobj?DATA.board.obj[y][x]:DATA.board.field[y][x];
41+
[TARGET[0],TARGET[1]] = [0,0];
4342
update_cell(y,x);
4443
}
4544
function load_board(){
46-
puz_board=new Array(DATA.size.Height).fill().map(_=>Array(DATA.size.Width).fill().map(_=>([{type : 0,power : 0},{type : 0,power : 0}])));
4745
PUZ_BOARD_BONE=new Array(DATA.size.Height).fill().map(_=>Array(DATA.size.Width));
4846
MAIN_BOARD.innerHTML = null;
4947
for (let i = 0; i < DATA.size.Height; i++) {
@@ -61,26 +59,20 @@ function load_board(){
6159
}
6260
MAIN_BOARD.appendChild(TR);
6361
}
64-
for(let i=0;i < DATA.size.Height;i++){
65-
for(let j=0;j < DATA.size.Width;j++){
66-
[puz_board[i][j][0].type,puz_board[i][j][0].power]=DATA.board.obj[i][j];
67-
[puz_board[i][j][1].type,puz_board[i][j][1].power]=DATA.board.field[i][j];
68-
}
69-
}
7062
}
7163
function break_obj(y,x,ischain,isobj=true){
72-
const TARGET = puz_board[y][x][isobj?0:1];
73-
TARGET.power--;
74-
if(TARGET.power<=0||ischain){
75-
if(!isobj&&TARGET.type==1)DATA.target.score+=BASE_SCORE;
64+
const TARGET = isobj?DATA.board.obj[y][x]:DATA.board.field[y][x];
65+
TARGET[1]--;
66+
if(TARGET[1]<=0||ischain){
67+
if(!isobj&&TARGET[0]==1)DATA.target.score+=BASE_SCORE;
7668
obj_erase(y,x,isobj);
77-
isobj && dest_sync(puz_board[y][x][1].type) && break_obj(y,x,false,false);
69+
isobj && dest_sync(DATA.board.field[y][x][0]) && break_obj(y,x,false,false);
7870
}
7971
}
8072
function fall_obj(yfrom,xfrom,yto,xto){
81-
const [OBJ_TO,OBJ_FROM] = [puz_board[yto][xto][0],puz_board[yfrom][xfrom][0]];
82-
if(OBJ_TO.type == 0 && fallable(OBJ_FROM.type) ){
83-
[OBJ_TO.type,OBJ_TO.power]=[OBJ_FROM.type,OBJ_FROM.power];
73+
const [OBJ_TO,OBJ_FROM] = [DATA.board.obj[yto][xto],DATA.board.obj[yfrom][xfrom]];
74+
if(OBJ_TO[0] == 0 && fallable(OBJ_FROM[0]) ){
75+
[OBJ_TO[0],OBJ_TO[1]]=[OBJ_FROM[0],OBJ_FROM[1]];
8476
update_cell(yto,xto);
8577
obj_erase(yfrom,xfrom);
8678
return true;
@@ -98,8 +90,8 @@ function falling_orb(){
9890
for(let j=0;j<DATA.size.Width-1;j++)refall=fall_obj(i-1,j,i,j+1)||refall;//R-shift
9991
}
10092
for(let i=0;i<DATA.size.Width;i++){
101-
if(puz_board[0][i][0].type==0){
102-
puz_board[0][i][0]={type : ~~(Math.random()*ORB_COLORS)+1,power : 1};
93+
if(DATA.board.obj[0][i][0]==0){
94+
DATA.board.obj[0][i]=[~~(Math.random()*ORB_COLORS)+1,1];
10395
refall=true;
10496
}
10597
}
@@ -113,7 +105,7 @@ function falling_orb(){
113105
}
114106
function onmouce_cell(cell){
115107
const [CELL_Y,CELL_X] = [cell.target.parentNode.rowIndex,cell.target.cellIndex];
116-
const CELL_COLOR = puz_board[CELL_Y][CELL_X][0].type;
108+
const CELL_COLOR = DATA.board.obj[CELL_Y][CELL_X][0];
117109
if(chain_now){
118110
if(Math.abs(chain_yx.at(-1).y-CELL_Y)<=1&&Math.abs(chain_yx.at(-1).x-CELL_X)<=1)/*位置チェック*/{
119111
if(chain_info.color==CELL_COLOR&&!chain_yx.some(e => e.x == CELL_X && e.y == CELL_Y))/*条件チェック*/{
@@ -127,7 +119,7 @@ function onmouce_cell(cell){
127119
function chain_toggler(cell){
128120
if(!chainable)return;
129121
const [CELL_Y,CELL_X] = [cell.target.parentNode.rowIndex,cell.target.cellIndex];
130-
const CELL_COLOR = puz_board[CELL_Y][CELL_X][0].type;
122+
const CELL_COLOR = DATA.board.obj[CELL_Y][CELL_X][0];
131123
if(chain_now){//チェイン終了時の処理
132124
chain_now=false;
133125
if(!(chain_info.count<SHORTEST_CHAIN)){
@@ -139,13 +131,13 @@ function chain_toggler(cell){
139131
const NEWY=pos.y+dy;
140132
for(let dx=-1;dx<=1;dx++){
141133
const NEWX=pos.x+dx;
142-
if(!puz_board[NEWY]?.[NEWX])continue;//範囲内か?
134+
if(!DATA.board.obj[NEWY]?.[NEWX])continue;//範囲内か?
143135
if(!adj_list.some(e => e.x == NEWX && e.y == NEWY))adj_list.push({y : NEWY,x : NEWX});
144136
}
145137
}
146138
});
147139
adj_list.forEach(function(pos){
148-
is_adj_break(puz_board[pos.y][pos.x][0].type) && break_obj(pos.y,pos.x,false);
140+
is_adj_break(DATA.board.obj[pos.y][pos.x][0]) && break_obj(pos.y,pos.x,false);
149141
});
150142
update_display();
151143
falling_orb();

0 commit comments

Comments
 (0)