五子棋——从棋谱到人机对战

2023-11-02 22:50
文章标签 人机 五子棋 对战 棋谱

本文主要是介绍五子棋——从棋谱到人机对战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、棋谱的绘制

  (1),这里主要是用到html5中的canvas标签,他代表画布的意思。定义一个canvas标签,给他的一个宽度和高度,就相当于准备好画画的画布。因为canvas是一个行内标签,所以要让其水平居中,只有一个margin:0 auto是不够的,还要配合display:block将其变为块级标签后才能水平居中。

  (2),利用js加载一张水印图片

    var img=new Image();

    img.src="图片的路径";

    img.οnlοad=function(){

      context.drawImage(img,left,top,right,bottom);//图片  左上点坐标   右下点坐标

    };

  (3),就要利用js去在画布上实现棋谱的绘制。分为三个步骤:

    ①拿到画布这个对象 var ocanvas=document.getElementById("canvas的id名字");

    ②获取绘画的权限  var context=ocanvas.getContext("2d");//因为画的是平面图,所以选择2d

    ③开始绘画  

      i:设置起点context.moveTo(x,y);  

      ii:设置终点context.lineTo(x,y);  

      iii:设置画线颜色context.strokeStyle("颜色代码");  

      iV:开始画线context.stroke();  

  (4),js实现棋子的绘制,棋子的绘制简单来说就是画圆

      开始路径:context.beginPath();

      画圆  :context.arc(x,y,r,0,2*Math.PI);//圆心横坐标  圆心纵坐标   半径(默认px) 0  周长

      结束路径:context.closePath();

      画一个黑色棋子,需要填充色:context.filleStyle="颜色代码";context.fill();

      开始绘画:context.stroke();

    这样的话就能画出一个黑色的棋子,可是这样的棋子没有立体感,只是一个黑色的圆。如果一直画圆,从外圆到内圆,让其有不同的填充色的话,就会有立体感了。

      开始路径:context.beginPath();

      画圆  :context.arc(x,y,r,0,2*Math.PI);//圆心横坐标  圆心纵坐标   半径(默认px) 0  周长

      结束路径:context.closePath();

      设置一个渐变色:var gradient=context.createRadialGradient(x,y,R,x,y,0);//从最外圆画到最内圆
                  gradient.addColorStop(0,"#0a0a0a");
                  gradient.addColorStop(1,"#636767");

      画一个黑色棋子,需要填充色:context.filleStyle=gradient;context.fill();

      开始绘画:context.stroke();

2、最终效果图

3、实现人工智能——人机大战

转载于:https://www.cnblogs.com/sylz/p/5670152.html

这篇关于五子棋——从棋谱到人机对战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/333844

相关文章

8阶段项目:五子棋(附带源码)

8阶段项目:五子棋 8.1-技术实现 1.静态变量 静态变量只能定义在类中,不能定义在方法中。静态变量可以在static修饰的方法中使用,也可以在非静态的方法中访问。主要解决在静态方法中不能访问非静态的变量。 2.静态方法 静态方法就相当于一个箱子,只是这个箱子中装的是代码,需要使用这些代码的时候,就把这个箱子放在指定的位置即可。   /*** 静态变量和静态方法*/public cl

文心快码前端工程师观点分享:人机协同新模式的探索之路(三)

本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会·杭州站·105期线下沙龙活动上,从一款文心快码(Baidu Comate)前端工程师的角度,分享了关于智能研发工具本身的研发历程和理念。 以下视频是关于【人机协同新模式的探索之路】的观点三。 人机协同新模式的探索之路(三) 经纬说: 那么第三个阶段,我们会进一步的去探索

智源研究院推出全球首个包含文生视频的模型对战评测服务

2024年9月4日,智源研究院推出全球首个包含文生视频的面向用户开放的模型对战评测服务——FlagEval大模型角斗场,覆盖国内外约40款大模型,支持语言问答、多模态图文理解、文生图、文生视频四大任务的自定义在线或离线盲测,包含简单理解、知识应用、代码能力、推理能力多种预设问题。除网页端,该服务还率先开放了国内首个移动端访问入口,为用户提供高效便捷的模型对战评测体验。 秉承FlagEval评

[期末]MVC模式写一个Java五子棋(含完整源码及简单AI)

GobangGame 一个下五子棋的java小程序 本程序参考翁恺老师细胞模拟机的控制模式编写 概述及目标 五子棋是一种两人对弈的纯策略型棋类游戏,通常双方分别使用两色的棋子,下在棋盘上,先形成5子连线者获胜。 本程序有命令行界面与图形化界面,用户通过相应方式输入下子位置后与Robot进行对战。 MVC 模式 本小程序尝试使用MVC 模式编写。 MVC 模式代表 M

文心快码前端工程师观点分享:人机协同新模式的探索之路(一)

🎁👉点击进入文心快码 Baidu Comate 官网,体验智能编码之旅,还有超多福利!🎁 本系列视频来自百度工程效能部的前端研发经理杨经纬,她在由开源中国主办的“AI编程革新研发效能”OSC源创会·杭州站·105期线下沙龙活动上,从一款文心快码(Baidu Comate)前端工程师的角度,分享了关于智能研发工具本身的研发历程和理念。 以下视频是关于【人机协同新模式的探索之路】

五子棋游戏中判断胜负的C++源代码

今天在看《精通Windows Sockets 网络开发——基于Visual C++》(孙海民 编著,人民邮电出版社出版)这本书的时候,有一个网络五子棋游戏的实例,个人觉得除了服务器和客户端通信、管理用户列表之外,在每一步中判断黑方和白方哪一方获胜是这个游戏程序的关键。所以将源代码贴在这里,供大家学习参考:         说明:这个程序不能直接运行,只是说明判断胜负的算法。

五子棋理解C++思想

双人五子棋项目目录: class Game {public:Game();void init();bool waitPlayerPutChess(Player* player, int& oldi, int& oldj);void draw();void play();bool isOver(int playerId);public:int whoWin = -1; // 谁赢了(0:白棋

BAT 实现五子棋人机对战

🚀欢迎互三👉:程序猿方梓燚 💎💎 🚀关注博主,后期持续更新系列文章 🚀如果有错误感谢请大家批评指出,及时修改 🚀感谢大家点赞👍收藏⭐评论✍ 引言 嘿,同学们!今天我们来认识一下“BAT”。在我们讨论的这个五子棋人机对战程序里,“BAT”可不是大家熟悉的某个大公司哦,而是指一种特殊的文件类型——批处理文件(Batch File)。 批处理文件呢,就像是一个魔法盒子

【C语言小项目】五子棋游戏

目录 前言 一、游戏规则 1.功能分析 2.玩法分析 3.胜负判定条件 二、游戏实现思路 三、代码实现与函数封装 1.项目文件创建 2.头文件说明 3.函数封装  1)菜单实现  2)进度条实现  3)main函数实现  4)Game函数  5)ShowBoard函数实现 6)PlayerMove函数实现 7)ChessCount函数实现  8)IsOver函数

《浔川 AI 五子棋 v5.0 将延迟上线》——浔川官方

《浔川 AI 五子棋 v5.0 将延迟上线》 亲爱的各位玩家: 大家好! 我们怀着满心的期待与激动,原计划在近期为大家带来全新升级的浔川 AI 五子棋 v5.0 版本。然而,非常抱歉地通知大家,由于在开发过程中遇到了一些不可预见的技术难题和优化需求,浔川 AI 五子棋 v5.0 将延迟上线。 我们深知大家对于新版本的热切期盼,每一次的版本更新都是我们对游戏品质的不懈追求和对玩家体验的高度重