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

📄 roomlist.java

📁 java程序五子棋源代码。 java程序五子棋源代码。
💻 JAVA
字号:
package com.tianxia.qipai.view.game.gobang;

import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.Spacer;
import javax.microedition.lcdui.Ticker;

import com.tianxia.qipai.control.game.gobang.GobangControl;
import com.tianxia.qipai.event.*;
import com.tianxia.qipai.model.game.gobang.GobangDeal;
import com.tianxia.qipai.model.game.gobang.GobangTimer;
import com.tianxia.qipai.model.game.gobang.RoomStruct;
import com.tianxia.qipai.model.game.gobang.TimeAdd;
import com.tianxia.qipai.model.util.GameEventDeal;


public class RoomList implements CommandListener,GameEventDeal,TimeAdd {
	private GobangControl gobangcontrol;
	private Display display;
	private List roomlist;
	private MainGameEvent maingameevent;    //事件内容
	private Form conprompt;    //提示界面
	//private CommStructNode commstructnode = null;   //通信结点
	private GobangDeal gobangdeal;
	private boolean listflag=true;          //是否要刷新游戏列表
	private boolean counterflag = false;    //是否获得用户的游戏统计数据
	private final int roomcount = 5;
	private RoomStruct roomstruct[] = new RoomStruct[roomcount];
	private static RoomList instance = null;
	private int currcount = 0;
	
//	private boolean reconnectflag;  //服务器重连标志
	private boolean reflashflag;
	private final static Command CMD_BACK = new Command("返回", Command.BACK, 1);
	private final static Command CMD_AFFIRM = new Command("确认", Command.OK, 1);
	private GobangTimer gobangtimer;
	public RoomList() {
		super();
//		reconnectflag = false;
		reflashflag = false;
		counterflag = false;
		gobangcontrol = null;
		
		
	}

	
	public void init(GobangControl gobangcontrol){
		this.gobangcontrol = gobangcontrol;	
		currcount=30;
		display = gobangcontrol.getDisplay();
		gobangdeal = GobangDeal.getInstance();
		maingameevent = gobangcontrol.getMainGameEvent();
		gobangdeal.init(maingameevent);
		gobangdeal.setEventDeal(this);
	//	for(int i=0;i<roomcount;i++){
		//	roomstruct[i] = new RoomStruct();
		//}
		
		ConPromptFormInit();
		display.setCurrent(conprompt);
		conprompt = null;
		gobangcontrol.rt.gc();
		BeginThead();
	}
	
	public void BeginThead(){
		if(gobangtimer != null){
			gobangtimer.ToExit();
			gobangtimer = null;
		}
		gobangtimer = new GobangTimer(this);
		gobangtimer.start();
		
	}

	public static synchronized RoomList getInstance(){
		if(instance == null){
			instance = new RoomList();
		}
			return instance;
	}

	
	
	public Display getDiplay(){
		return this.display;
	}
	
	public void setListFlag(boolean listflag){
		this.listflag = listflag;
	}
	
	//	正在连接服务器提示界面
	private void ConPromptFormInit(){
		if(conprompt != null)
			conprompt = null;
		conprompt = new Form("连接服务器");
		//conprompt.deleteAll();
		conprompt.setTitle("正连接服务器");
		String temp = "正连接服务器,请稍等!";
		conprompt.setTicker(new Ticker(temp));
		conprompt.append(new Spacer(2,10));
					
		
	}
	
	//正在重新连接服务器提示界面
	private void ReConPromptFormInit(){
		if(conprompt != null)
			conprompt = null;
		conprompt = new Form("连接服务器");
		conprompt.setTitle("重新连接服务器");
		String temp = "正重新连接服务器,请稍等!";
		conprompt.setTicker(null);
		conprompt.setTicker(new Ticker(temp));
		conprompt.append(new Spacer(2,10));
		conprompt.append("您已经断线,现在正在重新连接服务器,请稍等");
				
	}
	
	//无法连接服务器提示界面
	private void DisConPromptInit(){
		Form  connectfailform = new Form("与服务器断开");
		connectfailform.append("无法重新连接服务器,请稍后重新登陆!");
		connectfailform.addCommand(CMD_AFFIRM);
		connectfailform.setCommandListener(this);
		display.setCurrent(connectfailform);
		connectfailform=null;
		
	}
	
	
	
	public void RoomListDisplay(){
		String temp;
		if(listflag){
			if(roomlist ==null){
				String[] stringArray = {};
				Image[] imageArray = null;
				roomlist =new List("游戏列表", Choice.IMPLICIT,stringArray,imageArray);
				roomlist.addCommand(CMD_BACK);
				roomlist.setCommandListener(this);
			}
			roomlist.deleteAll();
			for(int i = 0 ; i < roomcount ; i ++){
					temp ="房间"+ roomstruct[i].roomnum + "(" + roomstruct[i].onlinenum 
					  + "/" + roomstruct[i].capacity + ")";
				roomlist.append(temp,null);
				
			}
			roomlist.addCommand(CMD_BACK);
			roomlist.setCommandListener(this);
			display.setCurrent(roomlist);
		}
		
			
	}
	
	//正在进入房间界面
	public void EnteringRoom(){
		if(conprompt != null)
			conprompt = null;
		conprompt = new Form("连接服务器");
		conprompt.setTitle("正登录房间");
		String temp = "正登录房间,请稍等!";
		conprompt.setTicker(new Ticker(temp));
		conprompt.append(new Spacer(2,10));
		conprompt.append("nkkkkk");
		listflag = false;
		
			
	}

	public void commandAction(Command cmd, Displayable arg1) {
		// TODO 自动生成方法存根
		if(cmd == CMD_AFFIRM){
			gobangcontrol.handleEvent(MainGameEvent.MAINGAMEEXIT,maingameevent);
			
		}else if(cmd==CMD_BACK){
			gobangcontrol.handleEvent(GobangEvent.GOBANGEXIT,maingameevent);
		}
		else if(cmd==List.SELECT_COMMAND){
			int i = roomlist.getSelectedIndex();
			maingameevent.setByName("roomnum",String.valueOf(roomstruct[i].roomnum));
			maingameevent.setByName("capacity",String.valueOf(roomstruct[i].capacity));
			maingameevent.setByName("onlinenum",String.valueOf(roomstruct[i].onlinenum));
			maingameevent.setByName("tablecount",String.valueOf(roomstruct[i].GetTableCount()));
			maingameevent.getCommNode().setRoomId(String.valueOf(roomstruct[i].roomnum));
			EnteringRoom();
			display.setCurrent(conprompt);
			conprompt = null;
			gobangcontrol.rt.gc();
			if(!counterflag)   //还未取得过用户的统计数据
				gobangdeal.enterRoom(maingameevent.getCommNode());
			else         //已经用户的游戏统计数据
				gobangcontrol.handleEvent(GobangEvent.USERCOUNTRECEIVE,maingameevent);
		}
	}


	public void handleEvent(int eventID, MainGameEvent e) {
		this.maingameevent = e;
		switch(eventID){
		
		case GobangEvent.ROOMINFOMODIFY:	
		case GobangEvent.ROOMINFORECEIVE:   //取得房间列表信息
				reflashflag = true;
				roomstruct = gobangdeal.getRoomInfo();
				RoomListDisplay();
				BeginThead();
				break;
			case GobangEvent.USERCOUNTRECEIVE:  //获取大厅信息
				counterflag = true;
				reflashflag = false;
				if(gobangtimer != null){
					gobangtimer.ToExit();
					gobangtimer = null;
				}
				maingameevent = null;
				roomstruct = null;
				gobangcontrol.rt.gc();
				System.out.println("freeMoryroomlist:  "+String.valueOf(gobangcontrol.rt.freeMemory()));
				gobangcontrol.handleEvent(GobangEvent.USERCOUNTRECEIVE,e);
				
				break;
			case GobangEvent.EXITROOMRESPOND:
				listflag = true;
				roomstruct = gobangdeal.getRoomInfo();
				RoomListDisplay();
				gobangdeal.getRoomList(maingameevent.getCommNode());
				break;
			case GobangEvent.TORECONNECT:  //正在重新连接服务器
				reflashflag = false;
				ReConPromptFormInit();
				display.setCurrent(conprompt);
				conprompt = null;
				gobangcontrol.rt.gc();
				break;
			case GobangEvent.RECONNECT:  //重连服务器成功
				reflashflag = true;
				break;
			case GobangEvent.DISCONNECT:  //无法连接服务器
				DisConPromptInit();
			
				break;
				
			default:
				break;
		}
		
		// TODO 自动生成方法存根
		
	}


	public void addSec() {   //定时调用函数,设为一秒
		// TODO 自动生成方法存根
		currcount++;
		if(currcount%10==0&&reflashflag){  //每10秒刷新一次屏幕
			roomstruct = gobangdeal.getRoomInfo();  //获取房间信息
			RoomListDisplay();
			     
		}
		if(currcount%30==0){ //每30秒发送一个在线检测包
			if(maingameevent!=null)
				gobangdeal.setCheckFlag(maingameevent.getCommNode().getUserId());
				currcount=0;
		}
		//System.out.println("*********************roomlist");
		
	}

	
	public void setNull(){
		if(gobangtimer!=null){
			gobangtimer.ToExit();
			gobangtimer = null;
		}
		gobangcontrol = null;
		display = null;
		roomlist=null;
		if(maingameevent != null){
			gobangdeal.ExitGame(maingameevent.getCommNode().getUserId());
		}
		conprompt=null;    //提示界面
		gobangdeal.setNull();
		gobangdeal = null;
		roomstruct=null;
		instance = null;
		
	}
}

⌨️ 快捷键说明

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