<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
*
{
padding: 0;
margin: 0 ;
}
canvas
{
background:#0094ff;
display:block;
margin:100px auto;
border-radius:5px;
box-shadow:5px 0 45px #808080;
}
</style>
</head>
<body>
<!--画布-->
<canvas width="450" height="450" id="canvas"></canvas>
<script>
//不确定
var over=false
//不确定
//拿到画板
var chess = document.getElementById("canvas");
//拿到权限。2d是平面
var context = chess.getContext("2d");
context.strokeStyle="#FFF"//调颜色线的
//封装
var drawChessBoard = function () {
for (var i = 0; i < 15; i++) {
context.moveTo(15 + i * 30, 15);//起点
context.lineTo(15 + i * 30, 435);//终点
context.stroke();//划线
context.moveTo(15, 15 + i * 30);//起点
context.lineTo(435, 15 + i * 30);//终点
context.stroke();//划线
}
}
//调用绘制棋盘的方法
drawChessBoard();
//封装
var onstep = function (i,j,me) {
//绘制一个圆形
//开始路径
context.beginPath();
context.arc(15+i*30, 15+j*30, 13, 0, Math.PI * 2);
context.stroke();
//结束路径
context.closePath();
//填充
//context.fillStyle = "#FFF";
//context.fill();
context.stroke();
//设置渐变色
var gradient = context.createLinearGradient(15 + i * 30, 15 + j * 30, 15, 15 + i * 30, 15 + j * 30, 0);
if (me) {
gradient.addColorStop(0, "#0a0a0a");
gradient.addColorStop(1, "#636767");
} else {
gradient.addColorStop(0, "#d1d1d1");
gradient.addColorStop(1, "#ffffff");
}
context.fillStyle = gradient;
context.fill();
}
//调用onstep
//onstep(0, 0,true);
//下棋的方法
var me = true
//定义一个二维数组,判断落盘情况
var chessBoard = [];
for (var i = 0; i < 15; i++) {
chessBoard[i] = [];
for (var j = 0; j < 15; j++) {
chessBoard[j] = [];
}
}
//下棋的方法
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) {
//// if(me){
//// onstep(ix,iy,me);
//// chessBoard[i][j]=1
//// ]else{
//// onstep(ix,iy,me);
//// chessBoard[i][j]=2
//// }
////}
//不确定
if(chessBoard[i][j] == 0){
for(var k=0;k<count;k++){
if(wins[i][j][k]){
mywin[k]++;
computerwin[k]==6;
if(mywin[k]==5){
alert("你赢了");
over=true;
}
}
}
if(!over){
me=!me;
computerAI();
}
}
//不确定
//onstep(ix,iy,me);
me = !me;
}
//定义赢法数组
var wins=[];
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(var 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(var 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(var k=0;k<5;k++){
wins[i+k][j+k][count]=true
}
count++;
}
}
//斜线赢
//for(var i=0;i<11;i++){
// for(var j=0;j<11;j++){
// for(var k=0;k<5;k++){
// wins[i+k][j-k][count]=true
// }
// count++;
// }
//}
//赢法统计数组
var mywin=[];
var computerwin=[];
for (var i=0;i<count;i++){
mywin[i]=0;
computerwin[i]=0
}
/////////计算机的AI做法
var computerAI=function(){
var myscore=[];
var computerscore=[];
var max=0;//保存最高分
var u=0;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(computerscore[i][j]=0){
for(var k=0;k<count;k++){
if(wins[i][j][k]){
if(mywin[k]==1){
myscore[i][j]+=200
}else if(mywin[k]==2){
myscore[i][j]+=400
}else if(mywin[k]==3){
myscore[i][j]+=800
}else if(mywin[k]==4){
myscore[i][j]+=1200
}
//计算机本身
if(computerwin[k]==1){
computerscore[i][j]+=200
}else if(computerwin[k]==2){
computerscore[i][j]+=400
}else if(computerwin[k]==3){
computerscore[i][j]+=800
}else if(computerwin[k]==4){
computerscore[i][j]+=1200
}
}
}
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(myscore[i][j]>myscore[u][v]){
u=i;
没有合适的资源?快使用搜索试试~ 我知道了~
wuziqi.zip_五子棋 js_五子棋js
共42个文件
cs:8个
config:6个
cache:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 22 浏览量
2022-09-23
18:01:50
上传
评论
收藏 47KB ZIP 举报
温馨提示
本源代码可以实现js基于AI算法实现五子棋小程序
资源推荐
资源详情
资源评论
收起资源包目录
wuziqi.zip (42个子文件)
五子棋(完)
css
shiyan
shiyan
bin
shiyan.pdb 8KB
shiyan.dll 4KB
Web.config 356B
Images
b.png 751B
w.png 526B
obj
Debug
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
shiyan.csproj.FileListAbsolute.txt 406B
DesignTimeResolveAssemblyReferencesInput.cache 8KB
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
shiyan.pdb 8KB
shiyan.csprojResolveAssemblyReference.cache 3KB
TempPE
shiyan.dll 4KB
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
Web.Debug.config 1KB
shiyan.csproj 5KB
Web.Release.config 1KB
shiyan.csproj.user 1KB
HtmlPage1.html 5KB
Properties
AssemblyInfo.cs 1KB
shiyan.v11.suo 19KB
TestResults
shiyan.sln 908B
images
新建文本文档.txt 9KB
fivechess.html 0B
WebApplication1
WebApplication1
bin
WebApplication1.dll 4KB
WebApplication1.pdb 8KB
Web.config 356B
obj
Debug
WebApplication1.csprojResolveAssemblyReference.cache 3KB
WebApplication1.csproj.FileListAbsolute.txt 942B
TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 0B
WebApplication1.dll 4KB
WebApplication1.pdb 8KB
DesignTimeResolveAssemblyReferencesInput.cache 8KB
TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 0B
TempPE
TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 0B
Web.Debug.config 1KB
Web.Release.config 1KB
WebApplication1.csproj 5KB
WebApplication1.csproj.user 1KB
HtmlPage1.html 9KB
Properties
AssemblyInfo.cs 1KB
TestResults
WebApplication1.sln 935B
WebApplication1.v11.suo 41KB
js
共 42 条
- 1
资源评论
邓凌佳
- 粉丝: 65
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功