摘要:what 什么是继承?why 为什么要用继承?(继承有什么用?继承有什么优点?)how 怎么使用继承?when,where 什么时候,什么地方使用继承?if not 如果不使用继承,能否实现同样的设计,如果可以两个方案的区别又在什么地方what?继承是一个动词,相对与接口这一名词,理解上应该有所区别继承一种定义作为派生类基础的类的能力。派生类继承并可扩展基类的属性、方法和事件。派生类还可以用新的实......
摘要:转:[ 分享] 我收集的ebook。自己肯定是看不完的,收集是为了给用的到的朋友。 http://www.itpub.net/259894.html
......
棋类游戏的智能模块设计――浅谈人工智能上一页 ...
bestvalue=value;
{ 【程序编程相关:
FedoraCore2正式版使用问题解决】
if(是初始局面) 【推荐阅读:
[原创]用脚本控制Select的展开与折】
} 【扩展信息:
VC数字图像处理编程讲座之四】
保存最佳走法;
}
}
else
{
if(value<bestvalue)//取最小值
{
bestvalue=value;
}
}
}
return bestvalue;
}
这个极大极小搜索有些繁琐,需要根据当前走棋方来分别进行极大与极小搜索.考虑到对手的利益就是自己的损失,这样就引出了负极大搜索算法.它没有极大极小那么容易理解,但却很简洁,不用判断当前走棋方.但负极大中的估值却是对走棋方敏感的,因此函数参数中需要有一个走棋方的参数
long negamax(局面 p, ing side, int depth)//depth是搜索深度
{
int bestvalue, value;
if(depth<=0)//叶子节点
{
返回估值(p, side);//直接返回对局面的估值
}
bestvalue=-inf;//初始最佳值设为负无穷
for(每一个合法的走法)//走法的生成与具体问题紧密相关,具体方法省略
{
走一步棋;//局面p随之改变
value= - negamax(p, opside, depth-1);//搜索子节点,注意前面的负号,opside是对手
撤销刚才的一步;//恢复局面p
if(value>bestvalue)//取最大值
{
bestvalue=value;
if(是初始局面)
{
保存最佳走法;
}
}
}
return bestvalue;
}
看到这里,读者完全可以编写出一个黑白棋的智能模块来了.只要加上走法生成与估值函数就可以了.在压缩包里有我写的一个最简单的黑白棋智能模块程序,如果装了bcb6就可以直接编译.试验了.当然,为了说明原理,这个实例程序没有做优化,速度很慢.读者可以自己想办法优化它,比如用10*10的棋盘以避免边界检查,或者用一维数组来表示棋盘,用比特棋盘技术等,速度更快,我估计优化能提高性能至少30%.另外,估值部分也过于简单,棋力非常弱,同样读者可以自己编写估值函数来提高棋力.还有比如终局搜索等方面,读者也可以自己搜索相关的资料.
搜索算法的加强 ...
下一页 摘要:1)instanceof:实现了某接口的类的对象也是该接口的实例;某类的对象也是该类超类的实例。
2)native()修饰的方法没有方法体,用一个分号";"代替大括号。
3)main不是关键字。
4)system.exit(int value),也就是说,只要是int的,就能够使jvm退出system.exit(´a´);同样的是合法的。
5)&......