关于如何创建Java纸牌游戏的提示

关于如何创建Java纸牌游戏的提示,java,swing,Java,Swing,关于在java中创建纸牌游戏的方法,我有一些问题 挥杆时处理牌的最佳方式是什么?我如何拖动它们,将它们捕捉到正确位置的最佳方法是什么 最好的方法是什么 他们的立场正确吗 可能会对您有所帮助。拖动多个图像的最佳方法是什么?我甚至使用Java2D将两个图像绘制到JPanel,但我只能拖动其中一个。我会附上我的源代码。我的解决方案的问题是,我需要重新绘制整个窗口,即使我只是在操作一个元素。是否可以处理卡片的对象,而不是它们的图像?因此,当我移动一张卡片时,我将移动对象的视觉表示,而不是图像(就像我现在

关于在java中创建纸牌游戏的方法,我有一些问题

挥杆时处理牌的最佳方式是什么?我如何拖动它们,将它们捕捉到正确位置的最佳方法是什么

最好的方法是什么 他们的立场正确吗


可能会对您有所帮助。

拖动多个图像的最佳方法是什么?我甚至使用Java2D将两个图像绘制到JPanel,但我只能拖动其中一个。我会附上我的源代码。我的解决方案的问题是,我需要重新绘制整个窗口,即使我只是在操作一个元素。是否可以处理卡片的对象,而不是它们的图像?因此,当我移动一张卡片时,我将移动对象的视觉表示,而不是图像(就像我现在所做的那样)


提示-如果你的牌打对了,你可能会发现有人已经为你实现了这一点:-)我从堆栈中抽取一张牌,它是。。。CardLayout,omg how great=)在Java中创建纸牌游戏的最佳方法可能不是尝试使用Swing制作所有东西。相反:使用尽可能少的摆动。一个JFrame,一个JLabel,它的ImageIcon是一个BuffereImage,你就可以开始了。Java游戏程序员通常不使用Swing:我知道Java 3D游戏,我知道Java手机游戏,我知道Java 2D游戏。。。但我不喜欢Java Swing游戏;)
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Java2d_MainPanel extends JPanel{
    private static BufferedImage img = new logic.GetBufferedImage().getImage();
    private JButton knapp = new JButton("Nytt bilde");
    private JButton knapp2 = new JButton("Nytt bilde2");
    private static BufferedImage img2 = new logic.GetBufferedImage().getImage2();
    //coordinates for image 1
    private int x1 = 0; 
    private int y1 = 0;
    //coordinates for image 2
    private int x2 = 50;
    private int y2 = 50;

public Java2d_MainPanel(){
    add(knapp);
    add(knapp2);
    knapp.addActionListener(new ButtonHandler());
    knapp2.addActionListener(new ButtonHandler2());
    addMouseMotionListener(new MouseMotionHandler());
}

public void newImage(ActionEvent e){
    if(e.getSource().equals(knapp)){
    img = new logic.GetBufferedImage().getImage();
    repaint();
    }
    else if(e.getSource().equals(knapp2)){
    img2 = new logic.GetBufferedImage().getImage2();
    repaint();
    }
}
@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    newPaint(g2d);
}
public void newPaint(Graphics2D g2d){
    g2d.drawImage(img, x1, y1, null);
    g2d.drawImage(img2, x2, y2,null);
}

public static void main(String[] args) {

    JFrame frame = new JFrame("Rabbits");
    frame.add(new Java2d_MainPanel());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800, 640);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}
class MouseMotionHandler extends MouseMotionAdapter {
    @Override
public void mouseDragged(MouseEvent e) {

  x1 = e.getX()-(img.getWidth()/2);
  y1 = e.getY()-(img.getHeight()/2);
  repaint();
}
}
class ButtonHandler implements ActionListener{

    public void actionPerformed(ActionEvent e) {
        newImage(e);
    }

  }
 class ButtonHandler2 implements ActionListener{

    public void actionPerformed(ActionEvent e) {
        newImage(e);
    }

 }
}