我试图为一个棋盘游戏创建一个叫做地形的类,我试图在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;
}
}
我真的不确定如何处理我所说的地形类型...
我已经手工计算出了游戏板上每个瓷砖的所有连接应该是什么,但我不确定如何将其转换为代码,或转换为地形类。如果有人有任何建议,我将不胜感激。
我认为你对每种地形类型使用子类的直觉是好的,但是我不能确定是否有必要。我会问你自己这样一个问题:行为(在代码中)会随着地形类型而变化吗?如果是这样的话,您肯定希望为每种地形类型使用不同的子类(地形基类将是一个抽象类),因为您可以使某些方法虚拟化,从而在运行时表现出不同的行为。这就是所谓的多态性。如果没有,最好使用enum
来存储地形类型,因为这样可以简化代码。
至于跟踪邻居,我不会在单独的地形类中这样做。我会有某种数组或外部数据结构,基本上保存地形实例的集合(当然,可以是任何子类)及其位置。这可能会被实现为一个图形,或一个链接列表,其中包含对左侧、右侧、顶部、底部等地形块的引用,或者可能只是一个二维数组。
同样的数据结构也可以潜在地保存其他游戏对象的位置,如生物、建筑等。希望这有帮助!
您可以创建一个界面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;
}
}
使用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类并安排它每天运行。我没有收到错误消息,但不幸的是这个类什么也不做......有人能帮我吗?
有没有插件/附加组件可以帮助创建框架?从何处开始创建框架以及如何继续? 你的意见很有价值。 谢谢,阿美
然后: 一周中的几天,后跟“,” 我不能重复一周中的某一天 字符串的最后一天不能有“,”