斗地主AI JavaScript篇(1)
今天 有幸在这里做一下关于斗地主AI的 JS实现讲解
在处理AI的过程中 首先 我们要对模拟人类赞牌的过程 实现机器人算出最合理的出牌路线!
在这个过程中 我们需要用到的函数
1:排序函数:PxFux 返回一个经过对牌组排序的数组 不要干涉原来的数组
2:抽牌函数:MChouPai 返回一个被抽出的片段 和 抽出后剩余的部分
3:查找存在的牌型函数:SerCh 返回查找到的单牌 火箭 对子 3张 顺子 只要它有可能存在 就加入到队列去!
4:计算Pn值函数:GetTaMax 这里的Pn值 是计算出遍历出来的牌的好坏程度 用来筛选最好的牌
5:遍历除炸弹火箭2以外的所有剩余路径:GetAllPai
6:在GetAllPai 中使用到 GetAllLast函数 该函数是计算遍历出顺子组合后 剩下的牌在进行 3张 对子 和 单牌的加入
7:GetAllSun 遍历出所有 3张 单顺 双顺 3顺的组合 (记住为机器人赞牌,我们不必要去理会 3带1 3带2 或者飞机 等情况 因为这个情况我们可以再出牌的时候依据剩余的单牌 或对牌去决定要出飞机还是3带1 我们只需要找出 3张一样的 或者顺子啊等等)
8:GetAllSunLess 遍历出所有的顺子
9:GetAll2SunLess 遍历出所有的双顺
10:GetAll3SunLess 遍历所有的3顺
以上 遍历的值 都是以阶梯式的 并不等级
好比如 有两个顺子 两个 双顺
GetAllSunLess 得到的阶梯是这样的
顺子1--杂牌
顺子1-顺子2-杂牌
双顺1--杂牌
双顺1-双顺2-杂牌
那么在GetAllSun 的函数中 剩余的杂牌 可以依照3种情况在进行排列 格式如下
|顺子2--杂牌
| 取顺子部分-+
| | 顺子2-顺子3-杂牌
| |双顺2--杂牌
顺子1--+取双顺部分 ---+
| &nbs
相关文档:
scrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetL ......
东西很简单,只是自己记性不好,经常忘记一些关键字
所以发了点时间整理了一下
/*------------------------------------------------------
*作者:xieyu @ 2007-08-14
*语言:JavaScript
*说明:select元素javascript常用操作
* 1.判断是否存在指定value的Item
* 2.加入一 ......
源码:
function resize(img, width, height) {
(img.width > img.height)
? ((img.height = Math.min(height, width * img.height/img.width)) || (img.width = Math.min(width, img.width)))
: ((img.width = Math.min(width, height * img.width/img.height)) || (img.height = Math.min(hei ......
每次用到这个方法我都要到网上去搜,要花一段时间!为了避免重复搜,决定放到blog中.
<SCRIPT LANGUAGE=javascript>
function p_del() {
var msg = "您真的确定要删除吗?\n\n请确认!";
if (confirm(msg)==true){
return true;
}else{
return false;
}
}
</SCRIPT>
调用方法:
<a href="del.js ......
1.获得指定id的对象:document.getElementById ("id"),id需唯一,name不必唯一。
2.获得指定name的对象数组:document.getElementsByname("name"),访问具体对象用下标表示:document.getElementsByname("name")[0]
3. 获得触发事件的对象:
function getEventElement(ev){
ev = ev||window.event;//获得对象
......