gpt4 book ai didi

java - 我可以为对象的每个实例创建一个循环吗?

转载 作者:行者123 更新时间:2023-12-01 15:26:29 25 4
gpt4 key购买 nike

我有很多对象“ block ”的实例,我需要添加碰撞检测来查看我的 Sprite 是否触及了 block 。但是必须复制、粘贴和编辑每个代码将花费很多时间,因为每个级别上大约有 200 个 block ...这里是碰撞检测,有没有什么方法可以创建一个循环,以便所有 block 都得到分配并且值发生变化,因此对于第一个 block ,例如第一个 block 将是“block.bottomry”,然后第二个 block 将是“block2.bottomry”,第三个 block 将是“block3.bottomry”,依此类推,直到所有 block 都被分配走了。这是部分代码:

public void iscollided() {
// bottom right touching block?
if (sprite.bottomrx < block.bottomrx && sprite.bottomrx > block.bottomlx && sprite.bottomry < block.bottommy && sprite.bottomry > block.topry ){
Log.d(TAG, "Collided!!!!!!!!!!!!1");


}

// bottom left touching block?
if (sprite.bottomlx < block.bottomrx && sprite.bottomlx > block.bottomlx && sprite.bottomly < block.bottommy && sprite.bottomly > block.topry ){
Log.d(TAG, "Collided!!!!!!!!!!!!1");


}
// top right touching block?
if (sprite.toprx < block.bottomrx && sprite.toprx > block.bottomlx && sprite.topry < block.bottommy && sprite.topry > block.topry ){
Log.d(TAG, "Collided!!!!!!!!!!!!1");


}
//top left touching block?
if (sprite.toprx < block.bottomrx && sprite.toprx > block.bottomlx && sprite.topry < block.bottommy && sprite.topry > block.topry ){
Log.d(TAG, "Collided!!!!!!!!!!!!1");


}

最佳答案

当然:)您可以将 block 添加到列表数据结构中,然后循环遍历列表检查每个 block 。

public class Foo {

private SpecialSprite sprite = new SpecialSprite();
private List<Block> blocks = new ArrayList<Block>();

public void addBlocks() {

blocks.add(new Block(...));
blocks.add(new Block(...));
blocks.add(new Block(...));
}

public void isCollided() {

for(Block block : blocks) {

// collision detection for each block.
if(sprite.bottomrx < block.bottomrx ... ) {

Log.d(TAG, "Collided!!!!!!!!!!!!");
}
}
}
}

编辑:更具体的示例。

关于java - 我可以为对象的每个实例创建一个循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10073539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com