Реализовать простую игру на Java (связанную с графикой) - PullRequest
1 голос
/ 09 июня 2011

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

Игра очень проста, она отображает квадрат, который далее делится на блоки 2х2, и в игру нужно положить в общей сложности 44 фишки в эти 4 коробки, и пользователь должен иметь возможность перетаскивать чипсы из одной коробки в другую.

Вот и все! Мои вопросы:

  1. есть ли готовая библиотека, которую я могу использовать для рисования квадрата, состоит из 4 коробок и фишек?
  2. если ответ на 1) - нет, то есть ли какой-то учебник, которым я могу следовать, чтобы запрограммировать их сам?
  3. Как реализовать перетаскивание графически?

Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Фишки могут быть представлены значком, добавленным в JLabel.

Квадраты могут быть представлены JPanel.

Начните с прочтения раздела из учебного пособия по Swing на КакИспользуйте иконки .Есть и другой интересный раздел: как использовать панели, используя менеджеры по расположению, как написать MouseListener, может быть раздел о перетаскивании.

0 голосов
/ 09 июня 2011

Я бы использовал Canvas and override paint (Графика g) и рисовал ваши различные элементы, используя это. Затем вы можете вызвать repaint () с помощью таймера или игрового цикла.

public class MyCanvas extends Canvas
{
    public void gameLoop()
    {
        //Don't do it this way, this is just a quick example.
        //Instead look up better game loop options.
        while (true)
        {
            repaint(); //automatically calls paintComponent
            Thread.yield();
        }
    }

    //Put all the stuff that gets drawn in here.
    //@Override
    public void paint(Graphics g)
    {
        super.paint(g);

        for (int i = 0; i < chips.size(); i++)
        {
            chips.get(i).draw(g);
        }
    }
}

public class Chip
{
    private int x;
    private int y;

    public void draw(Graphics g)
    {
        g.setColor(Color.BROWN);
        g.fillRect(x, y, 50, 50);
        //etc.
    }
}
...