21点游戏双人对战(javaweb形式)

本项目实现了一个双人在线对战的web21点游戏,进入页面后需要创建房间或者加入房间,等待房间存在两个人准备即可,等待双方准备完毕即可开始游戏,游戏采用轮庄模式,并实时显示服务器在线人数。

本项目基于springwebsocket,首先要让所以玩家建立一个链接,即对战平台,建立链接与聊天室的方式一样,才能实时信息交互!只有建立的动态链接才能进行下一步!

接下来就是房间系统!!!

先定义通过session找到房间号,通过房间号找到房间的map

private HashMap<String, GameRoom> NumberIndexRoom = new HashMap<String, GameRoom>();
	private HashMap<WebSocketSession, String> sessionNumber = new HashMap<WebSocketSession, String>();


创建房间

public void creatRoom(WebSocketSession session) throws IOException, InterruptedException {
		// 创建房间
		int number = creatRoomNumber();
		GameRoom gameRoom = new GameRoom();
		System.out.println(gameRoom);
		gameRoom.setGameNumber(number + "", session);
		NumberIndexRoom.put(number + "", gameRoom);
		sessionNumber.put(session, number + "");
	}

	private int creatRoomNumber() {
		// 创建唯一的房间号
		Random random = new Random();
		int nextInt;
		while (true) {
			nextInt = random.nextInt(900000) + 100000;
			if (NumberIndexRoom.get(nextInt) == null) {
				return nextInt;
			}
		}
	}


加入房间:

private void joinRoom(WebSocketSession session, String number) throws IOException, InterruptedException {
		// TODO Auto-generated method stub
		// 加入房间
		GameRoom gameRoom = NumberIndexRoom.get(number);
		System.out.println(gameRoom + "房间");
		if (gameRoom == null) {
			session.sendMessage(new TextMessage("b房间不存在"));
		} else {
			if (gameRoom.getRoomOnline() >= 2) {
				session.sendMessage(new TextMessage("b房间人数已满"));
			} else {
				gameRoom.joinRoom(session);
				sessionNumber.put(session, number);
				session.sendMessage(new TextMessage("a" + number));
			}
		}
	}


退出房间:

public void error(WebSocketSession session) throws IOException, InterruptedException {
		// TODO Auto-generated method stub
		// session异常
		String number = sessionNumber.get(session);
		if (number == null)// 还未加入房间,不用处理异常
			return;
		GameRoom gameRoom = NumberIndexRoom.get(number);
		if (gameRoom.getRoomOnline() == 1) {
			// 如果房间只有一个人,直接删除房间
			NumberIndexRoom.remove(number);
		} else {
			// 房间两个人,移除异常的session
			gameRoom.removeSession(session);
		}
		sessionNumber.remove(session);// session的房间号移除
	}

主要的核心是websocket链接还有房间系统,其他的就

是简单的程序设计,在代码注释中都有!


设计效果展示

初始化界面:



 没有加入房间或者创建房间不能进行游戏操作:


创建房间:


将房间号告诉好友,加入房间并双方准备


双方准备,游戏开始


进行游戏

玩家操作没有结束,庄家不能进行操作:


玩家听牌后不能摸牌,等待庄家操作:


庄家听牌后展示结果:


通知输赢

自己准备:


对方也准备就可以开始游戏


项目浏览:http://120.78.164.110:8080/Blackjack/blackjack/blackJack.html

项目源码:https://github.com/Vimmone/BlackJack


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值