2013-12-10 29 views
1

我有一個戰爭卡片遊戲。兩位用戶每人抽出一張卡片,這兩張卡片將相互比較以查看誰擁有更高的牌。我完成了大部分程序,但我無法弄清楚如何將卡的價值轉移到WarUI。每次我使用get方法時,它都會顯示1,所以我必須做出錯誤的事情。陣列號是1-13之間的整數值,我使用if語句將1改爲ace,11改爲jack等。我在卡類中遇到getValue()問題。我如何去做這件事?需要幫助從數組中獲取int

編輯:如何獲取用戶卡片的值,以便我可以將它們相互比較?

import java.util.ArrayList; 
import java.util.Random; 

public class Card { 
     String finalCard = ""; 
     int suit, number,number2; 
     static String [] suits = {"Heart" , "Diamond" , "Spade" , "Club"}; //suits 
     //static String [] numbers2 = { "Ace", "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "Jack" , "Queen" , "King" }; //card values 
     static int [] numbers = { 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 }; //card values 
     String card = ""; 

     public Card() { 

     } 
     public Card(int suits, int numbers) 
       { 
         suit = suits; 
         number = numbers; 

       } 


     public int getValue() { // cant get this to work 

       int well = numbers[number]; 
       return well; 
       } 

       public int getSuit() { 
        return suit; 
       } 
     public String toString() 
     { 
      String fakeValue = ""; 
     if (numbers[number] == 1) 
      { 
       fakeValue = "Ace"; 
      } 
     else if (numbers[number] == 11) 
      { 
       fakeValue = "Jack"; 
      } 
     else if (numbers[number] == 12) 
      { 
       fakeValue = "Queen"; 
      } 
     else if (numbers[number] == 13) 
      { 
       fakeValue = "King"; 
      } 
     else 

     fakeValue = Integer.toString(numbers[number]); 
       String finalCard = fakeValue + " of " + suits[suit]; 
       return finalCard;   
      } 
     } 
import java.util.ArrayList; 
import java.util.Random; 

public class FullDeck { 
     private ArrayList<Card> cards = new ArrayList<Card>();//card array list 
    public FullDeck() 
      { 
       for(int a =0; a<=3; a++) //loops through suits 
       { 
        for(int b =0; b<=12;b++) //loops through values 
        { 

         cards.add(new Card(a,b)); //creates adds cards to list 
        } 

       } 

      } 

      public Card drawRandomCard() 
      { 
       Random generator = new Random(); //picks random card 
       int index = generator.nextInt(cards.size()); 

       return cards.remove(index); //removes card from list 
      } 

      public String toString() 
      { 
       String result = "Cards remaining in deck: " + cards; //not currently used 
       return result; 
      }  
     } 

import java.applet.Applet; 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Scanner; 
import javax.swing.*; 

public class WarUI extends JApplet 
    implements ActionListener { 
       JTextArea displayLabel = new JTextArea(""); //sets label to display message 
       JTextArea displayLabel2 = new JTextArea(""); //sets label to display message 
       JButton runButton = new JButton("Run"); //button that starts program 
      Container con = getContentPane(); //gets container 


      Card player1; 
      Card player2; 
      FullDeck hand1 = new FullDeck(); 

      Card card = new Card(); 


      public void init() { 
       con.setLayout(new FlowLayout());//sets flowlayout 
       con.add(new JLabel());  //jlabel container 
       con.add(runButton); //run button container 
       con.add(displayLabel); //display label container 
       con.add(displayLabel2); //display label container 
       runButton.addActionListener(this);//looks to see if run is clicked 
       } 

      public void actionPerformed(ActionEvent e) { 


        for (int i = 0; i < 1; i++) { 
         player1= hand1.drawRandomCard(); //draws cards for player 1 
         player1.toString(); 
          } 
        for (int i = 0; i < 1; i++) { 
         player2= hand1.drawRandomCard(); //draws cards for player 2 
         player2.toString(); 
          } 

       displayLabel.setText(player1.toString() + "\n" + player2.toString()+ card.getValue()); //displays both players values/suits 

        } 
      } 

回答

1

您還沒有initilise您number默認值爲0(實例成員),所以int well = numbers[number];是給第一個元素是1

您可以修改你的方法像以下方式可以得到價值

  public int getValue(int position) { 

      int well = numbers[position]; 
      return well; 
      } 
1

無論何時創建卡片,都會調用Card()構造函數。它設置你的實例變量數值爲0

public int getValue() { // cant get this to work 

       int well = numbers[number]; 
       return well; 
       } 

在該方法中數= 0 getValue()返回數[0],這是一種使用參數的構造相反創建一個卡。

public Card(int suits, int numbers) 
       { 
         suit = suits; 
         number = numbers; 

       } 

實施例:

Card card = new Card(2,2);