当前位置: 首页 > 知识库问答 >
问题:

有人帮我安排课程吗?

钱志
2023-03-14

我试图为一个棋盘游戏创建一个叫做地形的类,我试图在Java中构建这个类,但是我会试着让这篇文章尽可能通用,这样它就可以用任何OOP语言和伪代码来解释。

这个游戏有36个六边形的瓷砖,每个瓷砖都是不同的地形。地形有8种类型,如沼泽、森林、山脉等。每个地形可以容纳你可以移动的次数,也可以容纳生物和建筑(这是两个不同的类别),或者至少有与特定地形相关的生物和建筑。

我不确定我想要一个枚举来代表8种地形,或者是否有必要。

基本上,我想在这门课上做的是说:

Terrain t0 = new Swamp();
Terrain t1 = new Forest();

然后我希望能够将每个地形的邻居与特定地形相关联,比如:

//terrain 0, neighbour 0
t0.n0 = t1;
//terrain 0, neighbour 1
t0.n1 = t7;
//terrain 0, neighbour 2
t0.n2 = t8;
//terrain 0, neighbour 3
t0.n3 = t2;
//terrain 0, neighbour 4
t0.n4 = t23;
//terrain 0, neighbour 5
t0.n5 = t22;

我认为应该是这样的:

public class Terrain{
    public int moves = 0;  
    public Terrain(int m){
        moves = m;
    }
}

我真的不确定如何处理我所说的地形类型...

我已经手工计算出了游戏板上每个瓷砖的所有连接应该是什么,但我不确定如何将其转换为代码,或转换为地形类。如果有人有任何建议,我将不胜感激。

共有3个答案

龚永新
2023-03-14

我认为你对每种地形类型使用子类的直觉是好的,但是我不能确定是否有必要。我会问你自己这样一个问题:行为(在代码中)会随着地形类型而变化吗?如果是这样的话,您肯定希望为每种地形类型使用不同的子类(地形基类将是一个抽象类),因为您可以使某些方法虚拟化,从而在运行时表现出不同的行为。这就是所谓的多态性。如果没有,最好使用enum来存储地形类型,因为这样可以简化代码。

至于跟踪邻居,我不会在单独的地形类中这样做。我会有某种数组或外部数据结构,基本上保存地形实例的集合(当然,可以是任何子类)及其位置。这可能会被实现为一个图形,或一个链接列表,其中包含对左侧、右侧、顶部、底部等地形块的引用,或者可能只是一个二维数组。

同样的数据结构也可以潜在地保存其他游戏对象的位置,如生物、建筑等。希望这有帮助!

别子实
2023-03-14

您可以创建一个界面Terrain,其中包含所有Terrain通用的变量和方法。然后,您可以创建实现Terrain接口的类,并为接口中的抽象方法提供定义。

大致如下:

public interface Terrain{
    int getMoves();
}

public class Forest implements Terrain{

    final String NAME = "FOREST";
    private int someMovesLikeTheJagger = -1;

    public Forest(int moves){
        someMovesLikeTheJagger = moves;
    }

    @Override
    public void getMoves(){
        return someMovesLikeTheJagger;
    }

}
席弘图
2023-03-14

使用enum定义地形(Java):

enum Terrain {    
    Forest(12), Mountain(9);         // And other Terrain types...
    private int move;    
    private Terrain(int mo) {
        move=mo;
    }
    public int getMove(){
        return move;
    }
}

与地形枚举你可以做:

    Terrain t0= Terrain.Forest;
    Terrain t2= Terrain.Mountain;
    Terrain t6= .....

Tiles也可以是enum并包含其他方法和Terram数组/或其他数据结构类型

 类似资料:
  • 配置文件在这里输入图像描述@my appService提供商 在此处输入图像描述 在我安装input composer后,有人能告诉我这个问题吗?问题是,现在我无法迁移 当我运行php artisan迁移时,这个问题会显示出来 未知数据库配置/database.php(SQL:选择*从information_schema.tables其中table_schema=配置/database.php和t

  • 我正在尝试使用Jasper Report生成一个id,因为我必须连接字段,并且字段(第二个字段)之前必须带2个零。我试过了,但没用。我的代码:$F{NUM\u ORDRE}”“NUM($V{COLUMN\u COUNT},'000”“)”“$F{code}

  • 我必须创建程序,这样我就可以输入3个字母加上像“Jan1999”这样的一年,并显示日历。

  • 我写了这个APEX类并安排它每天运行。我没有收到错误消息,但不幸的是这个类什么也不做......有人能帮我吗?

  • 有没有插件/附加组件可以帮助创建框架?从何处开始创建框架以及如何继续? 你的意见很有价值。 谢谢,阿美

  • 然后: 一周中的几天,后跟“,” 我不能重复一周中的某一天 字符串的最后一天不能有“,”