亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? house.java

?? 21點手機網絡游戲源碼,大家可以看看
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package com.dfun.blackjackServer;

import java.util.*;

public class House {
	private Control ctrl; //主控
	private HouseManage houseManage; //房間管理
	public String houseId; //戶間id
	public String houseName; //房間名稱
	public String creatorId; //創建者id
	public String creatorName; //創建者名稱
	public int maxClient; //最高上限
	private int userCount; //當前房間用戶總數
	private Vector cards = new Vector(); //還未發的牘列表
	private int[][] userCards; //已經下發牌列表
	private int userCardsIndex;
	//游戲狀態0為等待人數到齊,1為游戲已開始進入下注等待,2為下注完畢進入要牌等待,
	//3普通用戶要牌完畢將游戲狀態標志為莊家要牌并進入下一盤游戲開始的等待

	private int gameState;
	public House(Control ctrl, HouseManage houseManage, String houseId, String houseName, String creatorId, String creatorName, int maxClient) {
		this.ctrl = ctrl;
		this.houseManage = houseManage;
		this.houseId = houseId;
		this.houseName = houseName;
		this.creatorId = creatorId;
		this.creatorName = creatorName;
		this.maxClient = maxClient;
		initCard();
	}

	/*****************************************************
	 * 功能介紹:初始化牌
	 * 輸入參數:無
	 * 輸出參數:無
	 ****************************************************/
	public void initCard() {
		userCardsIndex = -1;
		userCards = new int[52][3];
		while (cards.size() != 0) {
			cards.remove(0);
		}

		for (int i = 1; i <= 52; i++) {
			cards.add(Integer.toString(i));
		}
	}

	/*****************************************************
	 * 功能介紹:當前房間用戶總數
	 * 輸入參數:無
	 * 輸出參數:當前房間用戶總數
	 ****************************************************/
	public int getUserCount() {
		return userCount;
	}

	/*****************************************************
	 * 功能介紹:進入房間
	 * 輸入參數:用戶id
	 * 輸出參數:是否成功
	 ****************************************************/
	public void intoHouse(String userId) {

		User user = (User) ctrl.userManage.getUser(userId);
		if (user == null) {
			return;
		}
		//檢測人數是否上限,如果上限則不能進入
		if (userCount >= maxClient) {
			ctrl.sendTwoData(userId, "05full");
			return;
		}
		user.houseId = houseId;
		userCount++;
		Hashtable houseList = ctrl.userManage.getHouseUserList(houseId);
		Enumeration em = houseList.elements();
		String strHouseUser = "999999" + "," + "莊家" + "," + "00000000000" + ",";
		String strChipIn = getJettonList(houseList.elements(), houseList.size());
		for (int i = 0; i < houseList.size(); i++) {
			user = (User) em.nextElement();
			strHouseUser = strHouseUser + user.userId + "," + user.userName + "," + user.phoneNumber + ",";
		}

		if (userCount < maxClient) { //加入后人數未達上限
			if (gameState == 0) { //游戲還未開始則已普通身份加入并等待用戶到齊
				sendInfoToHouseUser("05" + strHouseUser);
			}
			else if (gameState > 0) { //如果游戲已開始,該用戶則以觀眾身份加入,并下發用戶列表,籌碼列表,已發牌列表
				user.userState = 10;
				String userCards = this.getCards();
				ctrl.sendTwoData(userId, "16" + strHouseUser + "*" + strChipIn + "*" + userCards + "*");
				sendInfoToHouseUser("15" + strHouseUser + "*" + strChipIn + "*", userId);
			}
		}
		else { //人數上限
			if (gameState == 0) { //游戲還未開始則已普通身份加入并等待用戶到齊
				gameState = 1; //把游戲狀態標志為開始下注,讓游戲開始
				sendInfoToHouseUser("07" + strHouseUser + "*" + strChipIn + "*");
			}
			else if (gameState > 0) { //如果游戲已開始,該用戶則以觀眾身份加入,并下發用戶列表,籌碼列表,已發牌列表
				user.userState = 10;
				String userCards = this.getCards();
				ctrl.sendTwoData(userId, "16" + strHouseUser + "*" + strChipIn + "*" + userCards + "*");
				sendInfoToHouseUser("15" + strHouseUser + "*" + strChipIn + "*", userId);
			}
		}
		System.out.println("新加入用戶狀態為" + user.userState);
	}

	/*****************************************************
	 * 功能介紹:退出房間
	 * 輸入參數:用戶id
	 * 輸出參數:無
	 ****************************************************/
	public void outHouse(String userId) {
		//判斷是否可以退出
		User user = (User) ctrl.userManage.getUser(userId);
		if (user == null) {
			return;
		}
		userCount--;
		user.houseId = "";
		ctrl.sendOneData(userId, "06" + "ok");
		//如果當前房間為空固定房間則清理房間,用戶自建房間則刪除房間
		//如果不為空則發用戶列表
		if (userCount == 0) {
			if (!creatorId.equals("999999")) {
				houseManage.removeHouse(houseId); //刪除臨時房間
			}
			else {
				initCard(); //如果是固定房間則重新洗牌
				gameState = 0; //將游戲狀態置為未開始
			}
			ctrl.userManage.sendInfoToAllUser("18" + houseManage.getHouseList());
		}
		else {
			Hashtable userList = ctrl.userManage.getHouseUserList(houseId);
			Enumeration em = userList.elements();
			String strHouseUser = "999999" + "," + "莊家" + "," + "00000000000" + ",";
			for (int i = 0; i < userList.size(); i++) {
				user = (User) em.nextElement();
				strHouseUser = strHouseUser + user.userId + "," + user.userName + "," + user.phoneNumber + ",";
			}
			sendInfoToHouseUser("17" + strHouseUser);
			//用戶離開發,針對游戲現在所處的狀況做一些處理
			switch (gameState) {
				case 0: //游戲狀態0為等待人數到齊
					break;
				case 1: //1為游戲已開始進入下注等待
					chuckChipOver();
					break;
				case 2: //2為下注完畢進入要牌等待
					checkDellOver();
					break;
				case 3: //3普通用戶要牌完畢將游戲狀態標志為莊家要牌并進入下一盤游戲開始的等待
					break;
			}
		}
	}

	/*****************************************************
	 * 功能介紹:用戶下線
	 * 輸入參數:用戶id
	 * 輸出參數:無
	 ****************************************************/
	public void userOffline(String userId) {
		userCount--;
		User user = (User) ctrl.userManage.getUser(userId);
		user.houseId = "";
		ctrl.userManage.removeUser(userId);
		if (userCount == 0) {
			if (!creatorId.equals("999999")) {
				//刪除臨時房間
				houseManage.removeHouse(houseId);
			}
			else {
				//如果是固定房間則重新洗牌
				initCard();
				gameState = 0;
			}
			ctrl.userManage.sendInfoToAllUser("18" + houseManage.getHouseList());
		}
		else {
			Hashtable userList = ctrl.userManage.getHouseUserList(houseId);
			Enumeration em = userList.elements();
			String strHouseUser = "999999" + "," + "莊家" + "," + "00000000000" + ",";
			for (int i = 0; i < userList.size(); i++) {
				user = (User) em.nextElement();
				strHouseUser = strHouseUser + user.userId + "," + user.userName + "," + user.phoneNumber + ",";
			}
			sendInfoToHouseUser("17" + strHouseUser);
			//用戶離開發,針對游戲現在所處的狀況做一些處理
			switch (gameState) {
				case 0: //游戲狀態0為等待人數到齊
					break;
				case 1: //1為游戲已開始進入下注等待
					chuckChipOver();
					break;
				case 2: //2為下注完畢進入要牌等待
					checkDellOver();
					break;
				case 3: //3普通用戶要牌完畢將游戲狀態標志為莊家要牌并進入下一盤游戲開始的等待
					break;
			}
		}
	}

	/*****************************************************
	 * 功能介紹:發送消息給當前房間中的所有用戶
	 * 輸入參數:要輸出的消息
	 * 輸出參數:無
	 ****************************************************/
	public void sendInfoToHouseUser(String outStr) {
		Hashtable userList = ctrl.userManage.getHouseUserList(houseId);
		Enumeration em = userList.elements();
		for (int i = 0; i < userList.size(); i++) {
			User user = (User) em.nextElement();
			ctrl.sendTwoData(user.userId, outStr);
		}
	}

	/*****************************************************
	 * 功能介紹:發送消息給當前房間中的所有用戶指定的用戶除外
	 * 輸入參數:要輸出的消息,除外的用戶
	 * 輸出參數:無
	 ****************************************************/
	public void sendInfoToHouseUser(String outStr, String userId) {
		Hashtable userList = ctrl.userManage.getHouseUserList(houseId);
		Enumeration em = userList.elements();
		for (int i = 0; i < userList.size(); i++) {
			User user = (User) em.nextElement();
			if (!user.userId.equals(userId)) { //不包含指定的用戶
				ctrl.sendTwoData(user.userId, outStr);
			}
		}
	}

	/*****************************************************
	 * 功能介紹:檢查下注是否完畢
	 * 輸入參數:無
	 * 輸出參數:無
	 ****************************************************/
	public void chuckChipOver() {
		Hashtable userList = ctrl.userManage.getHouseUserList(houseId);
		Enumeration em = userList.elements();
		for (int i = 0; i < userList.size(); i++) {
			User user = (User) em.nextElement();
			if (user.userState != 1 && user.userState != 10) {
				System.out.println(user.userId + " 沒有準備好進入等待,當前狀態為" + user.userState);
				return;
			}
		}
		gameState = 2; //所有用戶均下注完畢則進入要牌程序
		em = userList.elements();
		deal(999999, 0);
		for (int i = 0; i < userList.size(); i++) {
			User user = (User) em.nextElement();
			if (user.userState == 1) {
				deal(Integer.parseInt(user.userId), 0);
				deal(Integer.parseInt(user.userId), 0);
			}
		}
		String cards = getCards();
		String jeton = getJettonList(userList.elements(), userList.size());
		sendInfoToHouseUser("08" + cards);
		sendInfoToHouseUser("09" + jeton);
		checkDellOver(); //檢查是否要牌結束,防止所有人都沒下注變成觀眾
	}

	/*****************************************************
	 * 功能介紹:發牌
	 * 輸入參數:用戶id,第幾手牌(分牌)
	 * 輸出參數:無
	 ****************************************************/
	public void deal(int userId, int number) {
		int index = Init.ramdon(cards.size()) - 1;
		userCardsIndex++;
		userCards[userCardsIndex][0] = userId;
		userCards[userCardsIndex][1] = Integer.parseInt( (String) cards.elementAt(index));
		userCards[userCardsIndex][2] = number;
		cards.remove(index);
	}

	/*****************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品网站在线播放| 欧美激情一区三区| 丁香婷婷综合色啪| 亚洲3atv精品一区二区三区| 久久精品亚洲乱码伦伦中文| 欧美一区日韩一区| 色女孩综合影院| 国产精品1区2区3区| 蜜臀av一区二区在线观看| 亚洲免费在线播放| 中文字幕一区二区三区在线不卡| 日韩精品一区二区三区四区视频| 欧美三级视频在线观看| 成人av资源网站| 国产成人精品在线看| 久久国产尿小便嘘嘘尿| 天堂蜜桃一区二区三区| 亚洲综合图片区| 亚洲精品美国一| 日韩理论片网站| 国产亚洲欧美色| 精品日本一线二线三线不卡| 91精品国产综合久久久久| 在线国产电影不卡| 91免费在线看| 一本色道久久综合精品竹菊| 99在线精品观看| 日韩久久久久久| 色噜噜狠狠成人网p站| 韩国一区二区三区| 亚洲无线码一区二区三区| 久久亚洲一区二区三区明星换脸| 555www色欧美视频| 成人丝袜18视频在线观看| 午夜久久久久久久久| 国产精品三级久久久久三级| 欧美日韩久久一区| 麻豆一区二区99久久久久| 亚洲最大的成人av| 亚洲自拍偷拍麻豆| 午夜精品福利一区二区蜜股av| 亚洲精品伦理在线| 亚洲一卡二卡三卡四卡无卡久久| 一二三区精品视频| 香港成人在线视频| 热久久免费视频| 激情都市一区二区| 粉嫩aⅴ一区二区三区四区 | 国产精品自拍在线| 国产在线看一区| 国产一区二区三区免费播放| 国产精品一二三区在线| 99久久国产免费看| 欧美在线视频全部完| 国产黄色91视频| 亚洲高清免费一级二级三级| 综合激情成人伊人| 国产精品女人毛片| 国产亚洲欧美中文| 久久综合久久99| 精品国产a毛片| 日韩三级.com| 91精品国产综合久久精品麻豆| 91极品美女在线| 色婷婷一区二区三区四区| 99久久久无码国产精品| 成人av动漫网站| 成人免费的视频| 9i在线看片成人免费| 成人精品视频一区| 国产a级毛片一区| 成人午夜精品一区二区三区| 国产成人啪免费观看软件| 国产精品一区二区你懂的| 狠狠色狠狠色合久久伊人| 精品一区二区三区的国产在线播放| 日韩精品乱码免费| 免费高清成人在线| 国产一区二区三区不卡在线观看 | 欧美曰成人黄网| 欧美亚洲一区二区三区四区| 91极品美女在线| 欧美乱妇15p| 日韩一区二区三区电影在线观看| 欧美大胆人体bbbb| 国产日韩欧美精品一区| 国产精品入口麻豆原神| 中文字幕一区二区在线播放| 六月丁香婷婷色狠狠久久| 玖玖九九国产精品| 国产一区二区在线视频| 国产精品一区在线观看乱码 | 欧美在线观看视频在线| 欧美三级在线播放| 日韩一级欧美一级| 日本一区二区视频在线观看| 国产精品久久久久久久第一福利| 专区另类欧美日韩| 亚洲成人综合视频| 国内精品第一页| 91在线小视频| 欧美猛男gaygay网站| 精品免费视频一区二区| 中文字幕亚洲欧美在线不卡| 亚洲一区在线观看免费 | 中文字幕色av一区二区三区| 樱桃国产成人精品视频| 免费三级欧美电影| 成人美女视频在线观看18| 欧美三级电影精品| 久久免费看少妇高潮| 亚洲精品国产品国语在线app| 蜜桃一区二区三区在线观看| 成人久久18免费网站麻豆| 欧美久久久久久蜜桃| 久久精品视频一区二区| 亚洲成人福利片| 国产成人av一区| 欧美人xxxx| 国产精品久久网站| 美女在线视频一区| 色欧美乱欧美15图片| 久久亚洲一区二区三区明星换脸| 亚洲午夜在线观看视频在线| 国产精品一区二区久激情瑜伽| 欧洲中文字幕精品| 国产欧美一区二区精品婷婷| 偷拍一区二区三区四区| 99r国产精品| 久久影院午夜片一区| 午夜精品福利视频网站| 91在线国产观看| 久久久久国产一区二区三区四区| 午夜欧美在线一二页| 色综合久久中文综合久久97| 337p日本欧洲亚洲大胆精品| 高清免费成人av| 日韩免费观看高清完整版在线观看| 1区2区3区精品视频| 国产精品亚洲一区二区三区在线 | 国产成人精品免费在线| 这里是久久伊人| 亚洲国产精品久久久久秋霞影院 | 欧洲人成人精品| 欧美激情在线免费观看| 国产一区二区在线免费观看| 欧美一区午夜视频在线观看 | 久久国产精品99久久久久久老狼| 一本色道综合亚洲| 中文字幕一区不卡| 粉嫩蜜臀av国产精品网站| 久久久亚洲午夜电影| 乱一区二区av| 精品理论电影在线| 九九国产精品视频| 日韩欧美一区二区久久婷婷| 男男成人高潮片免费网站| 欧美日韩激情在线| 亚洲va国产天堂va久久en| 91久久精品午夜一区二区| 一区二区三区影院| 色天使久久综合网天天| 亚洲精品ww久久久久久p站| 色综合久久天天| 亚洲美女偷拍久久| 在线观看一区二区视频| 亚洲综合色视频| 欧美日韩亚洲国产综合| 午夜精品一区二区三区免费视频| 在线观看亚洲成人| 亚洲午夜精品一区二区三区他趣| 欧美专区亚洲专区| 午夜精品久久久久久久久久| 欧美日韩国产免费一区二区 | 日本韩国欧美三级| 天堂久久一区二区三区| 91精品欧美综合在线观看最新| 首页国产丝袜综合| 日韩欧美一级在线播放| 国产一区福利在线| 综合久久综合久久| 欧美午夜理伦三级在线观看| 日韩不卡一二三区| 久久久久久一二三区| 成人av网在线| 亚洲图片欧美一区| 日韩欧美激情一区| hitomi一区二区三区精品| 亚洲精品乱码久久久久久日本蜜臀| 欧美天天综合网| 另类小说欧美激情| 中文字幕在线一区免费| 在线观看视频91| 奇米影视一区二区三区小说| 亚洲色图20p| 欧美丰满少妇xxxxx高潮对白| 狠狠色狠狠色合久久伊人| 亚洲欧美在线观看| 欧美一区中文字幕| av资源网一区|