Skip to content

Commit 805289e

Browse files
committed
コンテニューを実装
1 parent 4a33b26 commit 805289e

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

Script/puzzle.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,23 @@ export default () => {
44
const [BASE_SCORE,SCORE_EXPONENT]=[100,1.5];
55
const ANIM_SPEED=100;
66
const SHORTEST_CHAIN=3;
7+
const CONTINUE_BONUS=5;
78
const MAIN_BOARD = document.getElementById('puz_board');
89
const DIV_PUZ_DISPLAY = document.getElementById('puz_display');
910
const DIV_PUZ_INFO = document.getElementById('puz_info');
1011
const DIV_TARGET_INFO = document.getElementById('target_info');
1112
const [ALT_ORB,ALT_OBJECT,ALT_FIELD] = ["□🔴🔵🟢🟡🟣","□🧱🌸","□🥬"];
12-
const ENUM_STATUS = Object.freeze({
13-
CHAINING : 0,
14-
IDLE : 1,
15-
ANIMATION : 2
16-
});
13+
const ENUM_STATUS = Object.freeze({CHAINING : 0,IDLE : 1,ANIMATION : 2});
1714
// SECTOR_2:変数群
1815
let game_state = ENUM_STATUS.CHAINING;
1916
let chain_color = null;
20-
let chain_yx = new Array();//[i].(x | y)
21-
let adj_list = new Array();//[i].(y | x)
17+
let chain_yx = [];//[i].(x | y)
2218
//SECTOR_2.5:準const変数群
23-
let PUZ_BOARD_BONE=new Array();
19+
let PUZ_BOARD_BONE=[];
2420
let DATA={};
2521
// SECTOR 3 : 関数群
2622
/**@todo Dateオブジェクトなど、一部のオブジェクトがコピーできないのでその対策。 */
2723
const object_copy = obj => JSON.parse(JSON.stringify(obj));
28-
2924
/**
3025
* Array.everyのobject版です。
3126
* @param {object} obj
@@ -54,6 +49,7 @@ export default () => {
5449
const is_adj_break = obj => [-2].includes(getType(obj));
5550
const dest_sync = field => [1].includes(getType(field));
5651
const alt_text = (type,isobj) => isobj?(type<0?ALT_OBJECT[-type]:ALT_ORB[type]):ALT_FIELD[type];
52+
const get_img = (type,isobj) => `<img src="Pictures/${isobj?"Orbs":"Fields"}/${type}.svg",width="40" height="40" alt="${alt_text(type, isobj)}">`;
5753
const update_cell = (y,x) =>{
5854
const CELL=PUZ_BOARD_BONE[y][x];
5955
[CELL.querySelector("img.object").src,CELL.querySelector("img.field").src,
@@ -66,8 +62,9 @@ export default () => {
6662
DIV_PUZ_INFO.innerText = `Score : ${DATA.target.score} Hand : ${DATA.target.hand}`;
6763
}
6864
/** @todo 文字サイズ */
69-
const updateTarget = () => DIV_TARGET_INFO.innerHTML = Object.keys(DATA.target.obj).map(str => Number(str)).map(type => `<img src="Pictures/Orbs/${type}.svg",width="40" height="40" alt="${alt_text(type, true)}">` + "x" + String(DATA.target.obj[type])).toString() + "," +
70-
Object.keys(DATA.target.field).map(str => Number(str)).map(type => `<img src="Pictures/Fields/${type}.svg",width="40" height="40" alt="${alt_text(type, false)}">` + "x" + String(DATA.target.field[type])).toString();
65+
const updateTarget = () => DIV_TARGET_INFO.innerHTML =
66+
Object.keys(DATA.target.obj).map(Number).map(type => get_img(type,true)+ "x" + String(DATA.target.obj[type])).toString() + "," +
67+
Object.keys(DATA.target.field).map(Number).map(type => get_img(type,false) + "x" + String(DATA.target.field[type])).toString();
7168

7269
const obj_erase = obj => [obj[0],obj[1]] = [0,0];
7370
const break_obj = (y,x,ischain,isobj=true) => {
@@ -119,6 +116,7 @@ export default () => {
119116
chain_yx.push({x : CELL_X,y : CELL_Y});
120117
}
121118
const chain_over = () => {
119+
let adj_list = [];
122120
if(!(chain_yx.length<SHORTEST_CHAIN)){
123121
addScore(chain_yx.length**SCORE_EXPONENT);
124122
DATA.target.hand--;
@@ -139,8 +137,12 @@ export default () => {
139137
game_state = ENUM_STATUS.IDLE;
140138
chain_yx.forEach(pos => PUZ_BOARD_BONE[pos.y][pos.x].querySelector("img").classList.remove("chaining"));
141139
chain_color = null;
142-
adj_list = chain_yx = [];
140+
chain_yx = [];
143141
if(DATA.target.hand <= 0){
142+
if(confirm(`コンテニューしますか?(手数+${CONTINUE_BONUS})`)){
143+
DATA.target.hand+=CONTINUE_BONUS;
144+
return;
145+
}
144146
alert(`ゲームオーバー! スコアは${DATA.target.score}でした!`);
145147
endscene();
146148
}
@@ -187,7 +189,7 @@ export default () => {
187189
const board_init = () => {
188190
load_board();
189191
falling_orb();
190-
adj_list=chain_yx=[];
192+
chain_yx=[];
191193
update_display();
192194
updateTarget();
193195
}
@@ -196,8 +198,7 @@ export default () => {
196198
if(isNaN(StageID))endscene(TypeError(`GUARD! StageID ${StageID} is NaN`));
197199
const DATALINK = "../Data/Stage/"+StageID+".js";
198200
DIV_PUZ_DISPLAY.style.display="block";
199-
import(DATALINK)
200-
.then(x => {DATA = object_copy(x.default) ; board_init()}).catch(x => endscene(x));
201+
import(DATALINK).then(x => {DATA = object_copy(x.default) ; board_init()}).catch(endscene);
201202
}
202203
document.getElementById('move_GAME').onclick=startgame;
203204
}

0 commit comments

Comments
 (0)