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

相关推荐
西京刀客4 天前
BIO、NIO、AIO的区别?
netty·nio·bio
潇雷8 天前
Netty(3)进阶篇|半包粘包、编解码器
java·后端·netty
WaaTong18 天前
Netty 组件介绍 - ByteBuf
java·开发语言·netty
@阿秋1 个月前
Netty入门基础:IO模型中BIO\NIO概念及区别【附演示代码】
netty
bin的技术小屋1 个月前
谈一谈 Netty 的内存管理 —— 且看 Netty 如何实现 Java 版的 Jemalloc(中)
java·后端·netty
艾特小小1 个月前
基于netty实现简易版rpc服务-理论分析
java·rpc·netty
我神级欧文1 个月前
Netty无锁化设计之对象池实现
java·netty·对象池·无锁化设计
dreamlike_ocean2 个月前
即将到来的Netty4.2版本模型的变化
netty
beiback2 个月前
Springboot + netty + rabbitmq + myBatis
spring boot·mysql·rabbitmq·mybatis·netty·java-rabbitmq
山塘小鱼儿2 个月前
Netty+HTML5+Canvas 网络画画板实时在线画画
java·前端·网络·netty·html5