2011-06-08 86 views
1

我是Java中的游戏编程新手,特别是在图形方面,因此我想就如何在Java中以图形方式实现以下游戏寻求一些建议。在Java中实现一个简单的游戏(图形相关)

游戏非常简单,它显示的是一个正方形,它被进一步分成2个2个盒子,游戏的玩法是将总共44个筹码放入这4个盒子中,用户应该可以拖放芯片从一个盒子到另一个盒子。

就是这样!我的问题:

  1. 是否有现成的图书馆我可以用于绘制广场包括4盒以及芯片?
  2. 如果1)的答案为否,那么是否有任何教程可以按照自己的程序进行编程?
  3. 如何以图形方式实现拖放部分?

非常感谢。

+1

可能应该移动到gamedev.stackexchange。虽然有一个类似的问题可以提供答案:http://gamedev.stackexchange.com/questions/2911/2d-game-dev-and-java-other-possibilities-than-opengl – thedaian 2011-06-08 21:26:28

回答

2

芯片可以通过添加到JLabel的图标表示。

正方形可以用JPanel表示。

首先阅读Swing教程How to Use Icons中的部分。还有其他感兴趣的部分:如何使用面板,使用布局管理器,如何编写MouseListener,关于拖放的部分也许。

+0

这对我很有帮助开始。只是一个快速的后续问题:假设你将这些JLabel(代表芯片)添加到JPanel(代表一个盒子),这是否意味着我必须确保4个盒子中的每一个都足够大以容纳44个芯片(在极端案件)? – skyork 2011-06-08 22:40:43

+0

我真的不会推荐使用JLabel进行这个或任何游戏。它速度很慢并且有很多限制。 – Eli 2011-06-08 22:50:19

+0

@skyork,使用GridLayout来保存标签。 – camickr 2011-06-09 00:56:16

-1

我会使用Canvas并重写paint(Graphics 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. 
    } 
} 
+0

-1。再次阅读游戏说明。这不是一个需要游戏循环的游戏。 Canvas也没有paintComponent()方法。 – camickr 2011-06-09 01:00:40

+0

更正paintComponent,我的错误。如果你重写了JPanel或类似的东西,那就是了。不过,我认为你没有理由给我-1,我的观点仍然非常有效。你正在教Skyork使用Swing元素来制作游戏,如果他想要任何类型的灵活性,他应该使用Graphics。使用Swing作为应用程序,使用Graphics或OpenGL作为游戏。 – Eli 2011-07-19 21:32:01

+0

同样,这不是需要“游戏循环”的游戏类型。这是一个简单的游戏,涉及用户将组件从一个方块拖到另一个方块。仅仅因为用户称之为“图形游戏”并不能在你试图推广的环境中使用它。 – camickr 2011-07-20 02:16:34