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 {// 房间两个人,移除异常的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形式)相关推荐
- c语言关于21点游戏人机对战人人对战设计及源代码
21点游戏要求做到设计出人和电脑对战的21点游戏,同时电脑既然作为另一个玩家,也就必须具备自主选择的意识,那么在21点中,需要电脑做出选择的也就是几个选项,一是牌点的比较,二是根据目前形势是否要牌的判 ...
- python完成‘21点游戏’
完成'21点游戏' 人机对战: 输入玩家姓名: 玩家可以多次要牌,其中JQK,大小王是半点,其他是正常点数,玩家每要一次牌就打印下当前点数和系统点数. 可以设置系统:只要大于等于21点就不要牌了,系统 ...
- java井字游戏_java井字棋源代码(双人对战版)
[实例简介] [实例截图] [核心代码] package com.pan.ttt; import java.awt.*; import java.awt.event.*; import javax.s ...
- 一小时学会C++开发双人对战版五子棋游戏,小白看完也能自己写游戏啦!
VC++ 双人对战的五子棋游戏 界面新颖附源码,VC.NET源码项目,五子棋-UI美化实例源码.看一看截图吧,是不是看上去很有感觉的五子棋. 程序流程图: 游戏界面如下: 项目结构展示: 部分源码展示 ...
- matlab小游戏,MATLAB实现五子棋游戏(双人对战、可悔棋)
本文实例为大家分享了MATLAB实现五子棋游戏的具体代码,供大家参考,具体内容如下 程序介绍: 1.此游戏只可用于双人对战. 2.棋盘颜色.棋盘格数.棋子颜色等参数均可自由设置 3.鼠标点击非棋盘区域 ...
- c语言联机游戏,C/C++ 游戏 贪吃蛇双人对战版
贪吃蛇双人对战版--C语言 最近写的,用于交最后一次结构化程序设计课的作业,闲暇之余传到网上,仅供参考,新手上路,请多指教. 话不多说,先附上下载链接.http://download.csdn.net ...
- 51单片机系列(三)51 单片机游戏设计 —— 双人对战小游戏(石头剪刀布)
本博客51单片机实训系列,旨在记录本人在大学上单片机技术这门课时所做的课程实训内容,并与大家分享基于51单片的课程作业,如果作业中的某些细节和代码能给大家一点启发那就更好了,希望大家能用51单片机做出 ...
- JAVA单机五子棋小游戏(双人对战版)
此代码为简单双人对战五子棋程序,不涉及算法游戏策略. 具有轮流出手,判断输赢,判断输入是否合法功能. 运行效果如图: import java.io.*; public class Gobang {// ...
- 用javascript+jquery编写的小游戏-贪吃蛇(双人对战版)
前言 这是我在多年前初学jquery, 并结合javascript, 编写的一个小游戏.那洋洋洒洒几千行的js代码时刻提醒着我"不忘初心!". 效果演示 代码 引入文件 由于用到了 ...
最新文章
- rust墙壁升级点什么_分享:如何在阅读Rust项目源码中学习
- 角谷定理python输出变化过程,Python 100例——第十章----定理与猜想
- 10、java中文件的抽象表示
- ubuntu防火墙操作
- 改变程序设计、图灵奖得主、美国第一位计算机科学女博士,程序媛进击史
- 洛谷 P1420 最长连号【最长合法子序列/断则归一】
- 佳顺通用进销存系统去广告_怎样选择免费进销存软件?
- 项目实施方案指导性文件
- kvaser canking 的使用
- 如何选择注塑机动力系统
- 2019牛客多校第八场 BBeauty Values dp
- 每天两分钟 远离电脑病
- 创新电影院布局5G+4K,移动电影院成放映领域的“黑科技”
- c语言转义字符详解,C语言转义字符和格式控制符参考
- 店宝宝:第一时间发布!网店店主必看
- GSoC、CSDN 开源夏令营--我的开源社区之旅
- 情绪:感觉、思考和沟通(无助益情绪通常由哪些非理性思考带来的、以及怎么减少这种无助益情绪...
- 最好的3个安卓epub阅读器
- 国内IT公司病种,需要合理协调,共同进步,才能不被嘈乱的世道所唾弃
- python识别火车票二维码_python实现的一个火车票转让信息采集器