function HTMLActuator() { this.tileContainer = document.querySelector(".tile-container"), this.scoreContainer = document.querySelector(".score-container"), this.bestContainer = document.querySelector(".best-container"), this.messageContainer = document.querySelector(".game-message"), this.steps_num = 0, this.score = 0 } HTMLActuator.prototype.actuate = function(e, t) { var n = this; window.requestAnimationFrame(function() { n.clearContainer(n.tileContainer), e.cells.forEach(function(e) { e.forEach(function(e) { e && n.addTile(e) }) }), n.updateScore(t.score), n.updateBestScore(t.bestScore), t.terminated && (t.over ? n.message(!1) : t.won && n.message(!0)) }) }, HTMLActuator.prototype.continueGame = function() { this.clearMessage() }, HTMLActuator.prototype.clearContainer = function(e) { while (e.firstChild) e.removeChild(e.firstChild) }, HTMLActuator.prototype.addTile = function(e) { var t = this, n = document.createElement("div"), r = document.createElement("div"), i = e.previousPosition || { x: e.x, y: e.y }, s = this.positionClass(i), o = ["tile", "tile-" + e.value, s]; e.value > 512 && o.push("tile-super"), this.applyClasses(n, o), r.classList.add("tile-inner"); switch (e.value) { case 2: r.textContent = "我要对象"; break; case 4: r.textContent = "苹果手机"; break; case 8: r.textContent = "出国旅游"; break; case 16: r.textContent = "看世界杯"; break; case 32: r.textContent = "英雄联盟"; break; case 64: r.textContent = "德玛西亚"; break; case 128: r.textContent = "我在沭阳"; break; case 256: r.textContent = "发现梦想" break; case 512: r.textContent = "梦想成真" } e.previousPosition ? window.requestAnimationFrame(function() { o[2] = t.positionClass({ x: e.x, y: e.y }), t.applyClasses(n, o) }) : e.mergedFrom ? (o.push("tile-merged"), this.applyClasses(n, o), e.mergedFrom.forEach(function(e) { t.addTile(e) })) : (o.push("tile-new"), this.applyClasses(n, o)), n.appendChild(r), this.tileContainer.appendChild(n) }, HTMLActuator.prototype.applyClasses = function(e, t) { e.setAttribute("class", t.join(" ")) }, HTMLActuator.prototype.normalizePosition = function(e) { return { x: e.x + 1, y: e.y + 1 } }, HTMLActuator.prototype.positionClass = function(e) { return e = this.normalizePosition(e), "tile-position-" + e.x + "-" + e.y }, HTMLActuator.prototype.updateScore = function(e) { this.clearContainer(this.scoreContainer); var t = e - this.score; this.score = e, this.scoreContainer.textContent = this.score, share_score = this.score; if (t > 0) { var n = document.createElement("div"); n.classList.add("score-addition"), n.textContent = "+" + t, this.scoreContainer.appendChild(n) } }, HTMLActuator.prototype.updateBestScore = function(e) { this.bestContainer.textContent = e }, HTMLActuator.prototype.message = function(e) { var t = e ? "game-won": "game-over", n = e ? "挑战成功!": "挑战失败!"; this.messageContainer.classList.add(t), this.messageContainer.getElementsByTagName("p")[0].textContent = n }, HTMLActuator.prototype.clearMessage = function() { this.messageContainer.classList.remove("game-won"), this.messageContainer.classList.remove("game-over") }