为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

2 回答

let chessBoard = [];
let me = true;

let over = false;
let wins = [];

let myWin = [];
var computerWin = []

for (var i = 0; i < 15; i++) {
    chessBoard[i] = []
    for (var j = 0; j < 15; j++) {
        chessBoard[i][j] = 0
    }
}

for (var i = 0; i < 15; i++) {
    wins[i] = []
    for (var j = 0; j < 15; j++) {
        wins[i][j] = []
    }
}

var count = 0

for (var i = 0; i < 15; i++) {
    for (var j = 0; j < 11; j++) {
        for (k = 0; k < 5; k++) {
            wins[i][j + k][count] = true
        }
        count++
    }
}

for (var i = 0; i < 15; i++) {
    for (var j = 0; j < 11; j++) {
        for (k = 0; k < 5; k++) {
            wins[j + k][i][count] = true
        }
        count++
    }
}

for (var i = 0; i < 11; i++) {
    for (var j = 0; j < 11; j++) {
        for (k = 0; k < 5; k++) {
            wins[i + k][j + k][count] = true
        }
        count++
    }
}

for (var i = 0; i < 11; i++) {
    for (var j = 14; j > 3; j--) {
        for (k = 0; k < 5; k++) {
            wins[i + k][j - k][count] = true
        }
        count++
    }
}

console.log(count)

for (var i = 0; i < count; i++) {
    myWin[i] = 0
    computerWin[i] = 0
}

var chess = document.getElementById('chess')
var context = chess.getContext('2d')

context.strokeStyle = '#BFBFBF'

var logo = new Image()
logo.src = " " //image path
window.onload = function () {
    // context.drawImage(null, 0, 0, 450, 450)
    drawChessBoard()
    // oneStep(0, 0, true)
    // oneStep(1, 1, false)
    // context.beginPath()
    // context.arc(200,200,100,0,2*Math.PI)
    // context.closePath()
    // var gradient = context.createRadialGradient(200,200,50,200,200,20)
    // gradient.addColorStop(0,'#0A0A0A')
    // gradient.addColorStop(1,'#636766')
    // context.fillStyle = gradient
    // context.fill()
}
var drawChessBoard = function () {
    for (var i = 0; i < 15; i++) {
        context.moveTo(15 + i * 30, 15) //15
        context.lineTo(15 + i * 30, 435) //435
        context.stroke()
        context.moveTo(15, 15 + i * 30) //15
        context.lineTo(435, 15 + i * 30) //435
        context.stroke()
    }
}

//
// context.moveTo(0,0)
// context.lineTo(450,450)
// context.stroke()
var oneStep = function (i, j, me) {
    context.beginPath()
    context.arc(15 + i * 30, 15 + j * 30, 13, 0, 2 * Math.PI)
    context.closePath()
    var gradient = context.createRadialGradient(15 + i * 30 + 2, 15 + j * 30 - 2, 13, 15 + i * 30, 15 + j * 30, 0)
    if (me) {
        gradient.addColorStop(0, '#0A0A0A')
        gradient.addColorStop(1, '#636766')
    } else {
        gradient.addColorStop(0, '#D1D1D1')
        gradient.addColorStop(1, '#F9F9F9')
    }
    context.fillStyle = gradient
    context.fill()
}

chess.onclick = function (e) {
    if (over) {
        return
    }
    if (!me) {
        return
    }
    var x = e.offsetX
    var y = e.offsetY
    var i = Math.floor(x / 30)
    var j = Math.floor(y / 30)
    if (chessBoard[i][j] === 0) {
        oneStep(i, j, me)
        // if (me) {
        chessBoard[i][j] = 1

        // } else {
        //     chessBoard[i][j] = 2
        // }

        for (var k = 0; k < count; k++) {
            if (wins[i][j][k]) {
                myWin[k]++
                computerWin[k] = 6
                if (myWin[k] === 5) {
                    window.alert('你赢了')
                    over = true
                }
            }
        }
        if (!over) {
            me = !me
            computerAI()

        }
    }

    // oneStep(i,j,me)

}
var computerAI = function () {
    var myScore = []
    var computerScore = []
    var max = 0
    var u = 0
    var v = 0
    for (var i = 0; i < 15; i++) {
        myScore[i] = []
        computerScore[i] = []
        for (var j = 0; j < 15; j++) {
            myScore[i][j] = 0
            computerScore[i][j] = 0
        }
    }
    for (var i = 0; i < 15; i++) {
        for (var j = 0; j < 15; j++) {
            if (chessBoard[i][j] === 0) {
                for (var k = 0; k < count; k++) {
                    if (wins[i][j][k]) {
                        if (wins[k] === 1) {
                            myScore[i][j] += 200
                        } else if (myWin[k] === 2) {
                            myScore[i][j] += 400
                        } else if (myWin[k] === 3) {
                            myScore[i][j] += 2000
                        } else if (myWin[k] === 4) {
                            myScore[i][j] += 10000
                        }

                        if (computerWin[k] === 1) {
                            computerScore[i][j] += 220
                        } else if (computerWin[k] === 2) {
                            computerScore[i][j] += 420
                        } else if (computerWin[k] === 3) {
                            computerScore[i][j] += 2100
                        } else if (computerWin[k] === 4) {
                            computerScore[i][j] += 20000
                        }
                    }
                }
                if (myScore[i][j] > max) {
                    max = myScore[i][j]
                    u = i
                    v = j
                } else if (myScore[i][j] === max) {
                    if (computerScore[i][j] > computerScore[u][v]) {
                        u = i
                        v = j
                    }

                }
                if (computerScore[i][j] > max) {
                    max = computerScore[i][j]
                    u = i
                    v = j
                } else if (computerScore[i][j] > max) {
                    if (computerScore[i][j] > computerScore[u][v]) {
                        u = i
                        v = j
                    }
                }
            }
        }
    }
    oneStep(u, v, false)
    chessBoard[u][v] = 2
    for (var k = 0; k < count; k++) {
        if (wins[u][v][k]) {
            computerWin[k]++
            myWin[k] = 6
            if (computerWin[k] === 5) {
                window.alert('AI赢了')
                over = true
            }
        }
    }
    if (!over) {
        me = !me
        // computerAI()

    }
}


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求源码啊求源码啊

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信