基本上在我的纸牌游戏中,我遇到了动作听众以及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) {
}
答案 0 :(得分:1)
我同意Guillaume Polet。
但我甚至会说,使用应该制作一个创建对象的启动器类,然后/ 将它们连接在一起。
如果在控制器中创建视图,则组件的耦合非常紧密。 如果您使用抽象接口(使用任何编程语言)并在运行时提供实现,则可以获得很大的灵活性。然后,您可以将配置移动到外部文件(即XML)并将其作为配置加载。
答案 1 :(得分:0)
Controller实例化视图。
至于你的代码,我真的不明白你在寻找什么答案。你的代码不完整,我真的没有看到MVC模式。该模型应该是您的甲板和卡片。 DeckDisplay和CardDisplay是您的观点。你的控制器将它们捆绑在一起。您应该将这些类拆分为单独的文件。