connect4-discord
Version:
<h3><a href="https://krypton.sergioesquina.repl.co/npm/discord-c4">Discord-C4</a>, crea un tablero, y checkea una partida de Conecta 4
106 lines (100 loc) • 4.68 kB
JavaScript
function checkBoard(btns, player){
if(!btns || !btns[4] || !btns[4][4] || !btns[3][4] || !btns[2][4] || !btns[1][4] || !btns[0][4]) throw new TypeError("Necesitas adjuntar 5 filas de botónes + 5 columnas de botónes")
if(!player) throw new TypeError("No se puede comprobar quien ganó sin el usuario")
let winner = player
if(!btns[0][0].label) throw new TypeError("Hay un botón no valido")
//Horizontal
if(btns[0][0].label == btns[0][1].label && btns[0][1].label == btns[0][2].label && btns[0][2].label == btns[0][3].label && btns[0][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[1][0].label == btns[1][1].label && btns[1][1].label == btns[1][2].label && btns[1][2].label == btns[1][3].label && btns[1][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[2][0].label == btns[2][1].label && btns[2][1].label == btns[2][2].label && btns[2][2].label == btns[2][3].label && btns[2][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[3][0].label == btns[3][1].label && btns[3][1].label == btns[3][2].label && btns[3][2].label == btns[3][3].label && btns[3][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[4][0].label == btns[4][1].label && btns[4][1].label == btns[4][2].label && btns[4][2].label == btns[4][3].label && btns[4][0].label !== "?") return {
status: "end",
member: winner
}
// Vertical
if(btns[0][0].label == btns[1][0].label && btns[1][0].label == btns[2][0].label && btns[2][0].label == btns[3][0].label && btns[0][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[0][1].label == btns[1][1].label && btns[1][1].label == btns[2][1].label && btns[2][1].label == btns[3][1].label && btns[0][1].label !== "?") return {
status: "end",
member: winner
}
if(btns[0][2].label == btns[1][2].label && btns[1][2].label == btns[2][2].label && btns[2][2].label == btns[3][2].label && btns[0][2].label !== "?") return {
status: "end",
member: winner
}
if(btns[0][3].label == btns[1][3].label && btns[1][3].label == btns[2][3].label && btns[2][3].label == btns[3][3].label && btns[0][3].label !== "?") return {
status: "end",
member: winner
}
if(btns[0][4].label == btns[1][4].label && btns[1][4].label == btns[2][4].label && btns[2][4].label == btns[3][4].label && btns[0][4].label !== "?") return {
status: "end",
member: winner
}
// Diagonal 1
if(btns[3][0].label == btns[2][1].label && btns[2][1].label == btns[1][2].label && btns[1][2].label == btns[0][3].label && btns[3][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[1][1].label == btns[2][2].label && btns[2][2].label == btns[3][3].label && btns[3][3].label == btns[4][4].label && btns[1][1].label !== "?") return {
status: "end",
member: winner
}
if(btns[4][0].label == btns[3][1].label && btns[3][1].label == btns[2][2].label && btns[2][2].label == btns[1][3].label && btns[4][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[3][1].label == btns[2][2].label && btns[2][2].label == btns[1][3].label && btns[1][3].label == btns[0][4].label && btns[3][1].label !== "?") return {
status: "end",
member: winner
}
if(btns[4][1].label == btns[3][2].label && btns[3][2].label == btns[2][3].label && btns[2][3].label == btns[1][4].label && btns[4][1].label !== "?") return {
status: "end",
member: winner
}
// Diagonal 2
if(btns[0][0].label == btns[1][1].label && btns[1][1].label == btns[2][2].label && btns[2][2].label == btns[3][3].label && btns[0][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[1][0].label == btns[2][1].label && btns[2][1].label == btns[3][2].label && btns[3][2].label == btns[4][3].label && btns[1][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[1][0].label == btns[1][2].label && btns[1][2].label == btns[3][2].label && btns[3][2].label == btns[4][3].label && btns[1][0].label !== "?") return {
status: "end",
member: winner
}
if(btns[0][1].label == btns[1][2].label && btns[1][2].label == btns[2][3].label && btns[2][3].label == btns[3][4].label && btns[0][1].label !== "?") return {
status: "end",
member: winner
}
if(btns[1][1].label == btns[2][2].label && btns[2][2].label == btns[3][3].label && btns[3][3].label == btns[4][4].label && btns[1][1].label !== "?") return {
status: "end",
member: winner
}
return {
status: "continue",
member: null
}
}
class checker {
constructor(buttons, player){
return checkBoard(buttons, player)
}
}
module.exports = checker