Maison > interface Web > Tutoriel H5 > le corps du texte

Exemple de code d'utilisation de Canvas pour implémenter un jeu de backgammon

不言
Libérer: 2019-02-13 14:40:10
avant
3201 Les gens l'ont consulté

Le contenu de cet article concerne l'exemple de code d'implémentation du jeu de backgammon sur toile. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Effet

Exemple de code dutilisation de Canvas pour implémenter un jeu de backgammon

Code

nbsp;html>


    <meta>
    <title>五子棋</title>
    <script></script>


<canvas></canvas>
<script>
    (function () {    // 画布绘制
        let canvas = document.getElementById("canvas");
        let context = canvas.getContext("2d");
        context.beginPath();
        for (let i = 0; i < 19; i++) {
            // 竖线绘制
            context.moveTo(10 + i * 20, 10);
            context.lineTo(10 + i * 20, 370);
            // 横线绘制
            context.moveTo(10, 10 + i * 20);
            context.lineTo(370, 10 + i * 20);
        }
        context.stroke();
    })();
    // 鼠标单击
    let blorwh = 0;
    // 定义用于判断落子的二维数组
    let matrix = new Array(19);
    // 进行赋值
    for(let i = 0; i < 19; i++){
        matrix[i] = new Array(19);
        for(let j = 0; j < 19; j++){
            matrix[i][j] = 0;
        }
    }
    $("#canvas").click((event) => {
        // 每次落子的时候取反
        blorwh = !blorwh;
        console.log(event.offsetX);
        let canvas = document.getElementById("canvas");
        let context = canvas.getContext("2d");
        // 保存要落子的坐标
        let arcPosX, arcPosY;
        // 保存棋子在数组中的位置
        let mtxPosX, mtxPosY;
        // 和每一条线进行比较,如果相差10个像素以内,即,靠近
        for(let x = 0; x < 19; x++){
            if(Math.abs(event.offsetX - (10 + x * 20)) < 10){
                // 获得需要骡子的x
                arcPosX = 10 + x * 20;
                mtxPosX = x;
            }
            if(Math.abs(event.offsetY - (10 + x * 20)) < 10){
                // 获得需要的y
                arcPosY = 10 + x * 20;
                mtxPosY = x;
            }
        }
        // 画出棋子
        // 落子为空,进行绘制,反之不绘制
        if(matrix[mtxPosX][mtxPosY] == 0) {
            context.beginPath();
            if (blorwh) {
                context.fillStyle = "white";
                context.arc(arcPosX, arcPosY, 10, 0, Math.PI * 2, false);
                context.stroke();
                // 白子为1
                matrix[mtxPosX][mtxPosY] = 1;
            } else {
                context.fillStyle = "black";
                context.arc(arcPosX, arcPosY, 10, 0, Math.PI * 2, false);
                // 黑子为2
                matrix[mtxPosX][mtxPosY] = 2;
            }
            context.fill();
        }
        // 获胜检测
        if(matrix[mtxPosX - 1][mtxPosY] == matrix[mtxPosX][mtxPosY] &&
            matrix[mtxPosX - 2][mtxPosY] == matrix[mtxPosX][mtxPosY]  &&
                matrix[mtxPosX -3][mtxPosY] == matrix[mtxPosX][mtxPosY]  &&
                    matrix[mtxPosY - 4][mtxPosY] == matrix[mtxPosX][mtxPosY]){
            if(matrix[mtxPosX][mtxPosY] == 1){
                alert("白方获胜");
            }else{
                alert("黑方获胜");
            }
        }
    })
</script>

Copier après la connexion

Idée

Créer un tableau pour enregistrer La position du backgammon est suffisante.
Gagner ou perdre peut être jugé par traversée
Pour répéter un mouvement d'échecs, jugez simplement s'il y a une pièce d'échecs dans la position enregistrée du tableau
Jugez si elle tombe sur la ligne d'intersection ou sur des points proches. La différence est inférieure à une certaine valeur, le coup d'échecs sera effectué.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal