2016-04-25 2 views
0

Ich habe 3 separate Klassen in Java ist man für Logik, man malt, und das letzte ist für das Fenster.Rufe ich die anderen Klassen richtig an? Ich fühle mich wie das SnakeBoardDisplay sollte nur einmal erstellt werden

Fensterklassen, diese Klasse auch einen Board-Display und ergänzt die Fensterklasse

public SnakeWindow() 
{ 
    this.setTitle("Snake"); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setSize(win_wid, win_hei); 

    SnakeBoardDisplay dPanel = new SnakeBoardDisplay(); 
    this.add(dPanel); 
    inintMenu(); 
    this.setVisible(true); 
    setResizable(false); 
} 
public static void main(String[] args) { 

    new SnakeWindow(); 


} 

Tafel Display-Klasse schaffen, schafft diese Klasse einen neuen Board-Display

Wo den richtigen Platz für diese Klasse ist aufgerufen und ausgeführt werden?

public SnakeBoardDisplay() 
{ 

    game = new SnakeGame(); 

    tm.start(); 
    addKeyListener(this); 
    setFocusable(true); 
    setFocusTraversalKeysEnabled(false); 
} 
public static void main(String[] args) { 

    new SnakeBoardDisplay(); 


} 

Spielklasse

public SnakeGame() 
{ 
    init(); 

} 

public void init() 
{ 
    for(int i = 0; i < tokens; i++) 
    { 
     int q = i; 

     q *= seperationDis; 


     tokensx[i] = CRDX-q; 
     tokensy[i] = CRDY; 

    } 
    sideCollision(); 
    appleCollision(); 
    snakeMover(); 
    bodyCollision(); 
    apple(); 
} 

die Klassen Deklarieren

public class SnakeGame extends SnakeWindow { 

public class SnakeBoardDisplay extends JPanel implements ActionListener, KeyListener{ 

public class SnakeWindow extends JFrame { 
+0

Sie haben zwei Hauptmethoden. Was ist los? – Gendarme

+0

Ohne die Hauptmethode in der Anzeigeklasse bekomme ich einen Fehler und sage, dass mir die Hauptmethode fehlt. – matt

+1

Haben Sie diese Klassen jemals deklariert? – sebenalern

Antwort

0

Ihre Hauptklasse SnakeBoardDisplay ist. Diese Klasse verfügt über die Hauptmethode, die die SnakeGame in SnakeBoardDisplay instanziiert.

Sie erwähnt:

SnakeGame extends SnakeWindow 

Das heißt, wenn die SnakeGame instanziert wird, SnakeWindow wird ebenfalls erstellt. Sie müssen den Superklassenkonstruktor in SnakeGame Konstruktor aufrufen.

public SnakeGame() 
{ 
    super(); 
    init(); 
} 
+0

Wie würde ich ein neues Fenster für die Anzeige der Karte erstellen? – matt

Verwandte Themen