本项目实现了一个双人在线对战的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 {// 房间两个人,移除异常的sessiongameRoom.removeSession(session);}sessionNumber.remove(session);// session的房间号移除}

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

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


设计效果展示

初始化界面:

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

创建房间:

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

双方准备,游戏开始

进行游戏

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

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

庄家听牌后展示结果:

通知输赢

自己准备:

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

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

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

21点游戏双人对战(javaweb形式)相关推荐

  1. c语言关于21点游戏人机对战人人对战设计及源代码

    21点游戏要求做到设计出人和电脑对战的21点游戏,同时电脑既然作为另一个玩家,也就必须具备自主选择的意识,那么在21点中,需要电脑做出选择的也就是几个选项,一是牌点的比较,二是根据目前形势是否要牌的判 ...

  2. python完成‘21点游戏’

    完成'21点游戏' 人机对战: 输入玩家姓名: 玩家可以多次要牌,其中JQK,大小王是半点,其他是正常点数,玩家每要一次牌就打印下当前点数和系统点数. 可以设置系统:只要大于等于21点就不要牌了,系统 ...

  3. java井字游戏_java井字棋源代码(双人对战版)

    [实例简介] [实例截图] [核心代码] package com.pan.ttt; import java.awt.*; import java.awt.event.*; import javax.s ...

  4. 一小时学会C++开发双人对战版五子棋游戏,小白看完也能自己写游戏啦!

    VC++ 双人对战的五子棋游戏 界面新颖附源码,VC.NET源码项目,五子棋-UI美化实例源码.看一看截图吧,是不是看上去很有感觉的五子棋. 程序流程图: 游戏界面如下: 项目结构展示: 部分源码展示 ...

  5. matlab小游戏,MATLAB实现五子棋游戏(双人对战、可悔棋)

    本文实例为大家分享了MATLAB实现五子棋游戏的具体代码,供大家参考,具体内容如下 程序介绍: 1.此游戏只可用于双人对战. 2.棋盘颜色.棋盘格数.棋子颜色等参数均可自由设置 3.鼠标点击非棋盘区域 ...

  6. c语言联机游戏,C/C++ 游戏 贪吃蛇双人对战版

    贪吃蛇双人对战版--C语言 最近写的,用于交最后一次结构化程序设计课的作业,闲暇之余传到网上,仅供参考,新手上路,请多指教. 话不多说,先附上下载链接.http://download.csdn.net ...

  7. 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)

    本博客51单片机实训系列,旨在记录本人在大学上单片机技术这门课时所做的课程实训内容,并与大家分享基于51单片的课程作业,如果作业中的某些细节和代码能给大家一点启发那就更好了,希望大家能用51单片机做出 ...

  8. JAVA单机五子棋小游戏(双人对战版)

    此代码为简单双人对战五子棋程序,不涉及算法游戏策略. 具有轮流出手,判断输赢,判断输入是否合法功能. 运行效果如图: import java.io.*; public class Gobang {// ...

  9. 用javascript+jquery编写的小游戏-贪吃蛇(双人对战版)

    前言 这是我在多年前初学jquery, 并结合javascript, 编写的一个小游戏.那洋洋洒洒几千行的js代码时刻提醒着我"不忘初心!". 效果演示 代码 引入文件 由于用到了 ...

最新文章

  1. rust墙壁升级点什么_分享:如何在阅读Rust项目源码中学习
  2. 角谷定理python输出变化过程,Python 100例——第十章----定理与猜想
  3. 10、java中文件的抽象表示
  4. ubuntu防火墙操作
  5. 改变程序设计、图灵奖得主、美国第一位计算机科学女博士,程序媛进击史
  6. 洛谷 P1420 最长连号【最长合法子序列/断则归一】
  7. 佳顺通用进销存系统去广告_怎样选择免费进销存软件?
  8. 项目实施方案指导性文件
  9. kvaser canking 的使用
  10. 如何选择注塑机动力系统
  11. 2019牛客多校第八场 BBeauty Values dp
  12. 每天两分钟 远离电脑病
  13. 创新电影院布局5G+4K,移动电影院成放映领域的“黑科技”
  14. c语言转义字符详解,C语言转义字符和格式控制符参考
  15. 店宝宝:第一时间发布!网店店主必看
  16. GSoC、CSDN 开源夏令营--我的开源社区之旅
  17. 情绪:感觉、思考和沟通(无助益情绪通常由哪些非理性思考带来的、以及怎么减少这种无助益情绪...
  18. 最好的3个安卓epub阅读器
  19. 国内IT公司病种,需要合理协调,共同进步,才能不被嘈乱的世道所唾弃
  20. python识别火车票二维码_python实现的一个火车票转让信息采集器

热门文章

  1. 如何利用 GitHub 从零开始搭建一个博客
  2. ASEMI肖特基二极管型号大全
  3. 2018记一次面试PHP开发岗笔试题
  4. 霍尼韦尔门禁说明书_霍尼韦尔智能家居 门禁密码锁怎么改密码
  5. 英语计算机简历范文模板,计算机英文简历范文模板
  6. 修改php多文件运行时间,如何修改php文件创建时间
  7. 在Odunpazari现代博物馆,棉花糖激光盛宴以不同寻常的方式将自然带入生活
  8. [STM8L]EEPROM操作读与写
  9. 利用matlab对纯电动汽车在nedc工况下的燃油经济性进行仿真
  10. Java、JFrame制作录制GIF小工具