簡體   English   中英

我想在我的ActionListener類中使用一個對象

[英]I want to use an object in my ActionListener Class

我正在嘗試實現我的打牌游戲中的紙牌游戲代碼。 我在ActionListener類中使用Deck時遇到問題。 Deck是Deck類的一個對象,具有ArrayList和一些從Deck中選擇一張卡片的方法作為變量/實例(我不知道正確的術語)。actionlistener類的代碼如下:

class Play  implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent event) {          
        Card a1, a2, b1, b2;


        a1 = Deck.pickCard(Deck.Deck);

        String Player2="Player2";
        String Player1="Player1";
        int score1=0;
        int score2=0;
        System.out.println(Player1 + " drew a " + a1.getName(a1) + " of " + a1.getType(a1));
        a2 = Deck.pickCard(Deck.Deck);
        System.out.println(Player1 + " drew a " + a2.getName(a2) + " of " + a2.getType(a2));
        b1 = Deck.pickCard(Deck.Deck);

        System.out.println(Player2 + " drew a " + b1.getName(b1) + " of " + b1.getType(b1));
        b2 =Deck.pickCard(Deck.Deck);
        System.out.println(Player2 + " drew a " + b2.getName(b2) + " of " + b2.getType(b2));
        if (a1.getValue(a1) + a2.getValue(a2) > b1.getValue(b1) + b2.getValue(b2)) {
            score1 = score1 + 1;
            System.out.println(Player1 + " win and has " + score1 + " points");
        }
        if (a1.getValue(a1) + a2.getValue(a2) < b1.getValue(b1) + b2.getValue(b2)) {
            score2 = score2 + 1;
            System.out.println(Player2 + " win and has " + score2 + " points");
        }
    } 
}

如果我在Play類中設置了Deck類的構造函數,則代碼將正常運行,但是每次Deck重新創建且拾取的卡不會從Deck中移除。 當我輸入這個問題時,我記得分數也在刷新。我嘗試將這段代碼放入方法中並嘗試在Play類中調用該方法,但這似乎也不起作用,我的文字帶有下划線用紅色表示a non static method cannot be referenced from a static context 我一般都不是編程新手,而關於繼承和變量的這些問題現在看來太尷尬和奇怪。 我想問一下是否有可能解決這種問題,因為我已經為練習的前一部分做了很多工作。在此先感謝您!

我不確定您的確切情況是什么,但也許您需要讓Play的構造函數接受Deck作為參數:

class Play implements ActionListener {
    Deck deck;
    public Play(Deck deck) {
        this.deck = deck;
    }
    @Override
    public void actionPerformed(ActionEvent ae) {
        ...
    }
}

現在您可以執行addActionListener(new Play(deck)); 並為Play提供對您的Deck的參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM