騰訊CDC面試題之五子棋 dom版(ES6)

2021-09-16 14:25:18 字數 2640 閱讀 1305

class gobang , options.gobangstyle || {})

// 棋盤元素

this.lattice =

// 初始化

this.resetandinit()

}// 初始化

resetandinit() = this

// 角色 => 1黑旗子 2白旗

this.role = options.role || this.role || 1

// 是否已分出勝負

this.win = false

// 走棋記錄

this.history =

// 當前步

this.currentstep = 0

// 清空棋子和事件

this.chessmans.onclick = null

this.chessmans.innerhtml = ''

// 初始化

this.drawchessboard()

this.listendownchessman()

this.initchessboardmatrix()

}// 棋盤矩陣

initchessboardmatrix()

}this.checkerboard = checkerboard

}// 刻畫棋盤

drawchessboard() = this

// 棋盤網格

const lattices = array.from(, () => ``).join('')

this.chessboard.classname = `chessboard lattice-$`

this.chessboard.innerhtml = lattices

this.gobang.style.border = `$px solid #ddd`

}// 刻畫棋子

drawchessman(x, y, isblack) = this

const newchessman = document.createelement('div')

newchessman.setattribute('id', `x$-y$-r$`)

newchessman.classname = isblack ? 'chessman black' : 'chessman white'

newchessman.style.width = lattice.width * 0.6

newchessman.style.height = lattice.height * 0.6

newchessman.style.left = (x * lattice.width) - lattice.width * 0.3

newchessman.style.top = (y * lattice.height) - lattice.height * 0.3

// 每次落子結束都要判斷輸贏

settimeout(() => , 0)

}// 落子

listendownchessman(isblack = false)

let = event

x = math.round(x / this.lattice.width)

y = math.round(y / this.lattice.height)

// 空的棋位才可落子

if(this.checkerboard[x][y] !== undefined &&

object.is(this.checkerboard[x][y], 0)) )

// 儲存座標,角色,快照

this.currentstep++

this.role = object.is(this.role, 1) ? 2 : 1}}

}// 判斷輸贏

checkreferee(x, y, role)

// 右斜線

const s2item = _y[y + (x - i)]

if(s2item !== undefined)

})// 當前落棋點所在的x軸/y軸/交叉斜軸,只要有能連起來的5個子的角色即有勝者

;[xcontinuous, ycontinuous, s1continuous, s2continuous].foreach(axis =>

})// 如果贏了,則解綁事件

if(countcontinuous)

}// 悔棋

regretchess() = prev

const targetchessman = document.getelementbyid(`x$-y$-r$`)

targetchessman.parentnode.removechild(targetchessman)

this.checkerboard[prev.x][prev.y] = 0

this.currentstep--

this.role = object.is(this.role, 1) ? 2 : 1}}

}// 撤銷悔棋

revokedregretchess() }}

// 例項化遊戲

const gobanggame = new gobang(

})console.log(gobanggame)

程式設計娛樂之五子棋

奉上五子棋 include using namespace std const int x 21 棋盤行數 const int y 21 棋盤列數 char p x y 定義棋盤 int m 0 定義臨時點,儲存輸入座標 int n 0 void display 輸出棋盤 else if p m n...

五子棋遊戲之eval妙用

今天整理了下,除去配置和空行等,實際ts 在40行左右。先說說思路 棋盤是由 n n個 十 字組成,那麼我去寫了乙個長度為n陣列遍歷,這個陣列的每乙個子陣列包含16個物件,每個物件也就是乙個 十 字,物件key就乙個 color 預設value為 none 雖然就乙個key,但是為了便於以後擴充套件...

宿舍裡的故事之五子棋

宿舍裡的故事之五子棋 描述 宿舍裡好多好多有趣的事!7890653今天看到不知何時流行的五子棋,在宿舍裡拿個本子,畫一些格仔,乙個棋盤就做好了!當7890653把目光放到棋上,突發奇想,呵呵!乙個題目就出來了!在乙個 5 5 的棋盤內,放上n顆棋子,其中 5 n 25 這n顆棋子可以不同的放到任何乙...