连接四个Java游戏项目,需要有关基本概念的帮助

时间:2014-05-04 05:19:10

标签: java class user-interface arraylist connect

我在实验室工作,这是一个连接四场比赛。我特别难以解决类如何相互通信,如何使用私有实例变量,如何使用ArrayList,如何比较JLabel或将它们设置为可比较的基本概念......

为了简要说明,我有四个类GUI,Game,Player,Name

我可以通过使用两个四个循环创建GUI,游戏是一个包含7列6件的网格。这些作品是图像,

JLabel Piece = new JLabel("images/blank.png");
例如,

表示空白点。

GUI基于JFrame,单个内容窗格和四个面板,一个用于表示谁正在玩和谁赢了的标题,另一个用于伴随7行的7个按钮,可能位置的网格本身播放,然后按一个按钮面板,您可以选择重播。

我缺乏很多概念。例如,重播按钮不应出现,直到游戏结束。

我不了解如何使用ArrayList。我试着用

ArrayList<ArrayList<JLabel>> myList = new ArrayList<ArrayList<JLabel>>(); 

所以当我通过运行两个for循环来创建GUI时,如此

For ( c = 0 ; c<8 ; c++) {
ArrayList<JLabel> column = new ArrayList<JLabel>();
For ( r = 0 ; r<7 ; r++) {
ArrayList<JLabel> row = new ArrayList<JLabel>();
JLabel empty = new JLabel("images/blank.png");
row.add(empty);
}
column.add(row);
}

即便是这一小步,我也已经感到困惑。 我知道上面的两个for循环特别是ArrayList不正确。 我不知道如何创建arraylist然后使用它们。

使用

之类的东西
column.get().get();
myList.get().get();

获得特定作品。

我不知道如何将其传递给参数,以便例如如果我按下第7列的第7列,并且还没有播放任何部分,我可以从最低区域列7第6行开始并将其更新为播放的片段,红色或黄色表示适当的播放器。

这是模糊的,我怀疑我会到达任何地方,但我非常渴望得到帮助。 TA /教师没有多少时间可以提供,我相信我没有足够的时间来完成这个项目。

我理解它是如何工作的/我必须用语言做的,但是在应用Java代码方面...... 我很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

首先,您应该使用一系列枚举。 ArrayLists适用于许多项目,可以快速更改数字。数组旨在将数据存储在某些类型的网格中。由于您使用的是静态板,请使用阵列!它们的内存密集程度也低得多。例如:

//Note you should use [column][row] as that is common practice.
States[][] grid = new States[7][6];
//And initialize it:
for(int i = 0; i < grid.length; i++)
    for(int o = 0; o < grid[i].length; o++)
        grid[i][o] = EMPTY_JLABEL;

然后声明一个枚举(这是一个新类)(注意:将FULL_PLAYER_ONE_JLABEL和FULL_PLAYER_TWO_JLABEL替换为每个都有图像的JLabel。):

public enum States {
    FULL_PLAYER_ONE(FULL_PLAYER_ONE_JLABEL), FULL_PLAYER_TWO(FULL_PLAYER_TWO_JLABEL), EMPTY(EMPTY_JLABEL);

    //The image of the appropriate state.
    private JLabel label;

    //Enum constructors must be private
    private States(JLabel label) {
        this.label = label;
    }

    public JLabel getLabel() {
        return label;
    }
}

在你的GUI中,有一个只在游戏结束时添加到框架中的JButton。同时添加一个按钮,指示玩家点击每一列的时间。

JButton button = new JButton();
//Initialize JButton and add to frame...

//Anytime before the frame is set to visible:
button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        /* Perform tests for for what should happen.
           For example test whose turn it is then call a method to add a piece to that column.  Then call a checker to see if someone has won.  If so, display the replay button, otherwise do nothing (allow other player to move).
        */
    }
}