netty开发模拟qq斗地主

为什么要搞这样一个项目

  1. 满足自己的java网络多线程编程的欲望!因为之前一直都是搞web开发,服务器和客户端数据交流人家web服务器早就给你搞好了,比如tomcat,jetty...等等,其实之前脑子里就有想过--是否可以自己开发一个简单的类似tomcat的web服务器,这样做了的话,至少知道其实web开发是建立在网络多线程web服务器之上否则web开发无从谈起!
  2. 市面上的书籍和互联网上的电子教材以及什么培训学校的培训内容都没有类似像qq斗地主这样的真实网络多线程demo--既要处理多线程并发问题又要处理网络上各个节点网络通讯问题以及各个节点数据同步问题。
  3. 如果项目胜利完成就架设一个服务器,让更多java爱好者知道有这样一个qq斗地主的服务器,然后下载客户端源码,运行程序连接服务器,越多java爱好者玩这个demo就意味着并发度越高,线程就越多,项目的问题就暴露的越多,然后大家一起来找原因解决bug,然后大家的java境界就越高尤其是网络多线程编程境界--因为这是一个真实的属于java程序员自己控制的网络多线程环境而不是书本上那些简单的demo!

先写到这样,还有要补充!

产生qq斗地主游戏大厅界面的算法

这下面就是qq斗地主大厅截图

首先说产生5行6列橙色正三角块的算法,先上代码:

复制代码
int _x = 0;// 记录x坐标到底怎么加
int rowNum = 1;// 记录行数
int colNum = 6;// 记录列数
for (int i = 0; i < TOTAL; i++) {
  int x[] = { 30 + (i - _x) * 160, 80 + (i - _x) * 160, 130 + (i - _x) * 160 };
  int y[] = { 111 + (rowNum - 1) * 150, 30 + (rowNum - 1) * 150, 111 + (rowNum - 1) * 150 };
  Polygon polygon = new Polygon(x, y, 3);
  g.setColor(Color.orange);
  g.fillPolygon(polygon);
  if ((i + 1) % colNum == 0) {
    _x = rowNum * colNum;
    rowNum++;
  }
}

然后产生563= 90空位的算法,其实跟上面的差不多,先上源码:

复制代码
// 位置
seats = new JLabel[TOTAL * 3];
// seats = new JButton[TOTAL*3];
int _x = 0;// 记录x坐标到底怎么加
int rowNum = 1;// 记录行数
int colNum = 6;// 记录列数
for (int i = 0; i < TOTAL; i++) {
  int x[] = { 30 + (i - _x) * 160, 80 + (i - _x) * 160, 130 + (i - _x) * 160 };
  int y[] = { 111 + (rowNum - 1) * 150, 30 + (rowNum - 1) * 150, 111 + (rowNum - 1) * 150 };
  for (int j = 0; j < 3; j++) {
    seats[j + i * 3] = new JLabel("空位");
    seats[j + i * 3].setBounds(x[j], y[j], 40, 20);
    childJpanel1.add(seats[j + i * 3]);
  }
  if ((i + 1) % colNum == 0) {
  _x = rowNum * colNum;
  rowNum++;
  }
}

源码分析下次或者自己看,其实把握好各个临界点,就很好实现

java,qq斗地主,斗地主,模拟qq斗地主,java开发qq斗地主,java斗地主源码,java多线程,java并发编程,netty

斗地主状态切换分析

等待人齐--->是否准备--->发牌---->抢地主---->出牌--->本次斗完 wait ready deal rob play over

相关推荐
漫步者TZ1 天前
【Netty系列】解决TCP粘包和拆包:LengthFieldBasedFrameDecoder
java·网络协议·tcp/ip·netty
安徽杰杰1 天前
智慧赋能:移动充电桩的能源供给革命与便捷服务升级
netty
安徽杰杰1 天前
智慧赋能:新能源汽车充电桩应用现状与管理升级方案
netty
触角云科技6 天前
智慧充电桩数字化管理平台:环境监测与动态数据可视化技术有哪些作用?
netty
猫咪老师QAQ6 天前
Netty 实战篇:Netty RPC 框架整合 Spring Boot,迈向工程化
netty
猫咪老师QAQ6 天前
Netty 实战篇:为 Netty RPC 框架引入调用链追踪,实现链路透明化
netty
漫步者TZ6 天前
【Netty系列】实现HTTP文件服务器
http·网络编程·netty
猫咪老师QAQ7 天前
Netty 实战篇:构建简易注册中心,实现服务发现与调用路由
netty
触角云科技7 天前
充电便捷,新能源汽车移动充电服务如何预约充电
netty
漫步者TZ7 天前
【Netty系列】Reactor 模式 2
设计模式·netty