五子棋java课程设计报告(java游戏五子棋论文)

本文目录
java游戏五子棋论文
《%@ page contentType=“text/html;charset=utf-8“%》
《html》
《head》
《title》五子棋《/title》
《meta
if(machinestep==0) //机器走第一步
{ var obj=document.getElementById(“chesetable“).rows.cells;
if(putone(obj,7,7)==false)
{ obj=document.getElementById(“chesetable“).rows.cells;
putone(obj,6,6);
}
}
else if(machinestep==1) //机器走第二步
{ var obj=document.getElementById(“chesetable“).rows.cells;
if(putone(obj,7,7)==false) //7,7位置被占用
{ obj=document.getElementById(“chesetable“).rows.cells;
if(putone(obj,6,6)==false)//6,6位置被占用
{obj=document.getElementById(“chesetable“).rows.cells;
putone(obj,6,7);
}
}
}
else { var checkword=2; //先判断机器的,在设置为1判断这个位置对人的贡献
for(var tttt=0;tttt《maxsize*maxsize;tttt++)
chesevalue[tttt]=-10;//初始化
for(var i=0;i《maxsize;i++)
for(var j=0;j《maxsize;j++)
{ if(chese[maxsize*i+j]!=0) //the position is occupied
continue;
var total=1;
var tempj=j+1;
var spacenumber=0; //中间空多少个
var befive=0; //成5,包括五连和长连
var livefour=0; //活四,有两个点可以成5地四
var befour=0; //冲四,只有一个点可以成为5的四
var deadfour=0; //死四,不能成为5的四
var livethree=0; //活三,再走一步就可以成为活四的三
//活三包括 连活三和跳活三
var bethree=0;
var livetwo=0;
var betwo=0;
//三三,一子落下同时形成两个活三
//四四,一子落下同时形成两个冲四
//四三,一子落下同时形成一个冲四和 活三
for(var tt=0;;tt++)
{ if(tt==0)
checkword=2; //machine
else checkword=1; //people
while(tempj《maxsize) //横
{ if(chese[maxsize*i+tempj]==checkword&&checkword==2) //是机器的
{total++; tempj++;}
else if(chese[maxsize*i+tempj]==0&&checkword==2) //对于防守不考虑空格
{ //is empty
spacenumber++; break;
if((++tempj)《maxsize&&chese[maxsize*i+tempj]==checkword&&spacenumber《2)
total++;
else break;
}
else if(chese[maxsize*i+tempj]==checkword&&checkword==1) //防守
{ total++; tempj++;
}
else break;
}
var endj=tempj;
tempj=j-1;
while(tempj》=0)
{ if(chese[maxsize*i+tempj]==checkword&&checkword==2)
{total++; tempj--;}
else if(chese[maxsize*i+tempj]==0&&checkword==2)
{ //is empty
spacenumber++; break;
if((--tempj)》=0&&chese[maxsize*i+tempj]==checkword&&spacenumber《2)
total++;
else break;
}
else if(chese[maxsize*i+tempj]==checkword&&checkword==1) //防守
{ total++; tempj--;
}
else break;
}
var startj=tempj;
//由于checkword==2先运行,所以可以直接用befive=1,也可以用befive++;
if(total》4) { //能组成五个或以上的
if(checkword==2)
{befive+=2
} //堵住成五
else befive++;
}//进攻要大于防守
else if(total==4) { //能组成四个
if(checkword==2) //表示考虑进攻
{ if(startj》=0&&endj《maxsize&&chese[maxsize*i+startj]!=1&&chese[maxsize*i+endj]!=1) //两边为空格
livefour+=2; //放在这里可以形成一个活四
else if((startj》=0&&chese[maxsize*i+startj]!=1)||(endj《maxsize&&chese[maxsize*i+endj]!=1))
befour+=2; //形成一个冲四
else deadfour+=2;
}
else //考虑防守
{ if(startj》=0&&endj《maxsize&&chese[maxsize*i+startj]!=2&&chese[maxsize*i+endj]!=2)
livefour+=1; //放在这里可以形成一个活四
else if((startj》=0&&chese[maxsize*i+startj]!=2)||(endj《maxsize&&chese[maxsize*i+endj]!=2))
befour+=1; //形成一个冲四
else deadfour+=1;
}
}
else if(total==3){if(checkword==2) //表示考虑进攻
{ if(startj》=0&&endj《maxsize&&chese[maxsize*i+startj]!=1&&chese[maxsize*i+endj]!=1) //两边为空格
livethree+=2; //放在这里可以形成一个活三(算做连活三)
else if((startj》=0&&chese[maxsize*i+startj]!=1)||(endj《maxsize&&chese[maxsize*i+endj]!=1))
bethree+=2; //形成一个眠三,即可以冲四的三
// else deadfour+=2;
//跳三
}
else //考虑防守
{ if(startj》=0&&endj《maxsize&&chese[maxsize*i+startj]!=2&&chese[maxsize*i+endj]!=2) //两边为空格
livethree+=1; //放在这里可以形成一个活三(算做连活三)
else if((startj》=0&&chese[maxsize*i+startj]!=2)||(endj《maxsize&&chese[maxsize*i+endj]!=2))
bethree+=1; //形成一个眠三,即可以冲四的三
}
}
else if(total==2){ if(checkword==2) //表示考虑进攻
{ if(startj》=0&&endj《maxsize&&chese[maxsize*i+startj]!=1&&chese[maxsize*i+endj]!=1) //两边为空格
livetwo++; //放在这里可以形成一个活三(算做连活三)
}
else //考虑防守
{ if(startj》=0&&endj《maxsize&&chese[maxsize*i+startj]!=2&&chese[maxsize*i+endj]!=2) //两边为空格
livetwo++; //放在这里可以形成一个活三(算做连活三)
}
}
java程序设计,五子棋判断输赢
#define MAX_LINE 15
#define MAX_ROW 15
int Map[MAX_LINE][MAX_ROW];
int CheckWin() //返回0表示都没赢,返回1表示白棋赢,返回2表示黑棋赢
{
int i,j,k;
int tmp;
/* 判断所有横行 */
for(i=0;i《MAX_LINE;i++)
{
for(j=0;j《MAX_ROW-5;j++)
{
tmp=Map[i][j];
if( tmp != 0)
{
for(k=1;k《5;k++)
if(Map[i][j+k] != tmp) /* 判断Map[i][j+0]到Map[i][j+4]是否都相等(且不等于0) */
break;
if(k==6)
return tmp;
}
}
}
/* 判断所有纵行 */
for(i=0;i《MAX_LINE-5;i++)
{
for(j=0;j《MAX_ROW;j++)
{
tmp=Map[i][j];
if( tmp != 0)
{
for(k=1;k《5;k++) /* 判断Map[i+0][j]到Map[i+4][j]是否都相等(且不等于0) */
if(Map[i+k][j] != tmp)
break;
if(k==6)
return tmp;
}
}
}
/* 判断所有斜行(撇) */
for(i=5;i《MAX_LINE;i++)
{
for(j=0;j《MAX_ROW-5;j++)
{
tmp=Map[i][j];
if( tmp != 0)
{
for(k=1;k《5;k++) /* 判断Map[i-0][j+0]到Map[i-4][j+4]是否都相等(且不等于0) */
if(Map[i-k][j+k] != tmp)
break;
if(k==6)
return tmp;
}
}
}
/* 判断所有斜行(捺) */
for(i=0;i《MAX_LINE-5;i++)
{
for(j=0;j《MAX_ROW-5;j++)
{
tmp=Map[i][j];
if( tmp != 0)
{
for(k=1;k《5;k++)
if(Map[i+k][j+k] != tmp) /* 判断Map[i+0][j+0]到Map[i+4][j+4]是否都相等(且不等于0) */
break;
if(k==6)
return tmp;
}
}
}
return 0;
}
java课程设计,做了网络五子棋,老师要我加复盘的功能,怎么实现思路
这个很简单。五子棋棋盘是一个二维数组,然后2数组里面有每个位置上只能有3个值,0,1,2,0表示没有棋子,1表示白棋,2表示黑棋。然后你用一个类把二维数组封装起来,然后保存每一步时候的状态就OK了。

本文相关文章:
java算法大全(java中的算法,一共有多少种,哪几种,怎么分类)
2026年10月8日 19:30
java课件(我想做一个介绍java项目的ppt文件,我想知道该如何介绍会好,比如说用到的技术,实现的功能等等)
2026年9月20日 08:30
extends(在java中,〈extends A 〉与〈T extends A〉有什么区别)
2026年7月9日 22:30
更多文章:
turtles歌曲(哪位大神有turtles(乌龟组合)的<谢谢>的歌词中文翻译 感激不尽)
2026年10月11日 10:00
金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)
2026年10月11日 09:10
repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026年10月11日 09:00
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40



