@@ -4,18 +4,17 @@ const [BASE_SCORE,SCORE_EXPONENT]=[100,1.5];
44const ANIM_SPEED = 100 ;
55const SHORTEST_CHAIN = 3 ;
66const MAIN_BOARD = document . querySelector ( "#puz_board" ) ;
7+ const DATALINK = "../Data/Stage/1.js" ;
78// SECTOR_2:変数群
8- let chain_now
9- let chainable = false ;
9+ let [ chain_now , chainable ] = [ false , false ] ;
1010let chain_info = { color : null , count : 0 } ;
1111let score = 0 ;
12- let hand = 0 ;
1312let chain_yx = new Array ( ) ; //[i].(x | y)
1413let adj_list = new Array ( ) ; //[i].(y | x)
1514let puz_board = new Array ( ) ; // [y][x].(obj | field).(type | power)
1615//SECTOR_2.5:準const変数群
1716let PUZ_BOARD_BONE = new Array ( ) ;
18- let [ HEIGHT , WIDTH ] = [ 0 , 0 ] ;
17+ let DATA = { } ;
1918// SECTOR_3:関数マニュアル
2019// fallable(obj_type) : 該当オブジェクトが落下物か確認
2120// is_adj_break(obj_type) : 該当オブジェクトがadj_breakを持つか確認
@@ -36,24 +35,22 @@ function update_cell(y,x){
3635 PUZ_BOARD_BONE [ y ] [ x ] . querySelector ( "img.field" ) . src = 'Pictures/Fields/' + puz_board [ y ] [ x ] . field . type + '.svg'
3736}
3837function update_display ( ) {
39- for ( let i = 0 ; i < HEIGHT ; i ++ ) for ( let j = 0 ; j < WIDTH ; j ++ ) update_cell ( i , j ) ;
40- document . querySelector ( "#puz_info" ) . innerText = "Score : " + score + " Hand : " + hand ;
38+ 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 ;
4140}
4241function obj_erase ( y , x , isobj = true ) {
4342 const TARGET = isobj ?puz_board [ y ] [ x ] . obj :puz_board [ y ] [ x ] . field ;
4443 [ TARGET . type , TARGET . power ] = [ 0 , 0 ] ;
4544 update_cell ( y , x ) ;
4645}
4746function load_board ( ) {
48- [ HEIGHT , WIDTH ] = [ 10 , 10 ] ;
49- hand = 10 ;
50- puz_board = new Array ( HEIGHT ) . fill ( ) . map ( _ => Array ( WIDTH ) . fill ( ) . map ( _ => ( { obj : { type : 0 , power : 0 } , field : { type : 0 , power : 0 } } ) ) ) ;
51- PUZ_BOARD_BONE = new Array ( HEIGHT ) . fill ( ) . map ( _ => Array ( WIDTH ) ) ;
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 } } ) ) ) ;
48+ PUZ_BOARD_BONE = new Array ( DATA . size . Height ) . fill ( ) . map ( _ => Array ( DATA . size . Width ) ) ;
5249 MAIN_BOARD . innerHTML = null ;
53- for ( let i = 0 ; i < HEIGHT ; i ++ ) {
50+ for ( let i = 0 ; i < DATA . size . Height ; i ++ ) {
5451 const TR = document . createElement ( "tr" ) ;
5552 TR . classList . add ( "puz_board_tr" ) ;
56- for ( let j = 0 ; j < WIDTH ; j ++ ) {
53+ for ( let j = 0 ; j < DATA . size . Width ; j ++ ) {
5754 const TD = document . createElement ( "td" ) ;
5855 TD . classList . add ( "inboard" ) ;
5956 TD . onmouseover = onmouce_cell ;
@@ -65,8 +62,8 @@ function load_board(){
6562 }
6663 MAIN_BOARD . appendChild ( TR ) ;
6764 }
68- for ( let i = 0 ; i < HEIGHT ; i ++ ) {
69- for ( let j = 0 ; j < WIDTH ; j ++ ) {
65+ for ( let i = 0 ; i < DATA . size . Height ; i ++ ) {
66+ for ( let j = 0 ; j < DATA . size . Width ; j ++ ) {
7067 if ( i == 5 ) {
7168 puz_board [ i ] [ j ] . obj . type = - ( j % 3 ) ;
7269 } else if ( i > 6 ) {
@@ -102,12 +99,12 @@ function falling_orb(){
10299 let fallseedtimer = null ;
103100 function fall_orb_seed ( ) {
104101 let refall = false ;
105- for ( let i = HEIGHT - 1 ; i > 0 ; i -- ) /*性質上、下から探索したほうがいい*/ {
106- for ( let j = 0 ; j < WIDTH ; j ++ ) refall = fall_obj ( i - 1 , j , i , j ) || refall ; //C-shift
107- for ( let j = 1 ; j < WIDTH ; j ++ ) refall = fall_obj ( i - 1 , j , i , j - 1 ) || refall ; //L-shift
108- for ( let j = 0 ; j < WIDTH - 1 ; j ++ ) refall = fall_obj ( i - 1 , j , i , j + 1 ) || refall ; //R-shift
102+ for ( let i = DATA . size . Height - 1 ; i > 0 ; i -- ) /*性質上、下から探索したほうがいい*/ {
103+ for ( let j = 0 ; j < DATA . size . Width ; j ++ ) refall = fall_obj ( i - 1 , j , i , j ) || refall ; //C-shift
104+ for ( let j = 1 ; j < DATA . size . Width ; j ++ ) refall = fall_obj ( i - 1 , j , i , j - 1 ) || refall ; //L-shift
105+ for ( let j = 0 ; j < DATA . size . Width - 1 ; j ++ ) refall = fall_obj ( i - 1 , j , i , j + 1 ) || refall ; //R-shift
109106 }
110- for ( let i = 0 ; i < WIDTH ; i ++ ) {
107+ for ( let i = 0 ; i < DATA . size . Width ; i ++ ) {
111108 if ( puz_board [ 0 ] [ i ] . obj . type == 0 ) {
112109 puz_board [ 0 ] [ i ] . obj = { type : ~ ~ ( Math . random ( ) * ORB_COLORS ) + 1 , power : 1 } ;
113110 refall = true ;
@@ -142,7 +139,7 @@ function chain_toggler(cell){
142139 chain_now = false ;
143140 if ( ! ( chain_info . count < SHORTEST_CHAIN ) ) {
144141 score += ~ ~ ( chain_info . count ** SCORE_EXPONENT * BASE_SCORE ) ;
145- hand -- ;
142+ DATA . target . hand -- ;
146143 chain_yx . forEach ( function ( pos ) {
147144 break_obj ( pos . y , pos . x , true ) ;
148145 for ( let dy = - 1 ; dy <= 1 ; dy ++ ) {
@@ -165,7 +162,7 @@ function chain_toggler(cell){
165162 } ) ;
166163 chain_info = { count : 0 , color : null } ;
167164 adj_list = chain_yx = [ ] ;
168- if ( hand <= 0 ) {
165+ if ( DATA . target . hand <= 0 ) {
169166 alert ( "ゲームオーバー! スコアは" + score + "でした!" ) ;
170167 board_init ( ) ;
171168 }
@@ -177,13 +174,14 @@ function chain_toggler(cell){
177174 }
178175}
179176function board_init ( ) {
177+ console . log ( DATA ) ;
180178 load_board ( ) ;
181179 falling_orb ( ) ;
182180 score = 0 ;
183181 adj_list = chain_yx = [ ] ;
184182 update_display ( ) ;
185183}
186- board_init ( ) ;
184+ import ( DATALINK ) . then ( x => { DATA = x . default ; board_init ( ) } ) ;
187185//1~:オーブ
188186//0:無空間
189187//~-1:妨害ブロック
0 commit comments