jm[i].add(jit[i][j]);
}
}
panel0.add(label);
bar.add(jm[0]);
bar.add(jm[1]);
frame.setJMenuBar(bar);
frame.add(panel0,"North");
}
(2)给菜单项设定事件
publicvoidaddEventAction(){
jit[0][0].addActionListener(newActionListener(){ //开局
publicvoidactionPerformed(ActionEvente){
row=prow=0;col=pcol=0;
isPC=cMode;
isBlack=true;
isEnd=false;
for(inti=0;i<19;i++){
for(intj=0;j<19;j++){
if(i==0||j==0||i==(qipan.length-1)||j==(qipan.length-1)){
qipan[i][j]=-1;
}else{
qipan[i][j]=0;
}
}
}
if(isPC){ //人机对弈模式
label.setText("游戏开始,请玩家先下棋!
");
}else{ //人人对弈模式
label.setText("游戏开始,请"+(isBlack?
"黑":
"白")+"方先下棋!
");
}
printqipan(row,col);
addEventHandler();
}
});
jit[0][1].addActionListener(newActionListener(){ //重新开始
publicvoidactionPerformed(ActionEvente){
row=prow=0;col=pcol=0;
isBlack=true;
isEnd=false;
for(inti=0;i<19;i++){
for(intj=0;j<19;j++){
if(i==0||j==0||i==(qipan.length-1)||j==(qipan.length-1)){
qipan[i][j]=-1;
}else{
qipan[i][j]=0;
}
}
}
if(isPC){ //人机对弈模式
label.setText("游戏开始,请玩家先下棋!
");
}else{ //人人对弈模式
label.setText("游戏开始,请"+(isBlack?
"黑":
"白")+"方先下棋!
");
}
printqipan(row,col);
addEventHandler();
}
});
(3)给模式选项添加事件监听
mode[0].addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
cMode=false;
label.setText("已选择人"+(cMode?
"机":
"人")+"对弈模式,重新开局将生效!
");
}
});
mode[1].addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
cMode=true;
label.setText("已选择人"+(cMode?
"机":
"人")+"对弈模式,重新开局将生效!
");
}
});
jit[0][2].addActionListener(newActionListener(){ //结束游戏
publicvoidactionPerformed(ActionEvente){
label.setText("游戏结束,请按开局开始游戏!
");
isEnd=true;
}
});
jit[1][1].addActionListener(newActionListener(){ //悔棋
publicvoidactionPerformed(ActionEvente){
if(!
isPC){
huiqi();
}else{
pchuiqi();
}
}
});
jit[1][2].addActionListener(newActionListener(){ //背景颜色
publicvoidactionPerformed(ActionEvente){
Colorcc=JColorChooser.showDialog(frame,"棋盘背景颜色",
newColor(226,189,0));
if(cc!
=null){
c=cc;
panel.setBackground(c);
}
}
});
}
(4)监听鼠标事件,下棋以及判断本盘是否结束,电脑是白方,玩家是黑方
publicvoidaddEventHandler(){
panel.addMouseListener(newMouseAdapter(){
publicvoidmousePressed(MouseEvente){
if(!
isEnd){
intx=(e.getX()-5)/30;
inty=(e.getY()-5)/30;
if(qipan[y+1][x+1]==0){
load(x+1,y+1);
}else{
label.setText("此处已经有棋子,请重新下子!
");
}
}
}
});
}
(5)电脑下棋
publicvoidpcLoad(){
qixing();
intcount=0;
inthang=0;
intlie=0;
for(inti=0;i<17;i++){
for(intj=0;j<17;j++){
if(qixingPC[i][j]>count){
count=qixingPC[i][j];
hang=i+1;
lie=j+1;
}
if(qixingPlayer[i][j]>count){
count=qixingPlayer[i][j];
hang=i+1;
lie=j+1;
}
}
}
if(qipan[hang][lie]==0){
load(lie,hang);
return;
}
}
(6)下棋子
publicvoidload(intx,inty){
col=x;
row=y;
if(isBlack){
prow=row;
pcol=col;
qipan[row][col]=1;
isBlack=false;
}else{
qipan[row][col]=2;
isBlack=true;
}
printqipan(row,col);
if(panduan(row-1,col-1)){
if(isPC){
label.setText("本局结束,恭喜"+(isBlack?
"电脑":
"玩家")+"获胜!
");
isEnd=true;
}else{
label.setText("本局结束,恭喜"+(isBlack?
"黑":
"白")+"方获胜!
");
isEnd=true;
}
}else{
if(isPC){
label.setText((isBlack?
"电脑":
"玩家")+"在("+
row+":
"+col+")处下子,"+"现在"+(isBlack?
"玩家":
"电脑")+"下子!
");
}else{
label.setText((isBlack?
"白":
"黑")+"方在("+
row+":
"+col+")处下子,"+"现在"+(isBlack?
"黑":
"白")+"下子!
");
}
if(!
isBlack){
if(isPC){
pcLoad();
}
}
}
}
(7)刷新棋盘
publicvoidprintqipan(intn,intm){
panel=newDrawPanel(qipan,n,m);
panel.setBackground(c);
frame.add(panel,"Center");
}
(8)人人对弈悔棋
publicvoidhuiqi(){
if(isEnd){
label.setText("游戏已经结束不能悔棋,请重新开局!
");
return;
}
isBlack=!
isBlack;
qipan[row][col]=0;
printqipan(row,col);
label.setText((isBlack?
"黑":
"白")+"方悔棋,请重新下棋!
");
}
(9)人机对弈悔棋
publicvoidpchuiqi(){
if(isEnd){
label.setText("游戏已经结束不能悔棋,请重新开局!
");
return;
}
qipan[row][col]=0;
qipan[prow][pcol]=0;
printqipan(row,col);
label.setText((isBlack?
"玩家":
"电脑")+"悔棋,请重新下棋!
");
}
成绩评定
出勤情况(10分)
界面设计(15分)
功能实现(30分)
创新点(15分)
答辩情况(10分)
设计报告(20分)
设计评语
指导教师