Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Игра - морской бой. Кораблики это какой компонент?


Автор: BezImeni 7.5.2006, 20:03
   Новичок.
   Вот например игра "Морской бой",
поле рисуется на JPanel,
а отдельные корабли это какой компонент?

   Если их тоже делать JPanel, то тогда не получится их таскать мышкой по полю (во время расстановки в начале игры).

   Т.е. хочется чтобы корабли могли прорисовывать себя и чтобы их можно было перетаскивать по полю
и разворачивать.

   Наверняка тут есть готовое решение, если Вы знаете - подскажите пожалуйста. smile  

Автор: polosatij 7.5.2006, 21:30
Цитата(BezImeni @  7.5.2006,  20:03 Найти цитируемый пост)
а отдельные корабли это какой компонент?


в принципе всё можно решить с помощью java.awt.Canvas и все кортинки рисовать в него, т.к. коробли не могут стоять на середине клетки и разворачивать их только по клеткам..

ты можешь всё простой графикой решить: Image


Цитата(BezImeni @  7.5.2006,  20:03 Найти цитируемый пост)
Наверняка тут есть готовое решение, если Вы знаете - подскажите пожалуйста.



я не знаю, насколько ты всё хочешь закрутить, но ты можешь посмотреть ещё в сторону Drag and Drop.
пользуйся google smile

удачи smile 

Автор: batigoal 7.5.2006, 21:31
В общем-то, наследование от JPanel - вполне нормальное решение.
Перетаскивать их можно будет, но для этого придется приложить некоторые усилия. 

Автор: BezImeni 7.5.2006, 21:54
Lamer George Дата 7.5.2006, 21:31 
Цитата
 
В общем-то, наследование от JPanel - вполне нормальное решение.
Перетаскивать их можно будет, но для этого придется приложить некоторые усилия.  


можно пожалуйста поподробнее про эти усилия - хоть в какую сторону их прикладывать?
 

Автор: powerOn 7.5.2006, 22:23
Можно к примеру (не гарантирую разумность  smile )  на JPanel создать таблицу каких либо элементов, например кнопок размером 30х30. При этом использовать GridBagLayout, У кнопок события обрабатывать, цвет менять, картинки на них выводить.

вот код, но компонентов много, поэтому он очень жуткий, сгенерирован IDE. Но это лишь пример...
Код

public class FieldFrame extends javax.swing.JFrame {
    
    /** Creates new form PrintForm */
    public FieldFrame() {
        initComponents();
    }

    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        jPanel1 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton8 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        jButton10 = new javax.swing.JButton();
        jButton11 = new javax.swing.JButton();
        jButton12 = new javax.swing.JButton();
        jButton13 = new javax.swing.JButton();
        jButton14 = new javax.swing.JButton();
        jButton15 = new javax.swing.JButton();
        jButton16 = new javax.swing.JButton();
        jButton17 = new javax.swing.JButton();
        jButton18 = new javax.swing.JButton();
        jButton19 = new javax.swing.JButton();
        jButton20 = new javax.swing.JButton();
        jButton21 = new javax.swing.JButton();
        jButton22 = new javax.swing.JButton();
        jButton23 = new javax.swing.JButton();
        jButton24 = new javax.swing.JButton();
        jButton25 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jPanel1.setLayout(new java.awt.GridBagLayout());

        jButton1.setText("jButton1");
        jButton1.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton1.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton1.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        jPanel1.add(jButton1, gridBagConstraints);

        jButton4.setText("jButton4");
        jButton4.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton4.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton4.setPreferredSize(new java.awt.Dimension(30, 30));
        jPanel1.add(jButton4, new java.awt.GridBagConstraints());

        jButton2.setText("jButton2");
        jButton2.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton2.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton2.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 1;
        jPanel1.add(jButton2, gridBagConstraints);

        jButton5.setText("jButton5");
        jButton5.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton5.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton5.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 2;
        jPanel1.add(jButton5, gridBagConstraints);

        jButton7.setText("jButton7");
        jButton7.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton7.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton7.setPreferredSize(new java.awt.Dimension(30, 30));
        jPanel1.add(jButton7, new java.awt.GridBagConstraints());

        jButton3.setText("jButton3");
        jButton3.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton3.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton3.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        jPanel1.add(jButton3, gridBagConstraints);

        jButton6.setText("jButton6");
        jButton6.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton6.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton6.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        jPanel1.add(jButton6, gridBagConstraints);

        jButton8.setText("jButton8");
        jButton8.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton8.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton8.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        jPanel1.add(jButton8, gridBagConstraints);

        jButton9.setText("jButton9");
        jButton9.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton9.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton9.setPreferredSize(new java.awt.Dimension(30, 30));
        jPanel1.add(jButton9, new java.awt.GridBagConstraints());

        jButton10.setText("jButton4");
        jButton10.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton10.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton10.setPreferredSize(new java.awt.Dimension(30, 30));
        jPanel1.add(jButton10, new java.awt.GridBagConstraints());

        jButton11.setText("jButton1");
        jButton11.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton11.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton11.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 2;
        jPanel1.add(jButton11, gridBagConstraints);

        jButton12.setText("jButton8");
        jButton12.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton12.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton12.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 2;
        jPanel1.add(jButton12, gridBagConstraints);

        jButton13.setText("jButton9");
        jButton13.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton13.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton13.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 2;
        jPanel1.add(jButton13, gridBagConstraints);

        jButton14.setText("jButton3");
        jButton14.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton14.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton14.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 4;
        jPanel1.add(jButton14, gridBagConstraints);

        jButton15.setText("jButton2");
        jButton15.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton15.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton15.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 4;
        jPanel1.add(jButton15, gridBagConstraints);

        jButton16.setText("jButton5");
        jButton16.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton16.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton16.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 4;
        jPanel1.add(jButton16, gridBagConstraints);

        jButton17.setText("jButton7");
        jButton17.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton17.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton17.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 4;
        jPanel1.add(jButton17, gridBagConstraints);

        jButton18.setText("jButton6");
        jButton18.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton18.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton18.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 1;
        jPanel1.add(jButton18, gridBagConstraints);

        jButton19.setText("jButton4");
        jButton19.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton19.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton19.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        jPanel1.add(jButton19, gridBagConstraints);

        jButton20.setText("jButton1");
        jButton20.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton20.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton20.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        jPanel1.add(jButton20, gridBagConstraints);

        jButton21.setText("jButton8");
        jButton21.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton21.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton21.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 3;
        jPanel1.add(jButton21, gridBagConstraints);

        jButton22.setText("jButton9");
        jButton22.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton22.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton22.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 2;
        gridBagConstraints.gridy = 3;
        jPanel1.add(jButton22, gridBagConstraints);

        jButton23.setText("jButton3");
        jButton23.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton23.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton23.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 3;
        jPanel1.add(jButton23, gridBagConstraints);

        jButton24.setText("jButton2");
        jButton24.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton24.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton24.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 4;
        gridBagConstraints.gridy = 1;
        jPanel1.add(jButton24, gridBagConstraints);

        jButton25.setText("jButton5");
        jButton25.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton25.setMinimumSize(new java.awt.Dimension(30, 30));
        jButton25.setPreferredSize(new java.awt.Dimension(30, 30));
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 3;
        gridBagConstraints.gridy = 3;
        jPanel1.add(jButton25, gridBagConstraints);

        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FieldFrame().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton10;
    private javax.swing.JButton jButton11;
    private javax.swing.JButton jButton12;
    private javax.swing.JButton jButton13;
    private javax.swing.JButton jButton14;
    private javax.swing.JButton jButton15;
    private javax.swing.JButton jButton16;
    private javax.swing.JButton jButton17;
    private javax.swing.JButton jButton18;
    private javax.swing.JButton jButton19;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton20;
    private javax.swing.JButton jButton21;
    private javax.swing.JButton jButton22;
    private javax.swing.JButton jButton23;
    private javax.swing.JButton jButton24;
    private javax.swing.JButton jButton25;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JButton jButton8;
    private javax.swing.JButton jButton9;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration
    
}

 

Автор: batigoal 7.5.2006, 22:39
Цитата(BezImeni @  7.5.2006,  22:54 Найти цитируемый пост)

можно пожалуйста поподробнее про эти усилия - хоть в какую сторону их прикладывать?

Попробуй посмотреть те статьи, которые Google вываливает по поиску "http://www.google.ru/search?hl=ru&q=java+drag+and+drop&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=lang_en%7Clang_ru". Сам не делал, поэтому советовать ничего не могу. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)