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

📄 gobanghallcanvas.java

📁 游戏说明
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		try {
			menuimage = Image.createImage("/png/menu.png");
			menudetailimage = Image.createImage("/png/menutemp.png");
		} catch (IOException e) {
			// TODO 自动生成 catch 块
			e.printStackTrace();
		}
		if(!inroomflag){		
			//插入菜单控件
			menucontrol = new MenuControl(menuimage,menudetailimage,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
			menucontrol.init(lm,STATE_NUM,mainWidth,mainHeight);
		}else{
			menucontrol.ReSetImage(menuimage,menudetailimage,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
			menucontrol.init(lm,STATE_NUM,mainWidth,mainHeight);
			menucontrol.ReInit();
		}
		menuimage = null;
		menudetailimage=null;
		gobangcontrol.rt.gc();
		System.out.println("freeMorymenu:  "+String.valueOf(gobangcontrol.rt.freeMemory()));


//		插入帮助提示精灵

		Image helpimage = Image.createImage(HELP_INFO_WIDTH,HELP_INFO_HEIGHT);
		Graphics helpg = helpimage.getGraphics();
		//helpg.setFont(infofont);
		String helpstr = "您可以通过按 * 号键";
		helpg.drawString(helpstr,0,0,Graphics.TOP|Graphics.LEFT);
		helpstr = null;
		helpstr = "来查看本身的资料。";
		helpg.drawString(helpstr,0,infofont.getHeight(),Graphics.TOP|Graphics.LEFT);
		helpstr = null;
		helpstr = "按#号键来退出房间菜单的操作";
		helpg.drawString(helpstr,0,infofont.getHeight()*2,Graphics.TOP|Graphics.LEFT);
		helpstr = null;
		helpg = null;
		//tempimage = setImageAlph(helpimage,false,0xffffffff);
		helpsprite = new Sprite(helpimage);
		tempimage = null;
		helpimage = null;
		
		helpsprite.setPosition(HELPINFO_X,HELPINFO_Y+moveheight);
		lm.insert(helpsprite,0);
		
		gobangcontrol.rt.gc();
		System.out.println("freeMoryhelp:  "+String.valueOf(gobangcontrol.rt.freeMemory()));
	}
	

	
	
	
	//描绘大厅里的用户信息
	protected void drawhallinfo(){
		player = gobangdeal.getPlayerInfo();
		int tableid=0;
		for(int i = 0;i<=SITCOUNT;i++){
			if(!player[i].tableid.equals("")){
				tableid = Integer.parseInt(player[i].tableid);
				if(player[i].picture.equals("00")){
					if(player[i].tableseq.equals("0")){
						playersprite[i] = new PlayerSprite(boyimage1,USER_WIDTH,USER_HEIGHT);
						playersprite[i].init(PFIR_X,PFIR_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
											TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
					}
					else{
						playersprite[i] = new PlayerSprite(boyimage2,USER_WIDTH,USER_HEIGHT);
						playersprite[i].init(PSEC_X,PSEC_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
											TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
					}
				}
				else{
					if(player[i].tableseq.equals("0")){
						playersprite[i] = new PlayerSprite(girlimage1,USER_WIDTH,USER_HEIGHT);
						playersprite[i].init(PFIR_X,PFIR_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
											TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
					}
					else{
						playersprite[i] = new PlayerSprite(girlimage2,USER_WIDTH,USER_HEIGHT);
						playersprite[i].init(PSEC_X,PSEC_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
											TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
					}
				}
				lm.insert(playersprite[i],4);
				if(player[i].status.equals("02")){  //用户状态为准备好
					playersprite[i].nextFrame();
				
				}else if(player[i].status.equals("03")){ //用户状态为正在游戏
					int x = (tableid-1)%TBWIDTH_IN_TILES;
					int y = (tableid -1)/TBWIDTH_IN_TILES;
					gaminglayer.setCell(x,y,1);
				}
				
			}
		
		}
		display.setCurrent(this);
	}
	
//	描绘大厅里信息的改变(坐下/站起)
	protected void modifyhallinfo(){
		String temp = maingameevent.getByName("modnum");
		int modnum = Integer.parseInt(temp);
		int tableid=0;
		player = gobangdeal.getPlayerInfo();
		if(!player[modnum].userid.equals("")){   //其他用户坐下
			playersprite[modnum] = null;
			if(!player[modnum].tableid.equals("")){
				tableid = Integer.parseInt(player[modnum].tableid);
				if(player[modnum].picture.equals("00")){
					if(player[modnum].tableseq.equals("0")){
						playersprite[modnum] = new PlayerSprite(boyimage1,USER_WIDTH,USER_HEIGHT);
						playersprite[modnum].init(PFIR_X,PFIR_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
											TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
					}
					else{
						playersprite[modnum] = new PlayerSprite(boyimage2,USER_WIDTH,USER_HEIGHT);
						playersprite[modnum].init(PSEC_X,PSEC_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
											TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
					}
				}
				else{
					if(player[modnum].tableseq.equals("0")){
						playersprite[modnum] = new PlayerSprite(girlimage1,USER_WIDTH,USER_HEIGHT);
						playersprite[modnum].init(PFIR_X,PFIR_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
											TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
					}
					else{
						playersprite[modnum] = new PlayerSprite(girlimage2,USER_WIDTH,USER_HEIGHT);
						playersprite[modnum].init(PSEC_X,PSEC_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
											TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
					}
				}
				lm.insert(playersprite[modnum],4);
			}
		}else{   //其他用户站起
			if(playersprite[modnum]!=null){
				lm.remove(playersprite[modnum]);
				playersprite[modnum] = null;
			}
			if(player[modnum].status.equals("03")){  //用户在游戏中强退
				tableid = Integer.parseInt(player[modnum].tableid);
				int x = (tableid-1)%TBWIDTH_IN_TILES;
				int y = (tableid-1)/TBWIDTH_IN_TILES;
				gaminglayer.setCell(x,y,0);
				
			}
			
		}
				
	}
	
	
	
	
	//房间里其他用户状态的改变(0:准备好、1:开始游戏、2:游戏结束)
	private void otherstatusmodfy(int operateid){
		String temp = maingameevent.getByName("modnum");
		int modnum = Integer.parseInt(temp);
		int tableid=0;
		player = gobangdeal.getPlayerInfo();
		
		
		if(!player[modnum].tableid.equals("") && !player[modnum].tableseq.equals("")){
			tableid = Integer.parseInt(player[modnum].tableid);
			int x = (tableid-1)%TBWIDTH_IN_TILES;
			int y = (tableid-1)/TBWIDTH_IN_TILES;
			if(operateid == 1){
				gaminglayer.setCell(x,y,1);
				if(playersprite[modnum]!=null){
					if(playersprite[modnum].getFrame() == 1){  //用户1 (桌子左 边)
						playersprite[modnum].nextFrame();
					}
					if(playersprite[modnum+1].getFrame() == 1){//用户2 (桌子右 边)
						playersprite[modnum+1].nextFrame();
					}
					
				}
				
			}else if(operateid == 2){
				gaminglayer.setCell(x,y,0);
				if(playersprite[modnum]!=null){
					if(playersprite[modnum].getFrame() == 1){//用户1 (桌子左 边)
						playersprite[modnum].nextFrame();
					}
					if(playersprite[modnum+1].getFrame() == 1){//用户2 (桌子右 边)
						playersprite[modnum+1].nextFrame();
					}
				}
			
			}else if(operateid ==0){
				if(playersprite[modnum]!=null){
					if(playersprite[modnum].getFrame() == 0){
						playersprite[modnum].nextFrame();
					}
				}
				
			}
		}
		
		
	}
	
	
	
	
	public void commandAction(Command arg0, Displayable arg1) {
		// TODO 自动生成方法存根

	}

//	补充初始化
	
	protected synchronized void keyPressed(int keyCode){
		if(initflag){
			initother();//补充初始化
			initflag = false;
		}
		if(menucontrol == null){//界面最后一个初始化控件,用来判断界面是否已经完成绘制
			return;
		}
		if(helpsprite != null)
			helpsprite.setVisible(false);
		if(userinfosprite!=null)
			userinfosprite.setVisible(false);
		if(otherinfosprite!=null)
			otherinfosprite.setVisible(false);
		
		if(myinfoflag){  //判断是否修改资料
			int infoaction = getGameAction(keyCode);
			if(infoaction == Canvas.FIRE){
				gobangcontrol.handleEvent(UniGameEvent.DATAMODIFYREQ,maingameevent);
			}else{
				handsprite.reflesh();
				myinfosprite.setVisible(false);
				myinfoflag=false;
			}
			paintCanvas();
		}else{
			handsprite.reflesh();
			if(myinfosprite!=null){
				myinfosprite.setVisible(false);
			}
			if(keyCode == 42){//*号键
				displayMYINFO(handsprite.getTableid(),handsprite.getTableseq());
				paintCanvas();
			}else if(keyCode == 35){//#号键  退出房间
				sendflag = true;
				gobangdeal.getExitRoom(maingameevent.getCommNode());
			}
			if(menucontrol != null){
				if(menucontrol.getvisibleflag()){
					menurespond(keyCode);  //对游戏菜单操作
				}
				else{
					hallrespond(keyCode);  //对大厅操作
				}
			}
			
		}
		//if(keyCode == 21||keyCode == -6){ //左恻软件  显示操作菜单
		if(keyCode == 21||keyCode == -21){ //左恻软件  显示操作菜单
			if(menucontrol != null){
				if(menucontrol.getvisibleflag()){
					menucontrol.toHide();
					handsprite.setVisible(true);
				}
				else{
					myinfoflag = false;
					handsprite.setVisible(false);
					menucontrol.toShow();
				}
			}
			
			paintCanvas();
		}
		
		
	}
	
	
//	对游戏菜单响应用户按键操作
	public void menurespond(int keyCode){
		boolean repaintflag = true;
		int action = getGameAction(keyCode);
		switch(action)
		{
			case Canvas.UP :
				menucontrol.toUp();
				break ;
			case Canvas.DOWN :
				menucontrol.toDown();
				break ;
			case Canvas.FIRE:
				switch(menucontrol.getmenustate()){
				case EXITMENU:
					handsprite.setVisible(true);
					menucontrol.toHide();
					break;
				case MYINFO:
					displayMYINFO(handsprite.getTableid(),handsprite.getTableseq());
					break;
				case HELP:
					if(menucontrol.getvisibleflag()){
						menucontrol.toHide();
						handsprite.setVisible(true);
					}
					helpsprite.setVisible(true);
					break;
				case EXITROOM:
					sendflag = true;
					gobangdeal.getExitRoom(maingameevent.getCommNode());
					break;
				case EXITGAME:
					sendflag = true;
					gobangdeal.ExitGame(maingameevent.getCommNode().getUserId());
					gobangcontrol.handleEvent(GobangEvent.MAINGAMEEXIT,maingameevent);
					break;
				default:
					break;
					
				}
		}
		if(repaintflag)
			paintCanvas();
	}
	
	
	//根据按键对大厅进行操作
	public void hallrespond(int keyCode){
		boolean repaintflag = true;
		int tableid =0;
		int tableseq = 0;
		int action = getGameAction(keyCode);
		switch(action)
		{
			case Canvas.UP :
				handsprite.NextPosition(0);
				displayuserinfo(handsprite.getTableid(),handsprite.getTableseq());
				if(handsprite.getY()>yViewWindow){
					break;
				}
				
				moveheight = moveheight - TABLE_HEIGHT;
				menucontrol.ResetPosition(0-TABLE_HEIGHT,0);
				yViewWindow=yViewWindow - TABLE_HEIGHT;
				helpsprite.setPosition(HELPINFO_X,HELPINFO_Y+moveheight);
				lm.setViewWindow(xViewWindow, yViewWindow, wViewWindow, hViewWindow);
				break ;
			case Canvas.DOWN :
				handsprite.NextPosition(1);
				displayuserinfo(handsprite.getTableid(),handsprite.getTableseq());
				if(handsprite.getY()-yViewWindow > mainHeight-TABLE_HEIGHT/2){
					if(yViewWindow+mainHeight+BGTILE_HEIGHT>BG_HEIGHT){
						break;
					}
					moveheight = moveheight + TABLE_HEIGHT;
					menucontrol.ResetPosition(TABLE_HEIGHT,0);
					helpsprite.setPosition(HELPINFO_X,HELPINFO_Y+moveheight);
					yViewWindow=yViewWindow + TABLE_HEIGHT;
					lm.setViewWindow(xViewWindow, yViewWindow, wViewWindow, hViewWindow);
				}
				break ;
			case Canvas.LEFT :
				handsprite.NextPosition(2);
				displayuserinfo(handsprite.getTableid(),handsprite.getTableseq());
				break ;
			case Canvas.RIGHT :
				handsprite.NextPosition(3);
				displayuserinfo(handsprite.getTableid(),handsprite.getTableseq());
				break ;
			case Canvas.FIRE:
				if(handsprite.getSelectFlag()){   //还未按下选择键
					handsprite.setSelect();
					tableid = handsprite.getTableid();
					tableseq = handsprite.getTableseq();
					int sitnum = tableid*2-1+tableseq;
					if(!player[sitnum].userid.equals("")){ //判断座位上是否有人
						//有人,取该用户的详细信息
						sendflag = true;
						gobangdeal.getPlayerDetail(maingameevent.getCommNode().getUserId(),player[sitnum].userid);
					
					}else{//没人,用户自己坐下
						sendflag = true;
						gobangdeal.setSitRequest(commstructnode.getUserId(),commstructnode.getRoomId(),
								String.valueOf(tableid),String.valueOf(tableseq));
					}
					
				}else{
					repaintflag = false;
				}
				break;
			default:
				repaintflag = false;
				break;
		}
		if(repaintflag){
			paintCanvas();
		}
		
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -