项目结项后的一星期又两天后,我又有了写些优雅代码的欲望。在我的记忆中,
AI,在这个领域,我已近乎白痴,剪枝与寻路两种剑法,就在我离开校园之后,连同那蓝天碧草,相忘于江湖。江湖中只有
SSH,
只有
SQL,只有汽车尾气,只有路人甲
。
在计算机语言的圣经中,hello world
永远写在第一页。如果没有翻开过这一页,就如少男没有翻开过少女的裙子一样充满好奇,困惑。我难以忍受这种无知,于是我的剑出鞘,翻开AI的圣经,在屏幕上刻下
XXOO
四个字。
XXOO棋
,又称井字棋
。三子相连者胜
,四子相连
...是不可能的。
算法就如剑法,速度,力度都要有良好的把握。理解剑法,需要口诀。算法亦然。
以下为负值最大函数的伪代码:
int NegaMax(int depth) {
int best = -INFINITY;
if (depth <= 0) {
return Evaluate();
}
GenerateLegalMoves();
while (MovesLeft()) {
MakeNextMove();
val = -NegaMax(depth - 1); // 注意这里有个负号。
UnmakeMove();
if (val > best) {
best = val;
}
}
return best;
}
理解了这个伪代码,也就明白了我的代码:
this.getPos = function(depth){
var best = -Chess.MAX-1;
var index = -1;
var val = 0;
for (var i = 0 ;i < board.length; i++) {
if(board[i] == 0){
board[i] = aiChess;
val = -negaMax(depth -1,personChess);
board[i] = 0;
if(val > best){
best = val;
index = i;
}
}
}
return index;
}
function negaMax(depth,chess) {
var best = -Chess.MAX;
if (depth <= 0) {
return evaluate(chess);
}
var val = 0;
for ( var i = 0 ;i < board.length; i++) {
if(board[i] == 0){
board[i] = chess;
val = -negaMax(depth -1,chess==Chess.X?Chess.O:Chess.X);
board[i] = 0;
if(val > best){
best = val;
}
}
}
return best;
}
function evaluate(chess) {
var xMark = 0;
var oMark = 0;
var X = Chess.X;
var O = Chess.O;
var f = chess == X?1:-1;
for (i = 0; i < 8; i++) {
var sum = board[pos[i][0]] + board[pos[i][1]] + board[pos[i][2]];
if(sum == 3*X)
return f*Chess.MAX;
if(sum == 3*O)
return -f*Chess.MAX;
if(sum < O)
xMark++;
if(sum % O == 0)
oMark++;
}
return f*(xMark - oMark);
}
附件有完整的代码,可直接开启你的XXOO。
分享到:
相关推荐
本源码包“微信HTML5在线朋友圈游戏源码带安装部署教程-xxoo游戏.zip”提供了一个具体的游戏开发实例,名为“xxoo游戏”,这将帮助开发者深入理解如何利用HTML5技术和微信平台创建互动游戏。 首先,我们需要了解...
"xxoo游戏"可能指的是一个特定的HTML5游戏,但由于隐私和规范原因,我们无法提供具体游戏的详细名称或内容。 HTML5是超文本标记语言的最新版本,它引入了许多新特性,如语义化元素、离线存储、拖放功能、媒体元素、...
"微信HTML5在线朋友圈游戏源码带安装部署教程-xxoo游戏.rar" 这个标题提到了几个关键概念。首先,“微信HTML5在线朋友圈游戏”表明这是一款基于HTML5技术开发的游戏,设计用于在微信的社交环境中分享和游玩。HTML5是...
xxoo(取x2o和o2x之意)是simple-xml2object的一个RELEASE版本,博主修复了一些bug,源码已在github以apacheV2协议开源,地址https://github.com/xiaolongzuo/xxoo。 简介:xxoo是一个简单实用的xml和JAVA对象转换...
如果“xxoo游戏”有联网功能,这部分代码会尤为关键。 最后,优化是H5游戏不可忽视的一环。源码中会包含性能优化策略,如减少DOM操作、使用requestAnimationFrame进行动画渲染、预加载资源等,以确保游戏在各种设备...
gcc环境所有的rpm包 一键安装 rpm -ivh *
【基于EasyX实现的三子棋游戏】 在IT领域,编程是创造各种应用程序的基础,而游戏开发则是其中极具挑战性和趣味性的一部分。本项目“基于EasyX实现的三子棋游戏”采用C语言编写,利用EasyX图形库来创建用户界面,为...
5. **框架支持**:此版本对各种流行框架如Spring、Hibernate、Struts等的支持更加完善,确保了框架组件的热部署效能。 ### 安装与配置 要将JRebel集成到IDEA中,首先需要下载`jr-ide-idea-6.2.0-idea-13-14.zip`...
JavaScript应用实例-UI画时钟作者xxoo.js
MFC写的,还有些功能未实现,可以XXOO了~
xxoo 游戏一个简单的游戏。 我写这个是为了用练习 JavaScript 单元测试。运行游戏 bower installopen index.html运行测试 open test/run_test.html
AutoJs源码-UI画时钟作者xxoo。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己...
这篇名为"ant 元素介绍XXOO"的博文可能详细介绍了Ant构建文件中的各种元素及其用途,但由于描述部分为空,我们将基于Ant的一般知识进行扩展。 Ant的核心概念是任务(Task),这些任务是构建过程中执行的操作,如...
在IT行业中,HTML5(H5)是一种广泛用于创建网页和游戏的技术,它极大地扩展了HTML的潜力,使得开发者能够创建交互性强、图形丰富的在线内容。2021年,随着移动互联网的发展,H5小游戏成为了热门的娱乐形式,它们...
<!DOCTYPE html> <html lang="en"> <meta charset="UTF-8"> 爱奇艺-中国领先的视频门户,高清影视剧,网络视频在线观看 <div class="layer"></div> 爱情保卫战" />
剑丹XXOO履带###在jiandan.net的xxoo url中爬行图片的小工具###仅用于学习,不可用于其他用途。 这是用python写的,包括一个处理XML处理器的模块lxml。 提供了一个配置文件来修改存储图像的目录路径,并且可以修改...
AutoJs源码-百度ocr图片文字识别修改开始按钮,作者xxoo。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则...
“全站代码”标签明确了这是一个包含所有网站代码的集合,不仅有用户可以看到的网页部分,还有服务器处理请求和存储数据的部分。全站代码通常包括但不限于以下几个方面: 1. **前端代码**:HTML用于结构化内容,CSS...