2013-05-17 3 views
2

сначала приносит извинения за вопрос название Я не был уверен, что назвать это.создание объектов для правильного объекта

В любом случае я работаю над игрой, где может быть множество игроков, у которых может быть несколько домашних животных. Я разработал основную структуру игры, например. класс игрока, класс любимца и основной класс. Оттуда я работаю над графическим интерфейсом, где я спрашиваю, сколько игроков и сколько домашних животных каждый игрок хотел бы. Где я застрял, как создать домашних животных для каждого игрока.

Я создал довольно основную форму, которая просит для игрока, чтобы выбрать тип домашнего животного, дать ему имя, а затем создать животное ..

public void createPets(final Player player){ 

//various buttons,comboBox and labels go here 
//layout managers 
//add it all to a frame 

JButton jbCreatePet = new JButton("Create Pet"); 

jbCreatePet.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     String name = jtfName.toString(); 

     if (cbSpecies.getSelectedIndex() == 0){ 
      Alien alien = new Alien(); 
      alien.setName(name); 
      player.getAllPets.add(alien); 


     } 
     else if(cbSpecies.getSelectedIndex() == 1){ 
      create other pet2 
     } 
     else{ 
      create other pet3 
     } 
    } 
}); 

player is a Player object passed into the method using a for loop.. 

for (Player player: allPlayers){ 
    createPets(player); 
} 

Теперь я знаю, что его не правильно использовать для цикла, например форма будет просто перейти к последнему игроку, и ни один из других игроков получит создать домашнее животное ..

Так у меня есть несколько вопросов:

  1. Когда я назначил созданное домашнее животное игроки список всех домашних животных, Eclipse сказал мне, что я должен был создать его окончательный. Я несколько понимаю, почему, но то, что мне интересно, - это сделать параметр игрока окончательным, это значит, что я не смогу создавать домашних животных для других игр, только первый игрок.

  2. Как я могу показать свою форму каждому игроку например 2 игрока в игре с 2 домашними животными, игрок 1 выбирает домашнее животное и дает ему имя, а затем создает его, ему будет сказано, что ему нужно создать еще одно домашнее животное (снова появится шоу), поэтому он создает другое домашнее животное, а затем его игрок 2s повернуть, чтобы выбрать и создать 2 домашних животных ... Я предполагаю, что я пытаюсь выяснить, как передать правильный игрок аргумент в метод createPet в нужное время ...

Пожалуйста, дайте мне знать, если бы вы как я, чтобы прояснить что-нибудь еще ...

Большое спасибо тому, кто может мне помочь с этим !!!!

ответ

4

Когда я назначил созданного питомца игрокам список всех домашних животных, затмение сказал мне, что я должен был создать его окончательно. Я несколько понимаю, почему, но то, что мне интересно, - это сделать параметр игрока окончательным, это означает, что я не смогу создавать домашних животных для других игр, только первый игрок.

Eclipse не требует этого - Java заключается в том, что вы используете параметр Player внутри анонимного внутреннего класса и поэтому должны быть окончательными. Это не помешает вам использовать этот же метод для других игроков.

Как я могу показать свою форму каждому игроку, например. 2 игрока в игре с 2 домашними животными, игрок 1 выбирает домашнее животное и дает ему имя, а затем создает его, ему будет сказано, что ему нужно создать еще одно домашнее животное (снова появится шоу), поэтому он создает другое домашнее животное, а затем его игрок 2s поверните, чтобы выбрать и создать 2 домашних животных ... Думаю, я пытаюсь понять, как передать правильный аргумент игрока в метод createPet в нужное время ...

Главный объект игры будет контролировать все выше, правильно? Я полагаю, вы могли бы использовать цикл for, который, как говорят, отображает модальный диалог, такой как JOptionPane внутри цикла.

Другой вариант - создать вид JPanel, который позволяет всем игрокам вводить своих питомцев. Все зависит от вас, и я рекомендую вам экспериментировать с разными подходами.

Главное, что вы захотите сделать на ранней стадии, - это сильно отделить логику вашей программы от графического интерфейса. Например, ваши классы Player и Pet не должны знать о графическом интерфейсе, не должны иметь никакого кода Swing, так что код для логического добавления Pets не является графическим интерфейсом (но может и будет использоваться графическим интерфейсом).


Редактировать
Рассмотрим давая registerPlayer(Player player) или editPlayer(Player player) метод, что любой игрок может позвонить зарегистрировать свое имя, их домашних животных, а также на любое другое имущество, которые могут быть необходимы, чтобы играть в игру свой класс игры. Затем этот метод вызывается один раз при нажатии кнопки JButton. Не разрешайте игре прогрессировать, если все игроки не зарегистрированы надлежащим образом.

+0

Благодарим за освобождение первой части. Да, изначально я использовал JOptionPane, но думал, что было бы удобнее использовать фрейм, это может быть так, но это может быть не так просто. – whiteElephant

+0

@whiteElephant: больше добавлено. Для получения дополнительной информации, скажите/покажите больше. –

+0

@whiteElephant edit добавлен. –

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