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顆棋子可以不同的放到任何乙...