一,什么是TicTacToe(井字棋)
本游戏为在下用lufylegend开发的第二款小游戏。此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎。可能我说了半天,对它名字不熟悉的朋友也不懂我在说神马。那没关系,我就引用Wiki(维基百科)的介绍作为大家对它名字的认识,顺便也勾起我们儿时的回忆:
井字棋,大陆、台湾又称为井字游戏、圈圈叉叉;另外也有打井游戏、OX棋的称呼,香港多称井字过三关、过三关,是种纸笔游戏。两个玩家,一个打圈(O),一个打叉(X),轮流在3乘3的格上打自己的符号,最先以横、直、斜连成一线则为胜。如果双方都下得正确无误,将得和局。这种游戏实际上是由第一位玩家所控制,第一位玩家是攻,第二位玩家是守。第一位玩家在角位行第一子的话赢面最大(见图一),第二位玩家若是在边,角位下子,第一位玩家就可以以两粒连线牵制着第二位玩家,然后制造“两头蛇”。
图一
二,游戏在哪里玩?
相信大家看了介绍就对井字棋有了了解。现在我用html5配合开源游戏引擎lufylegend开发出了这一款游戏,并实现了人工智能(AI)确保游戏中玩家能棋缝对手。
接下来是游戏在线试玩和下载源码的地址:
下载地址(含源):http://files.cnblogs.com/ducle/Tic_Tac_Toe.rar
在线试玩地址:http://www.lufylegend.com/lufylegend_developers/yorhom_Tic_Tac_Toe/index.html
三,游戏截图
四,游戏引擎
本游戏运用国产的lufylegend引擎,版本为1.6.1,如果大家感兴趣可以去官网看看:
http://lufylegend.com/lufylegend
上面有此引擎的下载和API介绍。关于用lufylegend开发游戏的其他文章:
[HTML5游戏开发]简单的《找不同汉字版》,来考考你的眼力吧
五,AI部分
本游戏最大的亮点就是人工智能,下面是ai代码:
function win(x,y){
if(Math.abs(matrix[x][0]+matrix[x][1]+matrix[x][2])==3){
return true;
}
if(Math.abs(matrix[0][y]+matrix[1][y]+matrix[2][y])==3){
return true;
}
if(Math.abs(matrix[0][0]+matrix[1][1]+matrix[2][2])==3){
return true;
}
if(Math.abs(matrix[2][0]+matrix[1][1]+matrix[0][2])==3){
return true;
}
return false;
}
function best(){
var bestx;
var besty;
var bestv=0;
for(var x=0;x<3;x++){
for(var y=0;y<3;y++){
if(matrix[x][y]==0){
matrix[x][y] = 1;
step++;
if(win(x,y)){
step--;
matrix[x][y] = 0;
return {'x':x,'y':y,'v':1000};
}else if(isEnd()){
step--;
matrix[x][y]=0;
return {'x':x,'y':y,'v':0};
}else{
var v=worst().v;
step--;
matrix[x][y]=0;
if(bestx==null || v>=bestv){
bestx=x;
besty=y;
bestv=v;
}
}
}
}
}
return {'x':bestx,'y':besty,'v':bestv};
}
function worst(){
var bestx;
var besty;
var bestv = 0;
for(var x=0;x<3;x++){
for(var y=0;y<3;y++){
if(matrix[x][y] == 0){
matrix[x][y] = -1;
step++;
if(win(x,y)){
step--;
matrix[x][y] = 0;
return {'x':x,'y':y,'v':-1000};
}else if(isEnd()){
step--;
matrix[x][y]=0;
return {'x':x,'y':y,'v':0};;
}else{
var v=best().v;
step--;
matrix[x][y]=0;
if(bestx==null || v<=bestv){
bestx=x;
besty=y;
bestv=v;
}
}
}
}
}
return {'x':bestx,'y':besty,'v':bestv};
}
若游戏异常,请及时联系我。谢谢大家的支持!
----------------------------------------------------------------
欢迎大家转载我的文章。
转载请注明:转自Yorhom's Game Box
欢迎继续关注我的博客
分享到:
相关推荐
课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的Android Studio实现井字棋小游戏源码课程设计大作业基于java的...
这是一个拥有智能AI对手的井字棋小游戏,使用JavaScript语音进行开发,是一个前端小游戏,打开之后运行井字棋.html即可在网页上与AI进行井字棋游戏对战。也可以参考...
storm实现井字棋游戏源码, 详情见博文:http://blog.csdn.net/l1028386804/article/details/79149418
井子棋是棋类中最简单的一种,通常作为算法的练手项目,该资源使用极小极大算法实现了一个井字棋的人机对弈,只需运行资源里的play_to_bot就可以在命令行里与AI对弈了,可以肯定的是你绝对不可能战胜它。虽然实现它...
人工智能作业αβ阿尔法贝塔剪枝极大极小算法实现井字棋,人机对战,控制台程序,可以直接运行,非常好用,可以下载参考学习
c# winform实现井字棋小游戏,可选择人机对战或双人对战,以及谁先谁后。博弈算法使用一层最小最大算法,可实现不输。
基于java语言实现的人工只能小游戏井字棋,里面包含源码和简单的程序介绍。
井字棋游戏 实现人人对战,人机对战,有α-β剪枝算法,极大极小算法,和一种随即算法,满足各种需求
使用maxmin算法实现了井字棋的AI,对五子棋,六子棋等ai的撰写很有帮助
使用深度优先算法实现的图形化井字棋AI游戏,并利用α-β裁剪进行优化
Python turtle 井字棋游戏代码
人工智能实验报告,井字棋的,有源代码的,截图
7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋7-2 井字棋...
基于神经网络和QLearn学习实现AI玩“井字棋”C++源码.zip基于神经网络和QLearn学习实现AI玩“井字棋”C++源码.zip基于神经网络和QLearn学习实现AI玩“井字棋”C++源码.zip基于神经网络和QLearn学习实现AI玩“井字棋...
井字棋游戏的C语言实现,两方玩家可以玩井字棋printf("请输入操作前的数字代号:\n1:新游戏\n2:退出\n"); scanf_s("%d", &op); if (op == 2) break; else if (op == 1) new_game(); else { ...
人工智能课程设计,基于α-β剪枝算法的井字棋,可实现人人对战,人机对战,随机先后手
用vC++编写的井字棋游戏,可以选择先后顺序和执X或O。
基于博弈树的井字棋的实现
用mfc做的一个井字棋人机对弈程序,用到的算法是博弈树搜索算法中的最大值最小值算法,算是对人工智能的一个初步练习吧
PYTHON 游戏:pygame实现的图形化井字棋游戏,双人对战;PYTHON 游戏:pygame实现的图形化井字棋游戏,双人对战;PYTHON 游戏:pygame实现的图形化井字棋游戏,双人对战;PYTHON 游戏:pygame实现的图形化井字棋游戏...