📄 gobangcanvas.java
字号:
}
int action = getGameAction(keyCode);
switch(action)
{
case Canvas.UP : //向上
if(menucontrol.getvisibleflag()){
menucontrol.toUp();
}else{
switch (mousesprite.getRectFlag())
{
case QIPAN_RECT_FLAG: //棋盘区域
selectsprite.NextPosition(0);
break;
case CHAT_RECT_FLAG: //聊天框区域
case OPERATE_RECT_FLAG: //操作菜单区域
case INFO_RECT_FLAG:
mousesprite.NextPosition(0);
if(!qipanselectflag||gamestate == OPPFALL){ //棋盘区域不能被选种
if(mousesprite.getRectFlag()==QIPAN_RECT_FLAG)
mousesprite.NextPosition(0); //移动中心到棋盘区域的下一个区域
}
break;
default:
break;
}
}
break ;
case Canvas.DOWN : //向下
if(menucontrol.getvisibleflag()){
menucontrol.toDown();
}else{
switch (mousesprite.getRectFlag())
{
case QIPAN_RECT_FLAG: //棋盘区域
selectsprite.NextPosition(1);
break;
case CHAT_RECT_FLAG: //聊天框区域
case OPERATE_RECT_FLAG: //操作菜单区域
case INFO_RECT_FLAG:
mousesprite.NextPosition(1);
if(!qipanselectflag||gamestate == OPPFALL){ //棋盘区域不能被选种
if(mousesprite.getRectFlag()==QIPAN_RECT_FLAG)
mousesprite.NextPosition(1); //移动中心到棋盘区域的下一个区域
}
break;
default:
break;
}
}
break ;
case Canvas.LEFT : //向左
if(menucontrol.getvisibleflag()){
break;
}
switch (mousesprite.getRectFlag())
{
case QIPAN_RECT_FLAG: //棋盘区域
selectsprite.NextPosition(2);
break;
case CHAT_RECT_FLAG: //聊天框区域
case OPERATE_RECT_FLAG: //操作菜单区域
case INFO_RECT_FLAG:
mousesprite.NextPosition(2);
if(!qipanselectflag||gamestate == OPPFALL){ //棋盘区域不能被选种
if(mousesprite.getRectFlag()==QIPAN_RECT_FLAG)
mousesprite.NextPosition(2); //移动中心到棋盘区域的下一个区域
}
break;
default:
break;
}
break ;
case Canvas.RIGHT: //向右
if(menucontrol.getvisibleflag()){
break;
}
switch (mousesprite.getRectFlag())
{
case QIPAN_RECT_FLAG: //棋盘区域
selectsprite.NextPosition(3);
break;
case CHAT_RECT_FLAG: //聊天框区域
case OPERATE_RECT_FLAG: //操作菜单区域
if(gamestate != 2){ //是否已经开始游戏(由于开始游戏前与游戏后操作菜单项数不一样)
if(mousesprite.getCurrx() == 2)
mousesprite.NextPosition(3);
}
case 3:
mousesprite.NextPosition(3);
if(!qipanselectflag||gamestate == OPPFALL){ //棋盘区域不能被选种
if(mousesprite.getRectFlag()==QIPAN_RECT_FLAG)
mousesprite.NextPosition(3); //移动中心到棋盘区域的下一个区域
}
break;
default:
break;
}
break ;
case Canvas.FIRE: //选择键
if(menucontrol.getvisibleflag()){
switch (menucontrol.getmenustate()){
case EXITMENUM:
menucontrol.toHide();
mousesprite.setDisplay();
break;
case STANDUP:
sendflag = true;
gobangdeal.setUpRequest(maingameevent.getCommNode());
break;
case HELP_SHOW:
helpflag = true;
helpsprite.setVisible(true);
mousesprite.setVisible(false);
menucontrol.toHide();
break;
case EXIT_GAME:
sendflag = true;
gobangdeal.ExitGame(commstructnode.getUserId());
gobangcontrol.handleEvent(GobangEvent.MAINGAMEEXIT,maingameevent);
break;
default:
break;
}
}else{
switch (mousesprite.getRectFlag())
{
case QIPAN_RECT_FLAG: //棋盘区域
int xcor = selectsprite.getXvalue();
int ycor = selectsprite.getYvalue();
if(selectsprite.getSelectFlag()&&chessesflag[xcor][ycor]){ //
selectsprite.setSelect();
stepnum ++;
//usertimeflag = false;
sendflag = true;
gobangdeal.setChess(commstructnode,stepnum,xcor+1,ycor+1,usercolor);
int x = selectsprite.getXvalue();
int y = selectsprite.getYvalue();
chessesflag[x][y] = false;
qizilayer.setCell(x,y,usercolor);
presprite.setNewPosition(x,y);
presprite.setVisible(true);
}
break;
case CHAT_RECT_FLAG: //聊天框区域
if(mousesprite.getCurry()==0)
chatcontrol.setOperate(1);
else if(mousesprite.getCurry() == 1)
chatcontrol.setOperate(0);
break;
case OPERATE_RECT_FLAG: //操作菜单区域
operateDeal();
case INFO_RECT_FLAG:
break;
default:
break;
}
}
break ;
default:
break;
}
}
}
if(!menucontrol.getvisibleflag()&&!helpflag)
showUserinfo(); //对用户信息区的信息显示进行处理
paintCanvas();
}
//操作菜单确认键处理
private void operateDeal(){
int i = mousesprite.getCurrx();
if(operateflag[i]){
switch(mousesprite.getCurrx()){
case 0: //用户按操作菜单的第一个按键
if(operateflag[0]){
operateflag[0] = false;
if(gamestate < USERFALL){//用户按开始键
sendflag = true;
gobangdeal.setReadyRequest(commstructnode);
waitsprite.setVisible(true);
graylayer.setCell(0,0,1);
}else if(gamestate ==USERFALL){ //用户按放弃键
stepnum++;
sendflag = true;
gobangdeal.UserGiveUp(commstructnode,stepnum);
operateinit(false);
graylayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,1);
selectsprite.setVisible(false);
}else{//用户按帮助键
helpflag = true;
operateflag[0] = true;
helpsprite.setVisible(true);
mousesprite.setVisible(false);
}
}
break;
case 1: //用户按操作菜单的第二个按键
if(operateflag[1]){
operateflag[1] = false;
if(gamestate<2){ //用户按帮助键
helpflag = true;
operateflag[1] = true;
helpsprite.setVisible(true);
mousesprite.setVisible(false);
}else if(gamestate ==2){ //用户悔棋
if(regetflag){ //可以悔棋
gamestate = 3;
stepnum++;
sendflag = true;
gobangdeal.UserRegret(commstructnode,stepnum);
operateinit(false);
graylayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,1);
waitoppsprite.setVisible(true);
}else{
promptcontrol.init("你还没下过有效子,不能悔棋!",chatfont);
promptcontrol.setDisplay(true);
promptcontrol.setPosition(30,30);
mousesprite.setPosition(promptcontrol.getFocusX()+10,promptcontrol.getFocusY()+10);
}
}else{ //聊天键
}
}
break;
case 2: //用户按操作菜单的第三个按键
if(operateflag[2]){
operateflag[2] = false;
if(gamestate<2){ //用户按返回键
if(backflag){
sendflag = true;
gobangdeal.setUpRequest(maingameevent.getCommNode());
backflag = false;
}
}else if(gamestate ==2){ //用户求和
stepnum++;
sendflag = true;
gobangdeal.UserTie(commstructnode,stepnum);
operateinit(false);
graylayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,1);
waitoppsprite.setVisible(true);
}else{ //设置键
}
}
break;
case 3: //用户按操作菜单的第四个按键
if(operateflag[3]){
operateflag[3] = false;
if(gamestate==2){ //用户按认输键
stepnum++;
sendflag = true;
gobangdeal.UserSurrender(commstructnode,stepnum);
operateinit(false);
graylayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,1);
}
}
break;
default:
break;
}
}
}
//显示用户的具体信息
private void showUserinfo(){
if(mousesprite.getRectFlag()==INFO_RECT_FLAG){
int curry = mousesprite.getCurry();
if(curry == 0){
if(oppinfosprite != null)
oppinfosprite.setVisible(true);
userinfosprite.setVisible(false);
}else if(curry ==1){
if(oppinfosprite != null)
oppinfosprite.setVisible(false);
userinfosprite.setVisible(true);
}
}
}
//隐藏用户的信息
private void hideUserinfo(){
if(oppinfosprite != null)
oppinfosprite.setVisible(false);
userinfosprite.setVisible(false);
}
//对家退出游戏
private void oppExit(){
if(commstructnode.getStatus().equals(USERSTARTSTR)){ //正游戏中
setEndState();
}
if(oppuserinfo.getStatus().equals(USERREADYSTR)){
if(usercolor == BLACK_COLOR){
if(whitesprite!=null)
whitesprite.setVisible(false);
}else{
if(blacksprite!=null)
blacksprite.setVisible(false);
}
}
if(opptimelayer!=null)
opptimelayer.setVisible(false);
if(oppheadsprite!=null)
oppheadsprite.setVisible(false);
}
public void handleEvent(int eventID, MainGameEvent e) {
// TODO 自动生成方法存根
maingameevent = e;
commstructnode = e.getCommNode();
boolean repaintflag = true;
int x,y;
switch(eventID){
case GobangEvent.OPPSITRESPOND:
displayoppinfo();
break;
case GobangEvent.SITRESPOND: //用户坐下成功响应
displayoppinfo();
break;
case GobangEvent.USERSTANDUP: //用户站起成功响应
clearCanvas();
sendflag = false;
resendflag = 0;
if(gamestate >USERREADY)
setEndState();
UpCanvasDeal();
gobangcontrol.handleEvent(GobangEvent.USERSTANDUP,maingameevent);
repaintflag = false;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -