⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gobangcanvas.java

📁 游戏说明
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
				}
				
				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 + -