Code Monkey home page Code Monkey logo

ratel's Introduction

Ratel

GitHub forks GitHub release (latest by date) GitHub all releases GitHub stars GitHub license Build ratel(Java with Maven) Docker Image Version (latest by date)

👉 新版:新增癞子模式,德州扑克,增加超时机制,完美复现欢乐斗地主,欢迎体验在线版

介绍

基于Netty实现的命令行斗地主游戏,为划水摸鱼而生~

安装

首先下载打包,确保本地安装有maven及JRE环境:

git clone https://github.com/ainilili/ratel.git
cd ratel
mvn install package

接下来分别运行 landlords-clientlandlords-servertarget 文件夹下的Jar包:

java -jar landlords-server/target/landlords-server-#{version}.jar -p 1024
java -jar landlords-client/target/landlords-client-#{version}.jar -p 1024 -h 127.0.0.1

客户端亦可直接运行,程序会自动拉取Serverlist中的公网服务器:

java -jar landlords-client/target/landlords-client-#{version}.jar

注意,实际运行中请将#{version}改为当前运行版本!

玩法介绍

在线试玩:传送门

demo

出牌规则

所有牌型:

┌──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐
│3 |4 |5 |6 |7 |8 |9 |10|J |Q |K |A |2 |S |X |
│♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |  |  |
└──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘

示例:

  • 王炸:sx
  • 顺子:34567
  • 三带一:3334
  • 飞机:333444a2
  • 单张10:0或者t
  • 单张A:a或者1
  • 封顶顺子:34567890jqka
  • 不想出牌: passp
  • 退出: exit或者e
  • 更多

协议支持

  • TCP
  • Websocket

Websocket协议的地址为 ws://host:port/ratel,Websocket的端口需要在原端口基础上加1 (如果tcp端口为1024,则ws端口需要为1025)

划水俱乐部

QQ群 948365095,划水一时爽,一直划水一直爽!

生态

教学

更新日志

计划

  • 支持高级难度机器人

More

  • Serverlist.json 是当前的服务器列表, 如果你的服务器部署着当前最新版本的服务端并且分享给大家,可以通过PR提交给我们!
  • 如果您想贡献代码,非常欢迎提PR,我们将会合并优秀的代码.
  • 如果您发现了Bug,非常欢迎提Issue给我们.
  • 欢迎扩展其他语言的客户端.
  • 联系我们请发邮件到 [email protected].

ratel's People

Contributors

abbychau avatar ainilili avatar balalals avatar dependabot[bot] avatar doveeeee avatar doyutu avatar eldersjavas avatar erichetti avatar gooddayday avatar kasuganosoras avatar koorimoe avatar lazycreeper avatar littledeng1 avatar marmot-z avatar mujint avatar mydcwfy avatar woshidijia avatar xuer123 avatar zuofuhong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ratel's Issues

使用代理无法连接到公网服务

代理服务器是正常可以访问的

命令如下

java -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1085 -jar landlords-client-1.2.4.jar -p 1024 -h 39.105.65.8

返回结果提示连接超时

Connecting to 39.105.65.8:1024
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: /39.105.65.8:1024
        at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:267)
        at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38)
        at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:127)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:832)

两个问题反馈下

1、用户名可以重复,如果一个房间内用户名重复就比较尴尬了
2、开房后,如果用户不满三人无法退出房间,只能ctrl+c然后重新连接服务器

建议:延迟输出信息以优化体验

在抢地主选择流程后,一次性打印了好多信息,我不得不往上拉,再一条条仔细看。建议每条信息都延迟打印,这样可以让用户有时间去阅读,也能模拟真实斗地主的出牌间隔。

花色无法显示

[DOWN] robot_1 surplus 14 [LANDLORD]
It's your turn to play, your pokers are as follows:
┌──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐
│3 |4 |5 |6 |7 |8 |9 |10|10|J |Q |Q |K |K |A |2 |S |
│? |? |? |? |? |? |? |? |? |? |? |? |? |? |? |? | |
└──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘
Please enter the card you came up with (enter [EXIT] to exit current room, enter [PASS] to jump current round)

idea 的控制台中无法显示花色

编译失败

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1ubuntu0.16.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Warning: JAVA_HOME environment variable is not set.
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.smallnico.ratel:landlords-client:jar:1.0.1
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-gpg-plugin is missing. @ com.smallnico.ratel:landlords:1.0.1, /home/shira/ratel/pom.xml, line 82, column 12
[WARNING] 'build.plugins.plugin.version' for org.sonatype.plugins:nexus-staging-maven-plugin is missing. @ com.smallnico.ratel:landlords:1.0.1, /home/shira/ratel/pom.xml, line 70, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.smallnico.ratel:landlords-server:jar:1.0.1
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-gpg-plugin is missing. @ com.smallnico.ratel:landlords:1.0.1, /home/shira/ratel/pom.xml, line 82, column 12
[WARNING] 'build.plugins.plugin.version' for org.sonatype.plugins:nexus-staging-maven-plugin is missing. @ com.smallnico.ratel:landlords:1.0.1, /home/shira/ratel/pom.xml, line 70, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.smallnico.ratel:landlords-common:jar:1.0.1
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-gpg-plugin is missing. @ com.smallnico.ratel:landlords:1.0.1, /home/shira/ratel/pom.xml, line 82, column 12
[WARNING] 'build.plugins.plugin.version' for org.sonatype.plugins:nexus-staging-maven-plugin is missing. @ com.smallnico.ratel:landlords:1.0.1, /home/shira/ratel/pom.xml, line 70, column 12
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.smallnico.ratel:landlords:pom:1.0.1
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-gpg-plugin is missing. @ line 82, column 12
[WARNING] 'build.plugins.plugin.version' for org.sonatype.plugins:nexus-staging-maven-plugin is missing. @ line 70, column 12
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] ratel
[INFO] landlords-common
[INFO] landlords-client
[INFO] landlords-server
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ratel 1.0.1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ landlords ---
[INFO] Installing /home/shira/ratel/pom.xml to /root/.m2/repository/com/smallnico/ratel/landlords/1.0.1/landlords-1.0.1.pom
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building landlords-common 1.0.1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ landlords-common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/shira/ratel/landlords-common/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ landlords-common ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 28 source files to /home/shira/ratel/landlords-common/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] ratel .............................................. SUCCESS [  0.356 s]
[INFO] landlords-common ................................... FAILURE [  0.707 s]
[INFO] landlords-client ................................... SKIPPED
[INFO] landlords-server ................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.719 s
[INFO] Finished at: 2018-11-14T07:13:15+00:00
[INFO] Final Memory: 24M/434M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project landlords-common: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :landlords-common

关于旁观者的 Bug

旁观者退出房间后,房间竟然解散了。

一手好牌,我当场破防。???

建议加个防成谜

建议每开三把强制下线 直接封ip不得上线 (尤其是邓总)

还有 嗦nico牛子🐱‍👓

关于内容的排版

  1. 显示房间列表时,如果房主名称过长会导致列表内容错位,建议对昵称进行一定限制。
    jietu20181115-093835

  2. 可以考虑使用命令行着色库让一些关键信息能够醒目地输出。

Exception in thread "main" java.lang.reflect.InvocationTargetException

我运行java -jar landlords-server-1.1.0.jar -p 1024命令,出现错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.net.BindException: Address already in use: bind
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:130)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:558)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1358)
        at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:501)
        at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:486)
        at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:1019)
        at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:254)
        at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:366)
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446)
        at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.lang.Thread.run(Thread.java:748)

胜利不再有提示

现在胜利没有提示了,之前的是某人胜利,是不是加个农民胜利或者地主胜利,感觉这样比较合理,要不然赢了或者输了就直接销毁房间怪怪的

landlords-client: Compilation failure

[DEBUG] incrementalBuildHelper#afterRebuildExecution
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for ratel 1.2.2:
[INFO] 
[INFO] ratel .............................................. SUCCESS [  0.583 s]
[INFO] landlords-common ................................... SUCCESS [  3.293 s]
[INFO] landlords-client ................................... FAILURE [  0.382 s]
[INFO] landlords-server ................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.998 s
[INFO] Finished at: 2020-04-02T17:55:50+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project landlords-client: Compilation failure -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project landlords-client: Compilation failure
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute (AbstractCompilerMojo.java:862)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute (CompilerMojo.java:129)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :landlords-client

牌打完了还多提示一句“等待下家出牌”

log

[UP  ] robot_2     surplus 2  [PEASANT ]
[DOWN] robot_1     surplus 9  [PEASANT ]
It's your turn to play, your pokers are as follows: 
┌──┐
│3 |
│♠ |
└──┘
Please enter the card you came up with (enter [EXIT] to exit current room, enter [PASS] to jump current round)

[ratel@card]$ 3

yi[LANDLORD] played:
┌──┐
│3 |
│♠ |
└──┘
Next player is robot_1. Please wait for him to play his pokers.

Player yi[LANDLORD] won the game
Game over, friendship first, competition second

You exit from the room. Room disbanded!!

那句:Next player is robot_1. Please wait for him to play his pokers. 应该是不需要的

incompatible event loop type: io.netty.channel.epoll.EpollEventLoop

more...

Exception in thread "main" java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.lang.IllegalStateException: incompatible event loop type: io.netty.channel.epoll.EpollEventLoop
	at io.netty.channel.AbstractChannel$AbstractUnsafe.register(AbstractChannel.java:469)
	at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:80)
	at io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:74)
	at io.netty.channel.MultithreadEventLoopGroup.register(MultithreadEventLoopGroup.java:86)
	at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:333)
	at io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java:282)
	at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:246)
	at org.nico.ratel.landlords.server.SimpleServer.main(SimpleServer.java:35)
	... 8 more

maven构建错误

Cannot resolve plugin org.sonatype.plugins:nexus-staging-maven-plugin:这个错误该如何解决呢

关于netty使用protobuf在传输过程中使用类的builder

在channelUtils中的pushToClient 和pushToServer方法中,channel的writeAndFlush都是传输
ClientTransferData.ClientTransferDataProtoc.Builder clientTransferData = ClientTransferData.ClientTransferDataProtoc.newBuilder();

ServerTransferData.ServerTransferDataProtoc.Builder serverTransferData = ServerTransferData.ServerTransferDataProtoc.newBuilder();
.
我理解的是在netty的pipline中的protobuf的编解码器会自动将建造者模式序列化或反序列化成其类,但是找不到对应的资料,想问一下作者其中的原理

请教 js 如何连接 server?

我正在使用 js 编写一个客户端程序,请问我该使用什么协议和服务端进行通信呢?http?websocket?还是什么?

当都不抢地主,不会重新发牌,会无限循环下去

服务端文件:org.nico.ratel.landlords.server.event.ServerEventListener_CODE_GAME_LANDLORD_ELECT

if(clientSide.getNext().getId() == room.getLandlordId()){
    //  todo: 这里的判断是进不来的
    for(ClientSide client: room.getClientSideList()){
        if(client.getRole() == ClientRole.PLAYER) {
            ChannelUtils.pushToClient(client.getChannel(), ClientEventCode.CODE_GAME_LANDLORD_CYCLE, null);
	}
    }
    ServerEventListener.get(ServerEventCode.CODE_GAME_STARTING).call(clientSide, null);
}else{
    ...
}

feature request: hide the card

老板瞟一眼就知道我在打牌!
希望能把界面稍微混淆一下,搞成老板看不懂的样子。

一个例子:

┌──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐──┐
│3 |4 |5 |6 |7 |8 |9 |10|J |Q |K |A |2 |S |X |
│♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |♦ |  |  |
└──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘──┘

♦ d diamond
♥ h heart
♠ s spade
♣ c club

d3d4d5d6d7d8d9d0dJdQdKdAd2SX

这就很真实了

建议:页面显示相关

image


imagemig名字后面能带上(地主)。

出牌不合法,能够将上次出的牌再显示一次,不然老师要往上面翻

抢地主时记牌器的 bug

记牌器记的是对手的牌,但是抢地主的时候,记牌器地主牌扣下来了,这意味着可以知道地主牌是什么。
开局时,比如我看到 S[0] 表示对手没有这个牌,我发现我自己也没有这个牌,于是我就知道地主牌有 S 。

client连接server的时候特别慢

WebsocketTransferHandler中new Thread(() -> {
try {
Thread.sleep(2000L);
ChannelUtils.pushToClient(ch, ClientEventCode.CODE_CLIENT_CONNECT, String.valueOf(clientSide.getId()));
ChannelUtils.pushToClient(ch, ClientEventCode.CODE_CLIENT_NICKNAME_SET, null);
} catch (InterruptedException ignored) {
}
}).start();
为什么要sleep 2s呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.