五子棋源代码JavaApplet小程序Word文档下载推荐.docx
- 文档编号:7416199
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:19
- 大小:21.29KB
五子棋源代码JavaApplet小程序Word文档下载推荐.docx
《五子棋源代码JavaApplet小程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《五子棋源代码JavaApplet小程序Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
booleanflag=false;
EnterTimes++;
ai2[0]=0;
for(inti=recLU.x;
i<
=recRD.x;
i++)
for(intk=recLU.y;
k<
=recRD.y;
k++)
if(QiPan[i][k]==0)
DoAStep(i,k,byte0);
l=CalcCPU(i,k,byte0);
if(l>
0)
bytebyte1;
if(byte0==1)
byte1=2;
else
byte1=1;
if(EnterTimes<
=level&
steps<
((GRIDSUM*GRIDSUM)/100)*80)
i1=CPUDo(cxy,byte1);
l+=i1;
if(l+Math.abs(rd.nextInt())%5>
ai2[0]||!
flag)
ai[0]=i;
ai1[0]=k;
ai2[0]=l;
flag=true;
QiPan[i][k]=0;
if(EnterTimes<
=1)
cxy.x=ai[0];
cxy.y=ai1[0];
intj=0;
try
Thread.sleep(300L);
catch(InterruptedException_ex){}
QiPan[cxy.x][cxy.y]=byte0;
repaint();
QiPan[cxy.x][cxy.y]=0;
repaint();
while(++j<
EnterTimes--;
returnai2[0];
publicvoidClearPan()
for(inti=0;
GRIDSUM;
for(intj=0;
j<
j++)
QiPan[i][j]=0;
scHong=0;
scHei=0;
steps=0;
recLU.x=8;
recRD.x=9;
recLU.y=8;
recRD.y=9;
privatebooleanMoveAGrid(CXYcxy,inti)
i%=8;
intj=cxy.x+oAdd[i][0];
intk=cxy.y+oAdd[i][1];
if(j>
=0&
GRIDSUM&
k>
GRIDSUM)
cxy.x=j;
cxy.y=k;
returnflag;
publicvoidpaint(Graphicsg)
super.paint(g);
GRIDSUM+1;
g.drawLine(0,i*GRIDWIDTH,GRIDSUM*GRIDWIDTH,i*GRIDWIDTH);
g.drawLine(i*GRIDWIDTH,0,i*GRIDWIDTH,GRIDSUM*GRIDWIDTH);
for(intk=0;
k++)drawQi(g,j,k,QiPan[j][k]);
privatevoidCPUInit()
PosAdd[0][0]=8;
PosAdd[0][1]=-2;
PosAdd[1][0]=-2;
PosAdd[0][2]=3;
PosAdd[2][0]=3;
PosAdd[0][3]=2;
PosAdd[3][0]=2;
PosAdd[1][1]=-7;
PosAdd[1][2]=-1;
PosAdd[2][1]=-1;
PosAdd[1][3]=-1;
PosAdd[3][1]=-1;
PosAdd[2][2]=4;
PosAdd[3][3]=4;
PosAdd[2][3]=4;
PosAdd[3][2]=4;
publicvoidmouseDOWNThis(Eventevent)
if(playerdo)
xiazi.put(event.x,event.y);
privateintDoAStep(inti,intj,bytebyte0)
if(QiPan[i][j]!
=0||byte0==0||byte0>
2)
return0;
else
QiPan[i][j]=byte0;
return1;
privatevoidFreshRec(inti,intj)
if(i-recLU.x<
recLU.x=i-2;
if(recLU.x<
recLU.x=0;
if(recRD.x-i<
recRD.x=i+2;
if(recRD.x>
=GRIDSUM)recRD.x=GRIDSUM-1;
if(j-recLU.y<
recLU.y=j-2;
if(recLU.y<
recLU.y=0;
if(recRD.y-j<
recRD.y=j+2;
if(recRD.y>
=GRIDSUM)recRD.y=GRIDSUM-1;
publicwzq()
GRIDWIDTH=18;
GRIDSUM=18;
QiPan=newbyte[GRIDSUM][GRIDSUM];
oAdd=newint[8][2];
playing=false;
playerdo=true;
xy=newCXY();
xiazi=newCXiaZi();
rd=newRandom();
recLU=newCXY();
recRD=newCXY();
PosAdd=newint[4][4];
publicvoidupdate(Graphicsg)
paint(g);
//画棋
publicvoiddrawQi(Graphicsg,inti,intj,intk)
switch(k)
case0:
//'
\0'
g.clearRect(i*GRIDWIDTH+1,j*GRIDWIDTH+1,GRIDWIDTH-2,GRIDWIDTH-2);
return;
case1:
\001'
g.setColor(Color.red);
g.fillArc(i*GRIDWIDTH+2,j*GRIDWIDTH+2,GRIDWIDTH-4,GRIDWIDTH-4,0,360);
case2:
\002'
g.setColor(Color.black);
publicvoidstart()
if(LoopThread==null)
LoopThread=newThread(this,"
wbqloop"
);
LoopThread.setPriority
(1);
LoopThread.start();
publicvoidrun()
for(;
Thread.currentThread()==LoopThread;
xiazi.get(xy))
ClearPan();
playing=true;
//谁先下随机
who=(byte)(Math.abs(rd.nextInt())%2+1);
for(passes=0;
playing&
passes<
2;
)
if(who==1)
lblStatus.setText("
\u7EA2\u65B9\u4E0B"
lblStatus.setForeground(Color.red);
\u9ED1\u65B9\u4E0B"
lblStatus.setForeground(Color.black);
if(steps<
passes=0;
if(who==1)//人下棋
xiazi.get(xy);
DoAStep(xy.x,xy.y,who)==0;
xiazi.get(xy));
scHong=CalcZi(xy.x,xy.y,who);
FreshRec(xy.x,xy.y);
steps++;
else//机器下棋
if(scHong==0&
scHei==0)
{xy.x=9;
xy.y=9;
}else
{CPUDo(xy,who);
}for(;
CPUDo(xy,who));
scHei=CalcZi(xy.x,xy.y,who);
passes=2;
if(scHong>
=5||scHei>
=5)playing=false;
//交换下棋方
who=(byte)((1-(who-1))+1);
Thread.yield();
=5)//红方胜
Status="
\u7EA2\u65B9\u80DC!
"
;
lblStatus.setForeground(Color.red);
LoseTimes++;
elseif(scHei>
=5)//黑方胜
\u9ED1\u65B9\u80DC!
lblStatus.setForeground(Color.black);
if(LoseTimes>
LoseTimes--;
else//平局
\u4E0D\u5206\u80DC\u8D1F!
lblStatus.setText(Status);
//入口,开始下棋,初始化
publicvoidinit()
super.init();
oAdd[0][0]=0;
oAdd[0][1]=-1;
oAdd[1][0]=1;
oAdd[1][1]=-1;
oAdd[2][0]=1;
oAdd[2][1]=0;
oAdd[3][0]=1;
oAdd[3][1]=1;
oAdd[4][0]=0;
oAdd[4][1]=1;
oAdd[5][0]=-1;
oAdd[5][1]=1;
oAdd[6][0]=-1;
oAdd[6][1]=0;
oAdd[7][0]=-1;
oAdd[7][1]=-1;
CPUInit();
setLayout(null);
resize(325,352);
lblStatus=newLabel("
Welcome"
lblStatus.setFont(newFont("
Dialog"
1,14));
add(lblStatus);
lblStatus.reshape(14,332,175,15);
lblLevel=newLabel("
JAVA\u4E94\u5B50\u68CB"
lblLevel.setFont(newFont("
add(lblLevel);
lblLevel.reshape(196,332,119,15);
publicbooleanhandleEvent(Eventevent)
if(event.id!
=501||event.target!
=this)
returnsuper.handleEvent(event);
mouseDOWNThis(event);
returntrue;
privateintCalcCPU(inti,intj,bytebyte0)
Strings="
Strings2="
Strings4="
bytebyte1=0;
CalcTimes++;
if(byte0==2)
Strings1="
Strings3="
Strings5="
intj1=0;
intk1=0;
for(cxy.y=j;
MoveAGrid(cxy,l+4*j1)&
k1<
6&
QiPan[cxy.x][cxy.y]!
=byte1;
k1++)if(QiPan[cxy.x][cxy.y]==byte0)
if(j1==0)
s3+="
1"
s5="
+s5;
i1++;
0"
2"
s1=s5+"
+s3;
if(s1.indexOf("
11111"
)!
=-1)
i1+=1000;
011110"
i1+=500;
211110"
=-1||s1.indexOf("
011112"
=-1||
s1.indexOf("
01110"
011010"
!
010110"
11101"
10111"
11011"
i1+=100;
21110"
01112"
0110"
211010"
210110"
i1+=20;
if(l==1||l==3)
i1+=(i1*20)/100;
k+=i1;
if(CalcTimes<
k+=CalcCPU(i,j,byte1);
if(k>
10)
k-=10;
CalcTimes--;
returnk;
intGRIDWIDTH;
//网格宽度
intGRIDSUM;
//网格总数
byteQiPan[][];
//棋盘
intoAdd[][];
ThreadLoopThread;
intscHong;
//红方
intscHei;
//黑方
bytewho;
//
bytewinner;
//赢方
booleanplaying;
booleanplayerdo;
CXYxy;
CXiaZixiazi;
//下子
StringStatus;
//状态
Randomrd;
//随机数intpasses;
intsteps;
intLoseTimes;
CXYrecLU;
CXYrecRD;
intPosAdd[][];
intlevel;
intEnterTimes;
intCalcTimes;
LabellblStatus;
LabellblLevel;
}
classCXiaZi
publicsynchronizedvoidget(CXYcxy)
ready=false;
notify();
while(!
ready)
wait();
cxy.x=xy.x;
cxy.y=xy.y;
publicsynchronizedvoidput(inti,intj)
if(i<
GRIDWIDTH*GRIDSUM&
GRIDWIDTH*GRIDSUM)
xy.x=i/GRIDWIDTH;
xy.y=j/GRIDWIDTH;
ready=true;
publicCXiaZi()
xy=newCXY();
privateCXYxy;
privatebooleanready;
privateintGRIDWIDTH;
privateintGRIDSUM;
classCXY
publicCXY()
x=0;
y=0;
publicintx;
publicinty;
内部资料,
请勿外传~
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 源代码 JavaApplet 程序