gpt4 book ai didi

java - 在MVC范式中,是View在Controller中初始化还是Controller在View中初始化?

转载 作者:行者123 更新时间:2023-12-01 15:27:24 26 4
gpt4 key购买 nike

基本上,在我的纸牌游戏中,我在 Action 监听器以及 Controller 和查看器类之间的通信/凝聚力方面遇到了麻烦。我真的不明白如何连接它们。因为我超出了java的实际学习范围,所以我真的很想了解java的结构以及如何高效、专业地制作游戏这样的程序。

这是到目前为止我的代码。我正在进行第 10 阶段。

public class Game {

private ArrayList<Player> players;
private Deck playDeck;
private ArrayList<Set> table;
private View view;


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Game game = new Game();
game.run();
}

public void run() {
initPlayers(1);
initView();
createDeck();
for(Player player: players){
player.setDrawn(false);
while(!player.hasDrawn()){
if(*player clicks deck to draw card*){
Card topCard = playDeck.getTopCard();
player.addCard(topCard);
view.createCardComponent();
player.setDrawn(true);
}


public class View implements MouseListener{
JFrame frame;
JPanel handPanel;
JPanel deckPanel;
public View()
{
}

public void makeFrame()
{
frame = new JFrame("Phase 10");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
handPanel = new JPanel();
deckPanel = new JPanel();
handPanel.setLayout(new FlowLayout());
frame.add(handPanel, BorderLayout.SOUTH);
frame.add(deckPanel, BorderLayout.EAST);
deckPanel.add(new DeckDisplay());
frame.pack();
frame.setSize(1000,500);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

public void createCardComponent(){
CardDisplay card = new CardDisplay();
handPanel.add(card);
card.addMouseListener(this);
}

public void update(){
handPanel.revalidate();
}

@Override
public void mouseClicked(MouseEvent me) {

}

@Override
public void mousePressed(MouseEvent me) {

}

@Override
public void mouseReleased(MouseEvent me) {

}

@Override
public void mouseEntered(MouseEvent me) {

}

@Override
public void mouseExited(MouseEvent me) {

}

最佳答案

我同意纪尧姆·波莱特的观点。

但我什至会说,这种用途应该创建一个启动器类,创建对象,然后/将它们连接在一起。

如果您在 Controller 中创建 View ,则组件之间的耦合非常紧密。如果您操作抽象接口(interface)(使用任何编程语言)并在运行时提供实现,您将获得很大的灵 active 。然后,您可以将配置移动到外部文件(即 XML)并将其加载为配置。

关于java - 在MVC范式中,是View在Controller中初始化还是Controller在View中初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9998502/

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