📄 gobangcanvas.java
字号:
break;
case GobangEvent.USERREADY: //用户准备好响应
sendflag = false;
resendflag = 0;
gamestate =USERREADY;
commstructnode.setStatus(USERREADYSTR);
if(oppuserinfo.getStatus().equals(USERREADYSTR)){ //防止在服务器端双方同时按开始,而错过开始游戏
sendflag = true;
gobangdeal.setStartRequest(commstructnode);
}else{
if(usercolor == BLACK_COLOR){
blacksprite.setPosition(USER_COLOR_X,USER_COLOR_Y);
blacksprite.setVisible(true);
}else{
whitesprite.setPosition(USER_COLOR_X,USER_COLOR_Y);
whitesprite.setVisible(true);
}
}
break;
case GobangEvent.OPPREADY:
oppuserinfo.setStatus(USERREADYSTR);
if(commstructnode.getStatus().equals(USERREADYSTR)){ //防止在服务器端双方同时按开始,而错过开始游戏
sendflag = true;
gobangdeal.setStartRequest(commstructnode);
}else{
if(usercolor == WHITE_COLOR){
blacksprite.setPosition(OPP_COLOR_X,OPP_COLOR_Y);
blacksprite.setVisible(true);
}else{
whitesprite.setPosition(OPP_COLOR_X,OPP_COLOR_Y);
whitesprite.setVisible(true);
}
}
break;
case GobangEvent.OTHERREADY:
break;
case GobangEvent.USERSTART: //用户开始游戏响应
sendflag = false;
resendflag = 0;
commstructnode.setStatus(USERSTARTSTR);
oppuserinfo.setStatus(USERSTARTSTR);
if(usercolor == BLACK_COLOR){ //自己先下
gamestate = USERFALL;
operatelayerstart();
blacksprite.setPosition(USER_COLOR_X,USER_COLOR_Y);
whitesprite.setPosition(OPP_COLOR_X,OPP_COLOR_Y);
mousesprite.setCurrRect(qipanrect);
mousesprite.setDisplay();
usertimeflag = true;
opptimeflag = false;
selectsprite.setVisible(true);
}else{ //对方先下
waitoppflag = true;
gamestate = OPPFALL;
operateoppstart();
whitesprite.setPosition(USER_COLOR_X,USER_COLOR_Y);
blacksprite.setPosition(OPP_COLOR_X,OPP_COLOR_Y);
opptimeflag = true;
usertimeflag = false;
selectsprite.setVisible(false);
}
blacksprite.setVisible(true);
whitesprite.setVisible(true);
waitsprite.setVisible(false);
stepnum = 0;
break;
case GobangEvent.OPPSTART: //对家开始游戏响应
oppuserinfo.setStatus(USERSTARTSTR);
commstructnode.setStatus(USERSTARTSTR);
if(usercolor == WHITE_COLOR){
gamestate = OPPFALL;
operateoppstart();
blacksprite.setPosition(OPP_COLOR_X,OPP_COLOR_Y);
whitesprite.setPosition(USER_COLOR_X,USER_COLOR_Y);
opptimeflag = true;
usertimeflag = false;
selectsprite.setVisible(false);
qipanselectflag = false;
}else{
gamestate = USERFALL;
operatelayerstart();
mousesprite.setCurrRect(qipanrect);
mousesprite.setDisplay();
mousesprite.setVisible(false);
whitesprite.setPosition(OPP_COLOR_X,OPP_COLOR_Y);
blacksprite.setPosition(USER_COLOR_X,USER_COLOR_Y);
usertimeflag = true;
opptimeflag = false;
selectsprite.setVisible(true);
}
selectsprite.setNewPosition(7,7);
blacksprite.setVisible(true);
whitesprite.setVisible(true);
waitsprite.setVisible(false);
qipanselectflag = true;
stepnum = 0;
break;
case GobangEvent.OTHERSTART: //其他用户开始游戏响应
break;
case GobangEvent.USERPLAYRESPOND: //用户下棋响应
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = true; //等待对家反应标志置激活
sendflag = false;
resendflag = 0;
operateoppstart();
regetflag = true; //表示用户已经下子,可以悔棋
opptimeflag = true;
usertimeflag = false;
gamestate = OPPFALL;
selectsprite.setVisible(false);
mousesprite.setCurrRect(operaterect);
mousesprite.setDisplay();
break;
case GobangEvent.OPPPLAYRESPOND: //对家下棋响应
operatelayerstart();
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
sendflag = false;
opptimeflag = false;
usertimeflag = true;
gamestate = USERFALL;
x = Integer.parseInt(maingameevent.getByName("xvalue"))-1; //服务器格子编号为1到15
y = Integer.parseInt(maingameevent.getByName("yvalue"))-1;
stepnum = Integer.parseInt(maingameevent.getByName("stepnum"));
chessesflag[x][y] = false;
qizilayer.setCell(x,y,anticolor);
presprite.setNewPosition(x,y);
presprite.setVisible(true);
qipanselectflag = true;
mousesprite.setCurrRect(qipanrect);
mousesprite.setDisplay();
selectsprite.setRelase();
selectsprite.setVisible(true);
break;
case GobangEvent.USERGIVEUP: //用户放弃下子
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = true; //等待对家反应标志置否
sendflag = false;
resendflag = 0;
regetflag = true;
operateoppstart();
opptimeflag = true;
usertimeflag = false;
break;
case GobangEvent.OPPGIVEUP: //对家放弃下子
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
operatelayerstart();
stepnum = Integer.parseInt(maingameevent.getByName("stepnum"));
qipanselectflag = true;
gamestate = USERFALL;
opptimeflag = false;
usertimeflag = true;
mousesprite.setCurrRect(qipanrect);
mousesprite.setDisplay();
selectsprite.setRelase();
selectsprite.setVisible(true);
break;
case GobangEvent.OPPAGREENREGRET: //对家同意悔棋
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
sendflag = false;
resendflag = 0;
gamestate = USERFALL;
waitoppsprite.setVisible(false);
regetflag = false;
x = Integer.parseInt(maingameevent.getByName("firprex"))-1;
y = Integer.parseInt(maingameevent.getByName("firprey"))-1;
if(x>=0||y>=0){
chessesflag[x][y] = true;
qizilayer.setCell(x,y,0);
}
x = Integer.parseInt(maingameevent.getByName("secprex"))-1;
y = Integer.parseInt(maingameevent.getByName("secprey"))-1;
if(x>=0||y>=0){
chessesflag[x][y] = true;
qizilayer.setCell(x,y,0);
}
x = Integer.parseInt(maingameevent.getByName("thiprex"))-1;
y = Integer.parseInt(maingameevent.getByName("thiprey"))-1;
if(x<0||y<0){
presprite.setVisible(false);
}else{
presprite.setNewPosition(x,y);
presprite.setVisible(true);
}
stepnum = Integer.parseInt(maingameevent.getByName("stepnum"));
operatelayerstart();
promptcontrol.init("对家同意悔棋!",chatfont);
promptcontrol.setDisplay(true);
promptcontrol.setPosition(30,30);
mousesprite.setPosition(promptcontrol.getFocusX()+10,promptcontrol.getFocusY()+10);
break;
case GobangEvent.OPPANTIREGRET: //对家不同意悔棋:
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
sendflag = false;
resendflag = 0;
waitoppsprite.setVisible(false);
operatelayerstart();
stepnum = Integer.parseInt(maingameevent.getByName("stepnum"));
promptcontrol.init("对家不同意悔棋!",chatfont);
promptcontrol.setDisplay(true);
promptcontrol.setPosition(30,30);
mousesprite.setPosition(promptcontrol.getFocusX()+10,promptcontrol.getFocusY()+10);
break;
case GobangEvent.USERAGREENREGRET: //同意对家悔棋
sendflag = false;
resendflag = 0;
gamestate = OPPFALL;
x = Integer.parseInt(maingameevent.getByName("firprex"))-1;
y = Integer.parseInt(maingameevent.getByName("firprey"))-1;
if(x>=0||y>=0){
chessesflag[x][y] = true;
qizilayer.setCell(x,y,0);
}
x = Integer.parseInt(maingameevent.getByName("secprex"))-1;
y = Integer.parseInt(maingameevent.getByName("secprey"))-1;
if(x>=0||y>=0){
chessesflag[x][y] = true;
qizilayer.setCell(x,y,0);
}
x = Integer.parseInt(maingameevent.getByName("thiprex"))-1;
y = Integer.parseInt(maingameevent.getByName("thiprey"))-1;
if(x<0||y<0){
presprite.setVisible(false);
}else{
presprite.setNewPosition(x,y);
presprite.setVisible(true);
}
break;
case GobangEvent.OPPREGRET: //对家请求悔棋
stepnum = Integer.parseInt(maingameevent.getByName("stepnum"));
agreencontrol.init("对家请求悔棋!",chatfont);
agreetype = REGRET;
agreencontrol.setPosition(AGREEN_X,AGREEN_Y);
agreencontrol.setDisplay(true);
mousesprite.setPosition(agreencontrol.getFocusX()+10,agreencontrol.getFocusY()+10);
break;
case GobangEvent.OPPTIE: //对家求和
stepnum = Integer.parseInt(maingameevent.getByName("stepnum"));
agreencontrol.init("对家请求和棋!",chatfont);
agreetype = QUESTTIE;
agreencontrol.setPosition(30,30);
agreencontrol.setDisplay(true);
mousesprite.setPosition(agreencontrol.getFocusX()+10,agreencontrol.getFocusY()+10);
break;
case GobangEvent.OPPAGREENTIE: // 对家同意求和
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
sendflag = false;
resendflag = 0;
stepnum = Integer.parseInt(maingameevent.getByName("stepnum"));
gameendlayer.setCell(0,0,3);
setEndState();
gamestate = USERSIT;
waitoppsprite.setVisible(false);
regetflag = false;
break;
case GobangEvent.OPPANTITIE: //对家不同意求和
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
sendflag = false;
resendflag = 0;
waitoppsprite.setVisible(false);
operatelayerstart();
stepnum = Integer.parseInt(maingameevent.getByName("stepnum"));
promptcontrol.init("对家不同意和棋!",chatfont);
promptcontrol.setDisplay(true);
promptcontrol.setPosition(30,30);
mousesprite.setPosition(promptcontrol.getFocusX()+10,promptcontrol.getFocusY()+10);
break;
case GobangEvent.USERAGREENTIE: //同意对家求和响应
sendflag = false;
resendflag = 0;
gameendlayer.setCell(0,0,3);
setEndState();
gamestate = USERSIT;
waitoppsprite.setVisible(false);
regetflag = false;
break;
case GobangEvent.OPPSURRENDER: //对家认输
gameendlayer.setCell(0,0,2);
setEndState();
break;
case GobangEvent.USERSURRENDER: //用户认输响应
sendflag = false;
resendflag = 0;
gameendlayer.setCell(0,0,1);
setEndState();
break;
case GobangEvent.BLACKWIN: //黑棋胜
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
sendflag = false;
resendflag = 0;
if(usercolor==BLACK_COLOR){
gameendlayer.setCell(0,0,2);
}else{
gameendlayer.setCell(0,0,1);
}
setEndState();
break;
case GobangEvent.WHITEWIN: //白旗胜
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
sendflag = false;
resendflag = 0;
if(usercolor==WHITE_COLOR){
gameendlayer.setCell(0,0,2);
}else{
gameendlayer.setCell(0,0,1);
}
setEndState();
break;
case GobangEvent.GAMEEQUAL: //平局
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
sendflag = false;
resendflag = 0;
gameendlayer.setCell(0,0,3);
setEndState();
break;
case GobangEvent.OPPSTANDUP: //对家站起
waitopptimer = 0; //等待对家下子等待时间清零
waitoppflag = false; //等待对家反应标志置否
oppExit();
clearCanvas();
break;
case GobangEvent.OPPEXIT: //对家退出游戏
oppE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -