Skip to content

Commit 3a7d56c

Browse files
committed
外部ファイルから初期盤面の読み込み
1 parent 848dcab commit 3a7d56c

File tree

3 files changed

+50
-30
lines changed

3 files changed

+50
-30
lines changed

Data/Stage/1.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,36 @@
1-
export default {
1+
export default {//ここにパズルの初期情報を入れてください。
22
"size":{
33
"Height" : 10,
44
"Width" : 10
55
},
66
"target":{
7-
"hand":15
7+
"hand":15,
8+
"score":0//将来的にスコアを目標にしたいので+処理の簡約化のため置いとく
9+
},
10+
"board":{
11+
"obj":[
12+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
13+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
14+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
15+
[[-1,9],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1,9]],
16+
[[0,0],[-1,9],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-1,9],[0,0]],
17+
[[0,0],[0,0],[-1,9],[0,0],[0,0],[0,0],[0,0],[-1,9],[0,0],[0,0]],
18+
[[0,0],[0,0],[0,0],[-1,9],[0,0],[0,0],[-1,9],[0,0],[0,0],[0,0]],
19+
[[0,0],[0,0],[0,0],[0,0],[-1,9],[-1,9],[0,0],[0,0],[0,0],[0,0]],
20+
[[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1]],
21+
[[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1],[-2,1]]
22+
],
23+
"field":[
24+
[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],
25+
[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],
26+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
27+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
28+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
29+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
30+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
31+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
32+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],
33+
[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]
34+
]
835
}
936
};

Script/script.js

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ const DATALINK = "../Data/Stage/1.js";
88
// SECTOR_2:変数群
99
let [chain_now,chainable]=[false,false];
1010
let chain_info={color : null,count : 0};
11-
let score=0;
1211
let chain_yx =new Array();//[i].(x | y)
1312
let adj_list = new Array();//[i].(y | x)
14-
let puz_board=new Array();// [y][x].(obj | field).(type | power)
13+
let puz_board=new Array();// [y][x][Layer].(type | power)
1514
//SECTOR_2.5:準const変数群
1615
let PUZ_BOARD_BONE=new Array();
1716
let DATA={};
@@ -32,19 +31,19 @@ const is_adj_break = obj_type => [-2].includes(obj_type);
3231
const dest_sync = field_type => [1].includes(field_type);
3332
const update_cell = (y,x) =>
3433
[PUZ_BOARD_BONE[y][x].querySelector("img.object").src,PUZ_BOARD_BONE[y][x].querySelector("img.field").src] =
35-
[`Pictures/Orbs/${puz_board[y][x].obj.type}.svg`,`Pictures/Fields/${puz_board[y][x].field.type}.svg`];
34+
[`Pictures/Orbs/${puz_board[y][x][0].type}.svg`,`Pictures/Fields/${puz_board[y][x][1].type}.svg`];
3635

3736
function update_display(){
3837
for(let i=0;i<DATA.size.Height;i++)for(let j=0;j<DATA.size.Width;j++)update_cell(i,j);
39-
document.querySelector("#puz_info").innerText = `Score : ${score} Hand : ${DATA.target.hand}`;
38+
document.querySelector("#puz_info").innerText = `Score : ${DATA.target.score} Hand : ${DATA.target.hand}`;
4039
}
4140
function obj_erase(y,x,isobj=true){
42-
const TARGET = isobj?puz_board[y][x].obj:puz_board[y][x].field;
41+
const TARGET = puz_board[y][x][isobj?0:1];
4342
[TARGET.type,TARGET.power] = [0,0];
4443
update_cell(y,x);
4544
}
4645
function load_board(){
47-
puz_board=new Array(DATA.size.Height).fill().map(_=>Array(DATA.size.Width).fill().map(_=>({obj : {type : 0,power : 0},field : {type : 0,power : 0}})));
46+
puz_board=new Array(DATA.size.Height).fill().map(_=>Array(DATA.size.Width).fill().map(_=>([{type : 0,power : 0},{type : 0,power : 0}])));
4847
PUZ_BOARD_BONE=new Array(DATA.size.Height).fill().map(_=>Array(DATA.size.Width));
4948
MAIN_BOARD.innerHTML = null;
5049
for (let i = 0; i < DATA.size.Height; i++) {
@@ -64,28 +63,22 @@ function load_board(){
6463
}
6564
for(let i=0;i < DATA.size.Height;i++){
6665
for(let j=0;j < DATA.size.Width;j++){
67-
if(i==5){
68-
puz_board[i][j].obj.type=-(j%3);
69-
}else if(i>6){
70-
puz_board[i][j].obj.type=-2;
71-
puz_board[i][j].field.type=1;
72-
}
73-
puz_board[i][j].field.power=1;
74-
puz_board[i][j].obj.power=1;
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];
7568
}
7669
}
7770
}
7871
function break_obj(y,x,ischain,isobj=true){
79-
const TARGET = isobj?puz_board[y][x].obj:puz_board[y][x].field;
72+
const TARGET = puz_board[y][x][isobj?0:1];
8073
TARGET.power--;
8174
if(TARGET.power<=0||ischain){
82-
if(!isobj&&TARGET.type==1)score+=BASE_SCORE;
75+
if(!isobj&&TARGET.type==1)DATA.target.score+=BASE_SCORE;
8376
obj_erase(y,x,isobj);
84-
isobj && dest_sync(puz_board[y][x].field.type) && break_obj(y,x,false,false);
77+
isobj && dest_sync(puz_board[y][x][1].type) && break_obj(y,x,false,false);
8578
}
8679
}
8780
function fall_obj(yfrom,xfrom,yto,xto){
88-
const [OBJ_TO,OBJ_FROM] = [puz_board[yto][xto].obj,puz_board[yfrom][xfrom].obj];
81+
const [OBJ_TO,OBJ_FROM] = [puz_board[yto][xto][0],puz_board[yfrom][xfrom][0]];
8982
if(OBJ_TO.type == 0 && fallable(OBJ_FROM.type) ){
9083
[OBJ_TO.type,OBJ_TO.power]=[OBJ_FROM.type,OBJ_FROM.power];
9184
update_cell(yto,xto);
@@ -105,8 +98,8 @@ function falling_orb(){
10598
for(let j=0;j<DATA.size.Width-1;j++)refall=fall_obj(i-1,j,i,j+1)||refall;//R-shift
10699
}
107100
for(let i=0;i<DATA.size.Width;i++){
108-
if(puz_board[0][i].obj.type==0){
109-
puz_board[0][i].obj={type : ~~(Math.random()*ORB_COLORS)+1,power : 1};
101+
if(puz_board[0][i][0].type==0){
102+
puz_board[0][i][0]={type : ~~(Math.random()*ORB_COLORS)+1,power : 1};
110103
refall=true;
111104
}
112105
}
@@ -120,7 +113,7 @@ function falling_orb(){
120113
}
121114
function onmouce_cell(cell){
122115
const [CELL_Y,CELL_X] = [cell.target.parentNode.rowIndex,cell.target.cellIndex];
123-
const CELL_COLOR = puz_board[CELL_Y][CELL_X].obj.type;
116+
const CELL_COLOR = puz_board[CELL_Y][CELL_X][0].type;
124117
if(chain_now){
125118
if(Math.abs(chain_yx.at(-1).y-CELL_Y)<=1&&Math.abs(chain_yx.at(-1).x-CELL_X)<=1)/*位置チェック*/{
126119
if(chain_info.color==CELL_COLOR&&!chain_yx.some(e => e.x == CELL_X && e.y == CELL_Y))/*条件チェック*/{
@@ -134,25 +127,25 @@ function onmouce_cell(cell){
134127
function chain_toggler(cell){
135128
if(!chainable)return;
136129
const [CELL_Y,CELL_X] = [cell.target.parentNode.rowIndex,cell.target.cellIndex];
137-
const CELL_COLOR = puz_board[CELL_Y][CELL_X].obj.type;
130+
const CELL_COLOR = puz_board[CELL_Y][CELL_X][0].type;
138131
if(chain_now){//チェイン終了時の処理
139132
chain_now=false;
140133
if(!(chain_info.count<SHORTEST_CHAIN)){
141-
score+=~~(chain_info.count**SCORE_EXPONENT*BASE_SCORE);
134+
DATA.target.score+=~~(chain_info.count**SCORE_EXPONENT*BASE_SCORE);
142135
DATA.target.hand--;
143136
chain_yx.forEach(function(pos){
144137
break_obj(pos.y,pos.x,true);
145138
for(let dy=-1;dy<=1;dy++){
146139
const NEWY=pos.y+dy;
147140
for(let dx=-1;dx<=1;dx++){
148141
const NEWX=pos.x+dx;
149-
if(!puz_board[NEWY]||!puz_board[NEWY][NEWX])continue;//範囲内か?
142+
if(!puz_board[NEWY]?.[NEWX])continue;//範囲内か?
150143
if(!adj_list.some(e => e.x == NEWX && e.y == NEWY))adj_list.push({y : NEWY,x : NEWX});
151144
}
152145
}
153146
});
154147
adj_list.forEach(function(pos){
155-
is_adj_break(puz_board[pos.y][pos.x].obj.type) && break_obj(pos.y,pos.x,false);
148+
is_adj_break(puz_board[pos.y][pos.x][0].type) && break_obj(pos.y,pos.x,false);
156149
});
157150
update_display();
158151
falling_orb();
@@ -163,7 +156,7 @@ function chain_toggler(cell){
163156
chain_info={count : 0,color : null};
164157
adj_list=chain_yx=[];
165158
if(DATA.target.hand<=0){
166-
alert("ゲームオーバー! スコアは"+score+"でした!");
159+
alert(`ゲームオーバー! スコアは${DATA.target.score}でした!`);
167160
board_init();
168161
}
169162
}else if(CELL_COLOR>0){//チェイン開始の処理
@@ -177,7 +170,7 @@ function board_init(){
177170
console.log(DATA);
178171
load_board();
179172
falling_orb();
180-
score=0;
173+
DATA.target.score=0;
181174
adj_list=chain_yx=[];
182175
update_display();
183176
}

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</head>
1010
<body>
1111
<div id="puz_disp">
12-
<p id="puz_info">Score : 0 Hand : ??</p>
12+
<p id="puz_info">LOADING...</p>
1313
<table class="board" id="puz_board"></table>
1414
</div>
1515
<script src="Script/script.js" type="module"></script>

0 commit comments

Comments
 (0)