2011-11-30 16 views
1

我正在創建一個使用數組的遊戲,我有我的獵人類,看起來有點像這樣;多個使用一個類

public static int x= 11; 
public static int y =11; 
public static String name = "H";` 

以及使用x和y的路徑的方法。

我已經在我的棋盤(2d數組)類中以這種方式聲明瞭hunter;

public Hunter hunters[] = new Hunter[5]; 

並且獵人的位置在董事會中聲明爲:

a2[Hunter.x][Hunter.y] = Hunter.name; 

問題:我想讓5個獵人出現在黑板上,我該如何使用陣列來產生額外的4名獵人?謝謝。

+0

你的問題是不是多重繼承的問題,因此標籤不對。這僅僅是靜態VS實例狀態的問題。只需將靜態修飾符移除到您的變量,並且可以實例化具有不同狀態的多個獵人。 –

回答

1

您創建陣列罰款所有你需要做的是使用它:

for (int i = 0; i < 5; ++i) 
{ 
    a2[hunters[i].x][hunters[i].y] = hunters[i].name 
} 

也,你需要使你的獵人成員的非靜態

class Hunter 
{ 
    private int x, y; 

    public void setLocation(int x_, int y_) 
    { 
     x = x_; y = y_; 
    } 
} 

你的想法:)

+0

我已經完全從我的代碼中移除了靜態,但是在我的Main方法中,它仍然無法從靜態上下文中執行非靜態方法(即使我的main方法現在是'public void main(String [] args)',主要方法是自動靜態的? –

1

static關鍵字(假設您使用的是C++,java,C#)意味着該變量在Hunter類的所有實例中共享。要允許每個Hunter都有自己的位置,請刪除static關鍵字並使用構造函數初始化它們。

我假設你正在使用您所使用的String的Java基礎:

public class Hunter { 
    public int x; 
    public int y; 
    public String name; 

    public Hunter(int x, int y, string name) { 
     this.x = x; 
     this.y = y; 
     this.name = name; 
    } 
} 

然後初始化5,你會做

int numHunters = 5; 
for (int i = 0; i < numHunters; i ++) { 
    hunters[i] = new Hunter(/* put x and y and name here */); 
} 

然後,您可以使用它們來填充板:

for (int i = 0; i < numHunters; i ++) { 
    Hunter h = hunters[i]; 
    a2[h.x][h.y] = h.name; 
} 
+0

所以,現在我已經做到了(所有人都在11,11,所以我不能說是否真的有5)我有代碼來移動他們,現在我找不到實際做到這一點的方法。它被放置在我的獵人類「x = x + 1;」中,例如,我現在如何複製它? –

1

您沒有指定您正在使用的語言。這會有所幫助。 至少,請嘗試從屬性定義中移除「static」關鍵字。

在C#中,像

public class Hunter 
{ 
    public int x; 
    public int y; 
    public String name; 
    public Hunter(int newX, int newY, String newName) 
    { 
     x = newX; 
     y = newY; 
     name = newName; 
    } 
} 

創建使用Hunter h1 = new Hunter(11, 11, "H");新的獵人你獵人類可能的樣子。一旦創建,你可以做任何事情。

您可能需要做一些閱讀了面向對象編程 - 見Intro to OOP ESP部分4.3 - 4.5(它們是短)