我需要创建一个随机放置树木和食物的地图。对于地图,我希望创建一个二维数组,然后使用类将树和食物添加到数组中,这可能吗?
class Tree {
char tsymbol;
}
class Food {
char fsymbol;
}

这些类目前只需要在其中存储符号,这将是代表地图上对象的图标。
public void printWorld (){
int a;
int b;
char[][] map = new char[15][12];
for (a=1; a<=15; ++a)
{
for (b=1; b<=12; ++b)
{
foodsymbol.fsymbol = 1;
final String[] items = { };
map[a][b] =
System.out.print(map[1][1]);
}
System.out.printf("\n\n");
}
}
&#13;
到目前为止,我有这个,忽略评论,因为那是我以前的工作。这部分是我试图随机添加对象到数组的地方,但是我在访问这个方法中的变量或类时遇到了问题。
提前感谢您的任何帮助:)
答案 0 :(得分:2)
是的,您可以拥有一组对象并打印它们。要在同一个数组中使用不同类型的对象,它们都应该实现一个公共接口。例如:
interface MapObject {
public char getSymbol();
}
class Tree implements MapObject {
char tsymbol = 't';
@override
public char getSymbol() {
return tsymbol;
}
}
class Food implements MapObject {
char fsymbol = 'f';
@override
public char getSymbol() {
return fsymbol;
}
}
class MyClass {
public void printWorld() {
MapObject[][] map = new MapObject[15][12];
map[0][0] = new Tree();
map[0][1] = new Food();
System.out.print(map[0][0].getSymbol());
System.out.print(map[0][1].getSymbol());
}
}
答案 1 :(得分:1)
对于您的特定应用,您可能还需要考虑使用enum
。如果所有树木都相同且所有食物都相同,这将非常有用。它可能看起来像这样:
enum Item {
TREE ('t'),
FOOD ('f');
private final char symbol;
Item(char symbol) {
this.symbol = symbol;
}
char getSymbol() { return symbol; }
}
class MyClass {
public void printWorld() {
Item[][] map = new Item[15][12];
map[0][0] = Item.TREE;
map[0][1] = Item.FOOD;
System.out.print(map[0][0].getSymbol());
System.out.print(map[0][1].getSymbol());
}
}