Java实现游戏匹配
游戏组队匹配线程类 主要用到是CyclicBarrier类
package com.api.websocket.game;import java.util.List;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CyclicBarrier;
import java.util.stream.Collectors;/*** 游戏组队匹配线程类** 实际项目远远比这个复杂* 中通过请求接口,第一个玩家创建房间ID* 匹配成功后,socket推送结果,还应该考虑匹配超时处理* @author zhanqi* @since 2020-11-30 22:30:34*/
public class PlayerIn implements Runnable {final int id;final CyclicBarrier barrier;final String roomId;final CopyOnWriteArrayList<Integer> list;public PlayerIn(final int id, final CyclicBarrier barrier,String roomId,CopyOnWriteArrayList<Integer> list) {this.id = id;this.barrier = barrier;this.roomId=roomId;this.list=list;}@Overridepublic void run() {try {System.out.println("玩家"+this.id + "进入");System.out.println("系统匹配中......");Thread.sleep((long) (Math.random() * 10000));List<Integer> result = list.stream().filter(s -> s != id).collect(Collectors.toList());System.out.println("玩家"+this.id +"在房间"+roomId+ "匹配到玩家"+result);this.barrier.await();} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}
}
运行类
package com.api.websocket.game;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CyclicBarrier;/**** @author zhanqi* @since 2020-11-30 22:10:10*/
public class GameMatchingMain {public static void main(String[] args) {CopyOnWriteArrayList<Integer> list = new CopyOnWriteArrayList<>();//3人开始游戏final int count = 3;//房间IDfinal String roomId=UUID.randomUUID().toString();final CyclicBarrier barrier = new CyclicBarrier(count, () ->System.out.println("房间ID:"+roomId+"匹配成功"+list));for (int i = 0; i < 3; i++) {list.add(i);new Thread(new PlayerIn(i, barrier,roomId,list)).start();}}
}
结果
Java实现游戏匹配相关推荐
- java手机游戏模拟器下载_Java手机游戏模拟器
Java手机游戏模拟器主要针对诺基亚S60系列(屏幕176*220)手机以及其他大屏手机(小屏游戏也可运行,但不能全屏显示),是一款非常简单而且实用的JAVA游戏模拟器,可以正常运行绝大部分JAVA手 ...
- Java在游戏服务器开发中的应用
Java在游戏服务器开发中的应用 width="22" height="16" src="http://hits.sinajs.cn/A1/we ...
- 符号库匹配不对的原因_王者荣耀:万恶的游戏匹配机制,最菜的队友才是游戏胜利的关键...
在王者荣耀中排位是我们很多玩家的追求,不过在游戏中,因为排位上不去从此的退出游戏的,也是大有人在.一个游戏有新玩家进入,有老玩家离去是一个游戏正常的生态,不过很多因为上不了段位退出游戏的玩家,并且是因 ...
- java开源游戏下载安装_开源java扫雷游戏,Swing版。
开源java扫雷游戏,Swing版. xC6JnAIE.zip (60.07 KB) 开源java扫雷游戏,Swing版. 程序文件说明 文件 内容 备注 AboutFrame.java 程序&quo ...
- 《Java 2D游戏编程入门》—— 1.5 创建一个主动渲染的窗口
本节书摘来异步社区<Java 2D游戏编程入门>一书中的第1章,第1.5节,作者:[美]Timothy Wright(莱特),更多章节内容可以访问云栖社区"异步社区"公 ...
- java打地鼠游戏-有背景音乐有图
效果如图: 有背景音效,打击音效 代码不多,30几兆的原因是因为背景音乐文件比较大(一首歌占了一半?) csdn代码下载地址:点击下载 csdn下载需要c币,没有c币可从微信公众号[无心有云] 发送[ ...
- Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(
2019独角兽企业重金招聘Python工程师标准>>> 在Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(百搜技术) 在Java ME游戏开发中,经常需要进行碰撞检测 ...
- java swing游戏_Java Swing井字游戏
java swing游戏 大家好! 哇,自从我在这里发布了东西以来已经有一段时间了! 我必须说我真的很想写东西,我保证我不会再陷入"作家的障碍". 希望 ..最近两个月发生了很多事 ...
- 我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法
我的世界崩溃怎么办?下面吾爱网小编给大家带来我的世界无法正常启动的解决方法,需要的朋友可以参考下. 我的世界作为许多玩家都十分喜爱的模拟经营沙盘类游戏,经常有玩家反映在玩我的世界的时候,游戏总是会出现 ...
最新文章
- 百分点集团发布中国首个行业AI决策系统产品Deep Matrix
- nginx 部署antd_design_pro
- 德约科维奇横扫纳达尔夺冠 加冕澳网七冠王
- 【51nod】1559 车和矩形
- python补集运算_Python 的集合(set)运算
- leetcode191-打家劫舍
- html track标签,HTML track标签
- git bash上传代码到github
- code review平台Rietveld应用指南
- 斐波那契数列的三种解法
- 20套初级javaweb项目开发案例(适合小白)
- SuperMap iDesktop之夜景特效制作
- Java获取当前年份,计算当前月有多少自然日、有多少工作日、有几周
- python乘法口诀表打印
- JS 统计字符串中大小写字母个数
- 如何判断外汇平台是否整个?MT4外汇投资靠谱吗?
- 谷歌、亚马逊全面开火,一场前所未有的AI芯片大战
- Web大学生网页作业成品——抗击疫情网站设计与实现(HTML+CSS)
- R语言data.frame label的设置
- 中国大学校徽宇宙的尽头,是消消乐吧?
热门文章
- 解决Spring项目读取配置文件中文乱码问题
- 基于微信小程序的再生资源回收平台设计与开发(论文+程序设计源码+数据库文件)
- 【Spoken English】Some Useful Conversation (1)
- 【windows10】 双系统下,windows10系统重装后修复Linux引导
- 李小璐JAVA,抖音爆火的随机点名Java实现原理,没有连接数据库
- tp-wdr5620 创建虚拟服务器,TP-LINK路由器 TL-WDR5620 设置、使用、问题解答综合指南...
- Unable to extract the trust manager on Android10Platform
- Keil5----新建项目文件( .c文件 和 .h文件)
- 涂鸦模组二次开发RTL8710BNRTL8720DN
- 学习笔记:《Foundation models for generalist medical artificial intelligence》