java对象依赖_java-两个对象的双向依赖

背景

我有以下几点:

消防扩展元素类,

木材延伸元素类,

组成元素的Tile类.

Tile类表示世界/屏幕/画布中的图块,并具有一些图形和逻辑功能.

它合成一个Element对象,因为“世界”中的每个图块都是由某种物质(=元素)组成的.

我想实现火势蔓延的功能-当火元素“接触”木元素时,我希望木元素成为火.

从逻辑上讲,这应该在fire元素内完成,但是这样做我无法更改给定Tile的元素(例如,从Wood更改为Fire).

“世界”初始化为由Wood元素组成的图块网格,但其中一个具有Fire元素的图块应该散布.

我尝试过的

我尝试将元素链接在一起,这意味着每个元素都可以访问他的四个最近的邻居.这样,火可以进入附近的一块木头.

这不能解决在火接触到木头时更改Tile元素类型的问题.

我尝试将整个功能移至Tile类.尽管它确实可以解决问题,但由于两个原因,我不喜欢它:

>从逻辑上讲,我希望火势能够自主行动,这意味着火势是蔓延的,而不是地砖.

>因此,Tile类具有许多仅与火灾相关的方法(例如spread()),这需要我进行检查-“此tile是否由fire元素组成?”,这是一种不好的做法.

代码示例

class Fire extends Element{

public void spread(){

// Move to all four neighbors and turn them into Fire elements

}

}

class Wood extends Element{

}

class Tile{

private Element _element;

}

深入

>切片的“网格”由二维的Tiles数组(逻辑部分)和一个由所有切片组成的JavaFx Pane(可视部分)组成.

>火接触到相邻的瓦片并将其从“木材”转换为“火焰”时会“蔓延”.当消耗(=转换为火)给定的木材阈值时,火停止蔓延.它消耗了30块木头之后.从某种意义上说,火可以追踪消耗的木材.

提前致谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值