2013-07-08 3 views
0

Я новичок в Java и как упражнение, создающее игру с линкором. Есть, очевидно, две игровые платы (по одному для каждого игрока), и на каждой доске будет три назначенных им корабля. Моя идея состоит в том, чтобы создать класс «GameBoard» с классом «корабль», поэтому я могу создавать новые корабли, которые являются экземплярами плат, на которые они будут размещены. Вот что у меня есть до сих пор:Создание новых экземпляров подкласса

public class GameBoard { 
    int columnCount = 7; 
    int rowCount = 7; 
    int spaceCount = rowCount*columnCount; 

    private class ship { 
     private String name; 
     private void setName(String newName) { 
      name = newName; 
     } 
    } 
} 

Теперь мой вопрос - как вызвать новое судно в игровой комнате. Чтобы создать новую доску, я бы сделал это:

GameBoard player1 = new Gameboard(); 

Куда я иду оттуда, правда? Было бы что-то вроде этого?

player1.ship ship1 = new player1.ship(); 

Моя кишка говорит мне, что это очень плохо, и я просто не знаю, что делать. Спасибо за любую помощь!

ответ

3

Вы можете просто сделать это.

public class GameBoard { 
int columnCount = 7; 
int rowCount = 7; 
int spaceCount = rowCount*columnCount; 
ship s; 

} 


public class ship { 
    private String name; 
    private void setName(String newName) { 
     name = newName; 
    } 
} 

, а затем

GameBoard gb = new GameBoard(); 
gb.s = new ship(); 
+0

Отлично. Теперь мой вопрос: как я могу добавить неограниченное количество потенциальных кораблей? Прямо сейчас, я должен предварительно определить слоты, где я буду добавлять корабли (а), но что, если я не знаю, сколько я хочу и хочу иметь возможность добавлять их волей-неволей? Большое спасибо за Вашу помощь! –

+0

сохранить массив или список кораблей в вашем классе игрового поля, и вы можете добавить столько, сколько вы хотите: сохранить список s; внутри определения игрового поля и добавить новый корабль как gb.s = новый Список (); gb.s.add (новый корабль()); – tausun

+0

Фантастический.Большое вам спасибо за вашу помощь. Если вы не возражаете, почему я должен объявить новый список после того, как я уже определил его как список в классе GameBoard? –

0

Вы имеете в виду, как создать экземпляр нового корабля из внешнего класса? В этом случае вы можете просто написать

ship t = new ship(); 
+0

Это начало, но как мне связать его с GameBoard «player1»? –

0

Если вы хотите, например корабль от внешнего класса, вы должны:

  1. Сделать корабль класса статичным.
  2. Сделать класс судна общедоступным.

Как видно из следующего:

public class GameBoard { 
    int columnCount = 7; 
    int rowCount = 7; 
    int spaceCount = rowCount*columnCount; 

    public static class ship { 
     private String name; 
     private void setName(String newName) { 
      name = newName; 
     } 
    } 
} 

Тогда вы можете сделать:

ship1 = new GameBoard.ship(); 
0

Корабль является частным классом, поэтому он может быть изменен только GameBoard. Вы можете создать корабль следующими способами:

public class GameBoard { 
int columnCount = 7; 
int rowCount = 7; 
int spaceCount = rowCount*columnCount; 
ship _ship = new ship(); 

private class ship { 
    private String name; 
    private void setName(String newName) { 
     name = newName; 
    } 
} 
public ship getShip(){return _ship); 

В которой вы должны установить имя через player.getShip().setName("USS SOMETHING")

Или еще лучше

public class GameBoard { 
    int columnCount = 7; 
    int rowCount = 7; 
    int spaceCount = rowCount*columnCount; 
    ship _ship; 

    public GameBoard(String shipName){ 
     _ship = new ship(); 
     _ship.setName(shipName); 
    } 

    private class ship { 
     private String name; 
     private void setName(String newName) { 
      name = newName; 
     } 
    } 

В которой вы должны установить название судна когда вы создаете GameBoard. GameBoard player1 = new GameBoard("USS SOMETHING")

Смежные вопросы