【发布时间】:2014-11-20 19:09:03
【问题描述】:
对于家庭作业,我正在尝试将精灵表添加到 2D ArrayList 以进行简单的纸牌游戏。我希望能够像在普通二维数组中一样拥有它,仅具有数组列表的动态能力,因为我必须删除已经绘制的卡片。
我正在使用一个数字生成器,它将在第一个和最后一个索引(0 - 51)之间生成数字,当用户单击抽牌按钮时,它会在屏幕上显示一张卡片。然后它将允许另一个用户或 AI 抽一张牌,它将确定谁拥有最高牌并宣布该人为该轮的获胜者,取出两张抽出的牌并重复循环,直到超过 26 个回合,然后程序将计算所有回合的胜利,获得最多回合胜利的玩家将赢得整个游戏。
我的问题是:如何将我的一张精灵表分成 52 个部分并将其添加到我的 ArrayList 中?
这是我目前所拥有的。我知道它还不起作用,但我不完全确定我是否走在正确的轨道上。
//private ImageIcon[][] cards = new ImageIcon[4][13];
private BufferedImage img;
private final int _WIDTH = 74;
private final int _HEIGHT = 94;
public CardGame1(ImageIcon[][] cards){
try{
img = ImageIO.read(getClass().getResource(
"classic-playing-cards.png"));
}catch(Exception e){
e.printStackTrace();
}
for(int r = 0; r < cards.length; r++){
for(int c = 0; c < cards[r].length; c++){
cards[r][c] = new ImageIcon(img.getSubimage(c * _WIDTH,
r * _HEIGHT, _WIDTH, _HEIGHT));
}
}
}
有人告诉我将 ArrayList 放在另一个类中,所以它是:
private JFrame frame;
private JPanel panel;
private Random rand;
private JButton drawCard;
private JLabel card;
private ArrayList<ArrayList<CardGame1>> _cardObj
= new ArrayList<ArrayList<CardGame1>>();
public CardGameGUI(){
gameBoard();
}
public void gameBoard(){
frame = new JFrame("Card Game");
panel = new JPanel();
frame.setSize(600, 500);
frame.setLayout(new GridLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setVisible(true);
frame.add(panel);
panel.setBackground(Color.GREEN);
drawCard = new JButton("Draw Card!");
drawCard.setSize(100, 50);
panel.add(drawCard);
drawCard.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
}
});
}
【问题讨论】:
-
我无法按照您的流程进行操作。一些代码/例如会有帮助的。