Java 找到一种在棋盘游戏中处理颜色和力量的方法

Java 找到一种在棋盘游戏中处理颜色和力量的方法,java,hierarchy,Java,Hierarchy,我正在为我的学校项目创建一个游戏,所以我在这里不是为了任何类型的代码,只是一个关于如何做我想做的事情的全球想法 我有几件,每件都有自己的颜色和类型,如下所示: 第1件-黄色-简单 第2件-黄色-爆炸性 .. 第10件-蓝色-变色 在游戏开始时,游戏将使用此列表中的随机棋子(一个先前创建的列表,每个棋子只有一种),如果我们有3个或更多的棋子,则游戏将删除它们并计算点数,但如果3个(或更多)中的一个具有任何“力量效果”,则周围的棋子必须对该力量作出反应(我的英语水平很低,很难解释,但我想你明白了:S

我正在为我的学校项目创建一个游戏,所以我在这里不是为了任何类型的代码,只是一个关于如何做我想做的事情的全球想法

我有几件,每件都有自己的颜色和类型,如下所示:
第1件-黄色-简单
第2件-黄色-爆炸性
..
第10件-蓝色-变色

在游戏开始时,游戏将使用此列表中的随机棋子(一个先前创建的列表,每个棋子只有一种),如果我们有3个或更多的棋子,则游戏将删除它们并计算点数,但如果3个(或更多)中的一个具有任何“力量效果”,则周围的棋子必须对该力量作出反应(我的英语水平很低,很难解释,但我想你明白了:S…)

目前,我的游戏只有简单的棋子,为此,我使用和枚举如下:

public enum CorPeca 
{    
     AMARELO,
     AZUL,
     VERMELHO;
}
在董事会课堂上,我做了这样的事情:

    this.arrayPecas = new ArrayList<Peca>();

    for (CorPeca corPeca : CorPeca.values())
        this.arrayPecas.add(new Peca(corPeca));
但是我在想一个很好的方法来轻松地添加那些“能量块”,但更重要的是,能够在未来添加更多的颜色和更多的“能量”

我正在考虑创建子类并使用extend,但整个想法并没有填满我的脑海,因为我们不能扩展几个类


那么,有谁能给我一个关于如何存档的全局想法吗?

实现这一点的经典OOP方法是定义一个抽象基类,该基类表示所有部分,并包含公共功能(例如一系列功能):

您仍然可以创建一个
ArrayList
,并用如下内容填充它:

ArrayList<Piece> pieces = new ArrayList<Piece>();
pieces.add (new YellowPiece());
pieces.add (new GreenPiece());
// etc....
显然,你需要大量定制这段代码,以使其在游戏中发挥作用,但希望它能为你提供总体思路。请注意,实现相同目标还有很多其他方法——我刚刚介绍了“经典”OOP方法


请注意,对于所有代码都是英语表示歉意,但您的英语远远好于我的葡萄牙语:-)

您忘了指定
YellowPiece扩展了Piece
。您还应该添加
@Override
注释作为良好做法。非常感谢您的帮助!真的^^(附言:这是葡萄牙语而不是西班牙语,这是一个常见的错误,没问题xD)。只有一个问题,你的编码是说每种颜色都有一种特殊的力量不是吗?那么我如何定义不同的力量呢?@aliasbody-啊,好吧,也许我误解了力量的意义。。。。如果一个工件可以有多个幂,那么您可以在工件中添加一个
powers
arraylist。然后,Power本身可以是一个抽象类,对于不同的Power类型有多个子类。然后您可以执行类似于
piece.addPower(newexplosionpower())的操作等。希望这有意义?将对答案进行一些快速编辑。因此,如果我理解得很好,我将有2个“超类”片段和幂(例如),每个都有各自的子类黄色、蓝色等。。对于工件和爆炸,更换颜色等。。。为了权力。现在我只需要找到一种方法,修改代码,这样我就可以将它连接到我的board类,从而使power激活并在游戏中再现is效果。我有同样的想法,只是不知道如何应用它(因为抽象vs子类的事情),现在所有这些对我来说都很有意义^^谢谢@aliasbody-听起来你已经拥有它了-祝你好运,一切顺利,玩得开心!
public abstract class Piece {
    // put in fields that every piece has, e.g. x and y co-ordinate here

    // array of powers
    protected ArrayList<Power> powers=new ArrayList<Power>();

    // method to add new powers to the piece
    public void addPower(Power power) {
        powers.add(power);
    }

    // power method - optionally overriden by specififc pieces
    public void applyPowers() {
        for (Power power:powers) {
            power.methodToActivatePower();
        }
    }

    // abstract char method
    public abstract char getChar();

}
public class YellowPiece extends Piece {

    // override applyPowers for yellow piece (if needed)
    @Override
    public void applyPowers() {
        // code for yellow piece power handling goes here
    }

    // override char - required
    @Override
    public char getChar() {
        return 'y';
    }

}
ArrayList<Piece> pieces = new ArrayList<Piece>();
pieces.add (new YellowPiece());
pieces.add (new GreenPiece());
// etc....
pieces.get(pieceNumber).applyPower();