基本的に私のカードゲームでは、私はアクションリスナーとコントローラーと視聴者クラス間のコミュニケーション/結束に問題があります。私はそれらを結ぶ方法を本当に理解していません。私は実際のJavaの学習を超えているので、私は実際にJavaの構造と、ゲームなどのプログラムを効率的かつ専門的に作り出す方法について学びたいと考えています。MVCパラダイムでは、Viewの初期化はコントローラ内にあるのか、Viewのコントローラ初期化ですか?
これまでの私のコードの内容は次のとおりです。私はフェーズ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) {
}
私はビューとコントローラのクラスをコピーして貼り付けます。ゲームはコントローラであり、ビューはビューである。ビュー内にはGUIオブジェクトだけがあり、ゲームクラスには私のロジックがあります。ゲーム内のデッキとカードのクラスは、別々のクラスであり、次にcardDisplayクラスとdeckDisplayクラスです。ゲームクラスでゲームクラスにビューオブジェクトを初期化してから、自分のコードがカードを描くまでカードを描くことができるかどうかを確認しようとしています。問題は、ビューがリスナーを保持している場合、ビューからデッキオブジェクトをクリックしたかどうかをコントローラがどのように確認するかです。 – Rendition