gpt4 book ai didi

java - 连接四个 Java 游戏项目,需要基本概念方面的帮助

转载 作者:行者123 更新时间:2023-12-01 13:01:57 25 4
gpt4 key购买 nike

我在实验室工作,这是一个四人连接游戏。我在基本概念方面遇到了麻烦,例如类如何相互通信,如何使用私有(private)实例变量,如何使用 ArrayList,如何比较 JLabels 或将它们设置为可比较的东西......

简要介绍一下,我有四个类 GUI、游戏、播放器、名称

我可以使用两个四个循环来创建 GUI,游戏是一个有 7 列 6 block 的网格。碎片是图像,

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

例如表示一个空白点。

GUI 基于一个 JFrame、单个内容 Pane 和四个面板,一个用于指示谁在玩和谁赢了的标题,另一个用于 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。
我不知道如何创建数组列表然后使用它们。

使用类似的东西
column.get().get();
myList.get().get();

得到一个特定的部分。

我不知道如何将它传递给一个参数,例如,如果我按下第 7 列的按钮 7,但尚未播放任何乐曲,我可以从最低区域第 7 列第 6 行开始并将其更新为播放的棋子,红色或黄色为适当的球员。

这是模糊的,我怀疑我会得到任何地方,但我迫切需要帮助。助教/老师没有太多时间,我相信我无法完成这个项目。

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

最佳答案

好的,首先你应该使用一个枚举数组。 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).
*/
}
}

关于java - 连接四个 Java 游戏项目,需要基本概念方面的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23452909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com