广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript+canvas实现五子棋游戏
  • 864
分享到

JavaScript+canvas实现五子棋游戏

2024-04-02 19:04:59 864人浏览 独家记忆
摘要

本文实例为大家分享了javascript+canvas实现五子棋游戏的具体代码,供大家参考,具体内容如下 效果截图: 代码实现: <!DOCTYPE html> &l

本文实例为大家分享了javascript+canvas实现五子棋游戏的具体代码,供大家参考,具体内容如下

效果截图:

代码实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta Http-equiv="X-UA-Compatible" content="ie=edge">
    <title>五子棋</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html,body{
            position: relative;
            background-color: #336;
            width: 100%;
            height: 100%;
        }
        p{
            font-size: 20px;
            color: #fff;
            text-align: center;
            padding-top: 20px;
        }
        #canvas{
            position: absolute;
            display: block;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
            background-color: #fff;
            width: 480px;
            height: 480px;
        }
    </style>
</head>
<body>
    <p id="order">该黑棋落子了!</p>
    <canvas id="canvas" width="480" height="480"></canvas>
</body>
<script>
    var p = document.getElementById("order");
    var canvas = document.querySelector("#canvas");
    var context = canvas.getContext('2d');
    var cw,ch,count=0,
        t = canvas.offsetTop,
        l = canvas.offsetLeft;
    var state = new Array();
    ~~function setSize(){
        window.onresize = arguments.callee;
        cw = window.innerWidth;
        ch = window.innerHeight;
        canvas.width = cw;
        canvas.height = ch;
    }
 
    function initArray(state){ 
        for(var i=0;i<15;i++){
            state[i] = new Array();
            for(var j=0;j<15;j++){
                state[i][j] = -1;
            }
        }
    }
 
    function init(){
        //画棋盘
        context.beginPath();
        for(var i=1;i<16;i++){
            context.moveTo(30*i,30);
            context.lineTo(30*i,450);
        }
        for(var i=1;i<16;i++){
            context.moveTo(30,30*i);
            context.lineTo(450,30*i);
        }
        context.stroke();
        //画棋点
        draw(240,240,3);
        draw(120,120,3);
        draw(360,120,3);
        draw(120,360,3);
        draw(360,360,3);    
    }
 
    //画空心圆
    function draw(x,y,r){
        context.beginPath();
        context.arc(x,y,r,0,Math.PI*2);
        context.stroke();
    }
 
    function Chess(){};
 
    Chess.prototype = {
        //画棋子
        drawChess: function(x,y,r){
            this.x = x;
            this.y = y;
            this.r = r;
            if(count == 0){
                context.fillStyle = "black";
                count = 1;
            }
            else{
                context.fillStyle = "white";
                count = 0;
            }
            context.beginPath();
            context.arc(x,y,r,0,Math.PI*2);
            context.fill();
        },
        //判断胜负
        rule: function(ix,iy,s){
            var hc=0,vc=0,rdc=0,luc=0;
 
            //horizontal
            for(var i=ix;i<15;i++){
                if(state[i][iy] != s){
                    break;
                }
                hc++;
            }
            for(var i=ix-1;i>=0;i--){
                if(state[i][iy] != s){
                    break;
                }
                hc++;
            }
            //vertical
            for(var j=iy;j<15;j++){
                if(state[ix][j] != s){
                    break;
                }
                vc++;
            }
            for(var j=iy-1;j>=0;j--){
                if(state[ix][j] != s){
                    break;
                }
                vc++;
            }
        
            //rightdown
            for(var i=ix,j=iy;i<15 && j<15;i++,j++){
                if(state[i][j] != s){
                    break;
                }
                rdc++;
            }
            for(var i=ix-1,j=iy-1;i>=0 && j>=0;i--,j--){
                if(state[i][j] != s){
                    break;
                }
                rdc++;
            }
 
            //leftup
            for(var i=ix,j=iy;i<15 && j>=0;i++,j--){
                if(state[i][j] != s){
                        break;
                    }
                luc++;
            }
            for(var i=ix-1,j=iy+1;i>=0 && j<15;i--,j++){
                if(state[i][j] != s){
                    break;
                }
                luc++;
            }
 
            if(hc == 5 || vc == 5 || rdc == 5 || luc == 5){
                if(s == 0){
                    alert("Black Win!");
                }
                else{
                    alert("White Win!");
                }
 
                //清空画布并初始化画布和棋子状态
                context.clearRect(0,0,480,480);
                p.innerText = "该黑棋落子了!";
                init();
                initArray(state);
            }
        }
 
    }
 
    //点击事件
    canvas.onclick = function(e){
        var w,h;
        w = e.pageX - l;
        h = e.pageY - t;
        w = parseInt((w+15)/30) * 30;
        h = parseInt((h+15)/30) * 30;
        var i = w/30-1;
        var j = h/30-1;
        //棋子冲突检查
        if(state[i][j] == -1){
            var s = count;   
            state[i][j] = count;
            var chess = new Chess();
            chess.drawChess(w,h,14);
            draw(w,h,14);
            if(s == 0){
                p.innerText = "该白棋落子了!";
            }
            else{
                p.innerText = "该黑棋落子了!";
            }
            chess.rule(i,j,s);
        }
    }
    init();
    initArray(state);
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: JavaScript+canvas实现五子棋游戏

本文链接: https://www.lsjlt.com/news/148066.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript+canvas实现五子棋游戏
    本文实例为大家分享了JavaScript+canvas实现五子棋游戏的具体代码,供大家参考,具体内容如下 效果截图: 代码实现: <!DOCTYPE html> &l...
    99+
    2022-11-13
  • Java实现五子棋游戏
    本文实例为大家分享了Java实现五子棋游戏的具体代码,供大家参考,具体内容如下 一、功能分析 五子棋的实现还是较为简单的,通过下期的流程我们可以知道大概要实现一下功能: 1、格界面 ...
    99+
    2022-11-12
  • JavaScript实现网页版五子棋游戏
    本文实例为大家分享了JavaScript实现网页版五子棋游戏的具体代码,供大家参考,具体内容如下 学习js的第三天,跟着老师完成的五子棋小游戏,记录学习成果欢迎大佬们一起分享经验,批...
    99+
    2022-11-12
  • JavaScript实现网页五子棋小游戏
    本文实例为大家分享了JavaScript实现网页五子棋小游戏的具体代码,供大家参考,具体内容如下 设计思路如下: 1.先采用的Math.random()方法决定哪一方先行; 2.设置...
    99+
    2022-11-13
  • 原生JavaScript实现简单五子棋游戏
    本文实例为大家分享了JavaScript实现简单五子棋游戏的具体代码,供大家参考,具体内容如下 HTML页面 注释都很明确了,大家好好学习。 <!DOCTYPE html&...
    99+
    2022-11-12
  • JavaScript实现网页版的五子棋游戏
    本文实例为大家分享了JavaScript实现网页版五子棋游戏的具体代码,供大家参考,具体内容如下 根据毕老师的HTML+CSS+JavaScript教程和下载的一些文档介绍自己在手机...
    99+
    2022-11-13
  • Java实现五子棋游戏(2.0)
    本文实例为大家分享了Java实现五子棋游戏的具体代码,供大家参考,具体内容如下 简介 相比之前,做出了以下修改: 1.新增菜单栏,将重新开始和退出的按钮移到了菜单栏;2.可以实时显示...
    99+
    2022-11-13
  • C++实现五子棋小游戏
    本文实例为大家分享了C++实现五子棋小游戏的具体代码,供大家参考,具体内容如下 思路:先用用system(“color 70”)改变控制台的背景色为灰白色,前...
    99+
    2022-11-13
  • Vue实现五子棋小游戏
    本文实例为大家分享了Vue实现五子棋小游戏的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head>   ...
    99+
    2022-11-13
  • VUE+Canvas实现简单五子棋游戏的全过程
    前言 在布局上,五子棋相比那些目标是随机运动的游戏,实现起来相对简单许多,思路也很清晰,总共分为: (1)画棋盘; (2)监听点击事件画黑白棋子; (3)每次落子之后判断是否有5子相...
    99+
    2022-11-12
  • JavaScript实现简单五子棋游戏的方法
    本篇内容介绍了“JavaScript实现简单五子棋游戏的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文实例为大家分享了JavaScr...
    99+
    2023-06-20
  • JavaScript如何实现网页五子棋小游戏
    这篇文章主要介绍“JavaScript如何实现网页五子棋小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript如何实现网页五子棋小游戏”文章能帮助大家解决问题。设计思路如下:先采用...
    99+
    2023-07-02
  • JavaScript如何实现网页版五子棋游戏
    这篇文章将为大家详细讲解有关JavaScript如何实现网页版五子棋游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本程序主要通过三部分实现:棋盘绘制2.鼠标交互3.输赢判断<!DOCTYPE&n...
    99+
    2023-06-20
  • Android Studio实现五子棋小游戏
    项目目录 一、项目概述二、开发环境三、详细设计1、布局设计2、验证码3、AI人机4、背景音乐 四、运行演示五、项目总结六、源码获取 一、项目概述 五子棋是一种两人对弈的策略型棋类游戏,...
    99+
    2023-10-23
    android studio android ide 安卓app 移动应用开发
  • 基于Python实现五子棋游戏
    本文实例为大家分享了Python实现五子棋游戏的具体代码,供大家参考,具体内容如下 了解游戏的规则是我们首先需要做的事情,如果不知晓规则,那么我们肯定寸步难行。 五子棋游戏规则: 1...
    99+
    2022-11-10
  • python代码实现五子棋游戏
    本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 先上代码  #调用pygame库 import pygame import sys #调...
    99+
    2022-11-10
  • Python实现简易五子棋游戏
    本文实例为大家分享了Python实现五子棋游戏的具体代码,供大家参考,具体内容如下 class CheckerBoard():     '''棋盘类'''     def __ini...
    99+
    2022-11-10
  • QT实现简单五子棋游戏
    本文实例为大家分享了QT实现简单五子棋游戏的具体代码,供大家参考,具体内容如下 FIR.pro #----------------------------------------...
    99+
    2022-11-12
  • java开发实现五子棋游戏
    本文实例为大家分享了java实现五子棋游戏的具体代码,供大家参考,具体内容如下 此游戏具有双人对战功能和人机对战功能 一、游戏界面的实现 一个游戏首先从设计界面开始 1、首先创建一...
    99+
    2022-11-12
  • java实现双人五子棋游戏
    本文实例为大家分享了java实现双人五子棋游戏的具体代码,供大家参考,具体内容如下 通过 上下左右 控制棋盘走动  空格落子   (深度优先搜索) packag...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作