diff --git a/src/app.js b/src/app.js
index f9587cc..cb6b550 100644
--- a/src/app.js
+++ b/src/app.js
@@ -7,7 +7,6 @@ import Number from './components/number/index.vue'
import Point from './components/point/index.vue'
import Keyboard from './components/keyboard/index.vue'
import Logo from './components/logo/index.vue'
-import { List } from 'immutable'
import Matrix from './components/matrix/index.vue'
import { mapState } from 'vuex'
import { transform, lastRecord, speeds, i18n, lan } from './unit/const'
diff --git a/src/components/matrix/index.js b/src/components/matrix/index.js
index a97107c..62fa347 100644
--- a/src/components/matrix/index.js
+++ b/src/components/matrix/index.js
@@ -1,4 +1,3 @@
-import { List, fromJS } from 'immutable'
import { isClear } from '../../unit/'
import { fillLine, blankLine } from '../../unit/const'
import states from '../../control/states'
@@ -20,7 +19,7 @@ export default {
} else {
matrix = this.getResult()
}
- matrix = matrix.toJS()
+
return (
{matrix.map((p, k1) =>
@@ -62,43 +61,41 @@ export default {
}
const cur = props.cur
const shape = cur && cur.shape
- const xy = fromJS(cur && cur.xy)
- let matrix = fromJS(props.propMatrix)
+ const xy = cur && cur.xy
+ let matrix = JSON.parse(JSON.stringify(props.propMatrix))
const clearLines = this.clearLines
if (clearLines) {
const animateColor = this.animateColor
clearLines.forEach(index => {
- matrix = matrix.set(
- index,
- List([
- animateColor,
- animateColor,
- animateColor,
- animateColor,
- animateColor,
- animateColor,
- animateColor,
- animateColor,
- animateColor,
- animateColor
- ])
- )
+ matrix[index]=[
+ animateColor,
+ animateColor,
+ animateColor,
+ animateColor,
+ animateColor,
+ animateColor,
+ animateColor,
+ animateColor,
+ animateColor,
+ animateColor
+ ]
+
})
} else if (shape) {
shape.forEach((m, k1) =>
m.forEach((n, k2) => {
- if (n && xy.get(0) + k1 >= 0) {
+ if (n && xy[0] + k1 >= 0) {
// 竖坐标可以为负
- let line = matrix.get(xy.get(0) + k1)
+ let line = matrix[xy[0]+k1]
let color
- if (line.get(xy.get(1) + k2) === 1 && !clearLines) {
+ if (line[xy[1] + k2] === 1 && !clearLines) {
// 矩阵与方块重合
color = 2
} else {
color = 1
}
- line = line.set(xy.get(1) + k2, color)
- matrix = matrix.set(xy.get(0) + k1, line)
+ line[xy[1] + k2]=color
+ matrix[xy[0] + k1]=line
}
})
)
@@ -129,17 +126,19 @@ export default {
},
over(nextProps) {
let overState = this.getResult(nextProps)
- this.overState = overState
+
+ this.overState = JSON.parse(JSON.stringify(overState))
const exLine = index => {
if (index <= 19) {
- overState = overState.set(19 - index, List(fillLine))
+ overState[19 - index]=fillLine
} else if (index >= 20 && index <= 39) {
- overState = overState.set(index - 20, List(blankLine))
+ overState[index - 20]=blankLine
} else {
states.overEnd()
return
}
- this.overState = overState
+ this.overState = JSON.parse(JSON.stringify(overState))
+ // console.log(JSON.stringify(overState))
}
for (let i = 0; i <= 40; i++) {
diff --git a/src/control/states.js b/src/control/states.js
index b27a811..b449acd 100644
--- a/src/control/states.js
+++ b/src/control/states.js
@@ -7,7 +7,6 @@ import {
clearPoints,
eachLines
} from '../unit/const'
-const { fromJS, List } = require('immutable')
import { music } from '../unit/music'
const getStartMatrix = startLines => {
@@ -26,27 +25,27 @@ const getStartMatrix = startLines => {
line.splice(index, 0, 0)
}
- return List(line)
+ return line
}
- let startMatrix = List([])
+ let startMatrix = []
for (let i = 0; i < startLines; i++) {
if (i <= 2) {
// 0-3
- startMatrix = startMatrix.push(getLine(5, 8))
+ startMatrix.push(getLine(5, 8))
} else if (i <= 6) {
// 4-6
- startMatrix = startMatrix.push(getLine(4, 9))
+ startMatrix.push(getLine(4, 9))
} else {
// 7-9
- startMatrix = startMatrix.push(getLine(3, 9))
+ startMatrix.push(getLine(3, 9))
}
}
for (let i = 0, len = 20 - startLines; i < len; i++) {
// 插入上部分的灰色
- startMatrix = startMatrix.unshift(List(blankLine))
+ startMatrix.unshift(blankLine)
}
- return startMatrix.toJS()
+ return startMatrix
}
const states = {
@@ -82,16 +81,16 @@ const states = {
store.commit('moveBlock', next)
states.fallInterval = setTimeout(fall, speeds[state.speedRun - 1])
} else {
- let matrix = fromJS(state.matrix)
+ let matrix = JSON.parse(JSON.stringify(state.matrix))
const shape = cur && cur.shape
- const xy = fromJS(cur && cur.xy)
+ const xy = cur && cur.xy
shape.forEach((m, k1) =>
m.forEach((n, k2) => {
- if (n && xy.get(0) + k1 >= 0) {
+ if (n && xy[0] + k1 >= 0) {
// 竖坐标可以为负
- let line = matrix.get(xy.get(0) + k1)
- line = line.set(xy.get(1) + k2, 1)
- matrix = matrix.set(xy.get(0) + k1, line)
+ let line = matrix[xy[0] + k1]
+ line[xy[1] + k2]=1
+ matrix[xy[0] + k1]=line
}
})
)
@@ -165,12 +164,13 @@ const states = {
// 消除行
clearLines: (matrix, lines) => {
const state = store.state
- let newMatrix = fromJS(matrix)
+ let newMatrix = JSON.parse(JSON.stringify(matrix))
lines.forEach(n => {
- newMatrix = newMatrix.splice(n, 1)
- newMatrix = newMatrix.unshift(List(blankLine))
+ newMatrix.splice(n, 1)
+ // newMatrix = newMatrix.unshift(List(blankLine))
+ newMatrix.unshift(blankLine)
})
- store.commit('matrix', newMatrix.toJS())
+ store.commit('matrix', newMatrix)
store.commit('moveBlock', { type: state.next })
store.commit('nextBlock', '')
states.auto()
diff --git a/src/control/todo/down.js b/src/control/todo/down.js
index ce98aaa..bda83d9 100644
--- a/src/control/todo/down.js
+++ b/src/control/todo/down.js
@@ -2,7 +2,6 @@ import { want } from '../../unit/'
import event from '../../unit/event'
import states from '../states'
import { music } from '../../unit/music'
-import { fromJS, List } from 'immutable'
const down = store => {
store.commit('key_down', true)
if (store.state.cur !== null) {
@@ -32,16 +31,17 @@ const down = store => {
// store.dispatch(actions.moveBlock(next));
states.auto()
} else {
- let matrix = fromJS(state.matrix)
+ let matrix =JSON.parse(JSON.stringify( state.matrix))
const shape = cur.shape
- const xy = fromJS(cur.xy)
+ const xy = cur.xy
shape.forEach((m, k1) =>
m.forEach((n, k2) => {
- if (n && xy.get(0) + k1 >= 0) {
+ if (n && xy[0] + k1 >= 0) {
// 竖坐标可以为负
- let line = matrix.get(xy.get(0) + k1)
- line = line.set(xy.get(1) + k2, 1)
- matrix = matrix.set(xy.get(0) + k1, line)
+ let line = matrix[xy[0] + k1]
+ line[xy[1] + k2]=1
+
+ matrix[xy[0] + k1]=line
}
})
)
diff --git a/src/control/todo/rotate.js b/src/control/todo/rotate.js
index 50adf32..28d5e0b 100644
--- a/src/control/todo/rotate.js
+++ b/src/control/todo/rotate.js
@@ -5,6 +5,7 @@ import { music } from '../../unit/music'
const down = store => {
store.commit('key_rotate', true)
if (store.state.cur !== null) {
+ console.log("rotate")
event.down({
key: 'rotate',
once: true,
diff --git a/src/control/todo/space.js b/src/control/todo/space.js
index 11a6913..b4010ec 100644
--- a/src/control/todo/space.js
+++ b/src/control/todo/space.js
@@ -2,7 +2,6 @@ import { want } from '../../unit/'
import event from '../../unit/event'
import states from '../states'
import { music } from '../../unit/music'
-import { fromJS, List } from 'immutable'
const down = store => {
store.commit('key_drop', true)
event.down({
@@ -29,7 +28,7 @@ const down = store => {
bottom = cur.fall(index)
index++
}
- let matrix = fromJS(state.matrix)
+ let matrix =JSON.parse(JSON.stringify( state.matrix))
bottom = cur.fall(index - 2)
store.commit('moveBlock', bottom)
const shape = bottom.shape
@@ -38,9 +37,9 @@ const down = store => {
m.forEach((n, k2) => {
if (n && xy[0] + k1 >= 0) {
// 竖坐标可以为负
- let line = matrix.get(xy[0] + k1)
- line = line.set(xy[1] + k2, 1)
- matrix = matrix.set(xy[0] + k1, line)
+ let line = matrix[xy[0] + k1]
+ line[xy[1] + k2]=1
+ matrix[xy[0] + k1]=line
}
})
)
diff --git a/src/unit/block.js b/src/unit/block.js
index 3c6bbb7..ffb06f4 100644
--- a/src/unit/block.js
+++ b/src/unit/block.js
@@ -1,4 +1,3 @@
-import { List, fromJS } from 'immutable'
import { blockShape, origin } from './const'
class Block {
@@ -54,16 +53,18 @@ class Block {
}
}
rotate() {
- const shape = fromJS(this.shape)
- let result = List([])
+ const shape = this.shape
+ let result = []
shape.forEach(m =>
m.forEach((n, k) => {
- const index = m.size - k - 1
- if (result.get(index) === undefined) {
- result = result.set(index, List([]))
+ const index = m.length - k - 1
+ if (result[index] === undefined) {
+ result[index]=[]
}
- const tempK = result.get(index).push(n)
- result = result.set(index, tempK)
+
+ result[index].push(n)
+ const tempK = JSON.parse(JSON.stringify(result[index]))
+ result[index]=tempK
})
)
const nextXy = [
@@ -74,7 +75,7 @@ class Block {
? 0
: this.rotateIndex + 1
return {
- shape: result.toJS(),
+ shape: result,
type: this.type,
xy: nextXy,
rotateIndex: nextRotateIndex,
diff --git a/src/unit/index.js b/src/unit/index.js
index 3b48cfd..16424d2 100644
--- a/src/unit/index.js
+++ b/src/unit/index.js
@@ -1,5 +1,4 @@
import { blockType, StorageKey } from './const'
-import { fromJS, List } from 'immutable'
const hiddenProperty = (() => {
// document[hiddenProperty] 可以判断页面是否失焦
let names = ['hidden', 'webkitHidden', 'mozHidden', 'msHidden']
@@ -13,11 +12,10 @@ const unit = {
return blockType[Math.floor(Math.random() * len)]
},
want(next, matrix) {
- matrix = fromJS(matrix)
// 方块是否能移到到指定位置
const xy = next.xy
- const shape = fromJS(next.shape)
- const horizontal = shape.get(0).size
+ const shape = next.shape
+ const horizontal = shape[0].length
return shape.every((m, k1) =>
m.every((n, k2) => {
if (xy[1] < 0) {
@@ -37,7 +35,7 @@ const unit = {
return false
}
if (n) {
- if (matrix.get(xy[0] + k1).get(xy[1] + k2)) {
+ if (matrix[xy[0] + k1][xy[1] + k2]) {
return false
}
return true
@@ -61,9 +59,7 @@ const unit = {
},
isOver(matrix) {
// 游戏是否结束, 第一行落下方块为依据
- if (List.isList(matrix)) {
- matrix = matrix.toJS()
- }
+
return matrix[0].some(n => !!n)
},
subscribeRecord(store) {
diff --git a/src/vuex/store.js b/src/vuex/store.js
index 2513a75..91da993 100644
--- a/src/vuex/store.js
+++ b/src/vuex/store.js
@@ -6,7 +6,6 @@ import { isFocus } from '../unit/'
import { blankMatrix, lastRecord, maxPoint, blockType } from '../unit/const'
import Block from '../unit/block'
import { hasWebAudioAPI } from '../unit/music'
-const { fromJS, List } = require('immutable')
Vue.use(Vuex)
let clearLinesInitState = lastRecord &&