【Java】斗地主 —— 游戏界面

一、思路分析

首先我们需要来分析这些界面中有哪些东西,然后才能开始写代码。

这些界面代码不需要大家自己写,但是我们需要知道里面有哪些东西。

它有的东西非常多,但是不要慌,我们一个一个来讲解。

image-20240429154338694

最重要的肯定是中间的牌盒,一开始我们需要将所有的牌加载到牌盒中,然后才能洗牌、发牌,这个牌盒我们就可以用一个集合来表示。

还有就是三个玩家手上的牌和三张底牌,这个也可以使用集合来表示。因此我们一共需要有四个结合。

只不过三个玩家手上的牌在很多地方都需要使用,因此需要统一管理:我们需要拿一个集合去装它们,这里就会用到集合的嵌套。

在大集合中,0索引 就是左边第一个玩家的牌,1索引 就是中间我们自己的牌,2索引 就是右边玩家的牌。

底牌是不会放到大集合中的,因为底牌不会在很多地方用到,它是作为一个单独的集合放在这里。

image-20240429154803614

在后面打牌的时候,我们还需要再用一个集合,将我们打出的牌装起来。

如果不装,就不好判断当前玩家是什么牌型。也不好判断两个玩家之间谁的牌打,谁的牌小。

因此我们还需要再定义三个集合用来装当前打出的牌。

这里有一个小细节:我们每次在打牌的时候,需要注意数据移动的方向。

例如我们打 红桃三,那么此时就是从我手上的牌的集合移动到上面的集合中。

image-20240429155053085

并且这三个集合,我们也需要使用一个大集合进行管理:0索引 就是左边第一个玩家打出的牌,1索引 就是中间我们自己打出的牌,2索引 就是右边玩家打出的牌。

以上就是我们在打牌的过程中所用到的八个集合。

image-20240429155241665

继续往下,还有提示的文本信息,即这里的倒计时,每一个玩家前面都有,其实就是三个 JLabel,我们要使用一个大数组去进行管理。

但是为什么这里使用数组呢?

一般来说数据比较少,不需要进行删除 / 添加操作的,就可以使用数组来进行管理。

但是如果我们需要频繁的删除 / 添加数据,此时就需要用到集合来进行管理了。

跟集合一样,0索引 就是左边第一个玩家提示的文字,1索引 就是中间我们自己提示的文字,2索引 就是右边玩家提示的文字。

image-20240429155642768

还没完,在我们自己面前,还有四个简单的按钮,只不过这四个按钮不会让他们同时展示出来。

在代码中我们会将这四个按钮分成两组,再用大数组进行管理。

0索引 就是左边的按钮,1索引 就是右边的按钮。

image-20240429155850251

最后一个,左下角地主的图标,这个也是一个 JLabel,谁是地主,我们就将这个图标放在谁的前面。

image-20240429155951029


二、代码实现

首先界面代码是不需要你自己写的,我们只需要能看懂即可。

首先在最上面,我们定义了一个静态变量 container,它表示JFrame界面中隐藏容器,所有的组件都需要放到隐藏的容器中。

image-20240429160324701

如果我们没有把它放到成员位置,那以后在添加组件的时候每次都需要去调用 this.getContentPane() 获取到隐藏的容器,然后再去调用 add() 才能去添加组件。

我觉得每次都这么写太麻烦了,而且每次都需要调用 this.getContentPane() 方法,效率比较低。

如果我们不想让这个方法频繁的被调用,此时就可以在 initJframe() 中只调用一次这个方法,相当于在一开始的会死后就将隐藏的容器获取出来了,然后将它获取给成员位置的 container

image-20240429160645692

那么以后我们在添加组件的时候,就不需要去调用方法获取隐藏容器再去调用add了,而是直接使用 container 调用 add() 就行了,效率会有一丢丢的提升,代码也更简单了。

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
开发一个Java斗地主游戏需要掌握以下技术: 1. Java基础知识:了解Java基本语法和面向对象编程思想。 2. Swing界面开发:使用Swing组件进行游戏界面的设计和实现。 3. 面向对象设计思想和设计模式:使用面向对象的方式设计游戏逻辑,如牌局、玩家、出牌、抢地主等。 4. 网络编程:使用Socket或者Netty进行客户端和服务端之间的通信。 5. 多线程编程:使用多线程技术实现游戏逻辑,如自动出牌、倒计时等。 6. 数据库:使用数据库存储游戏数据,如玩家信息、战绩等。 下面是一个简单的斗地主游戏开发流程: 1. 设计游戏界面,包括玩家头像、手牌区域、出牌区域、底牌区域等。 2. 设计游戏逻辑,包括洗牌、发牌、抢地主、出牌等。 3. 实现游戏界面和逻辑之间的交互,如点击出牌按钮后,将出牌信息发送给服务端,由服务端进行判断。 4. 实现客户端和服务端之间的通信,如使用Socket或者Netty进行通信。 5. 实现自动出牌、倒计时等功能,使用多线程技术实现。 6. 使用数据库存储游戏数据,如玩家信息、战绩等。 在开发过程中需要注意以下问题: 1. 游戏逻辑需要仔细设计,考虑各种情况,如玩家出牌不符合规则等。 2. 网络通信需要考虑网络延迟和通信安全等问题。 3. 多线程编程需要注意线程安全问题,如使用同步锁等技术保证线程安全。 4. 数据库需要注意数据的一致性和安全性等问题。 以上是一个简单的Java斗地主游戏开发流程,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值