2016-12-08 4 views
-2

내 가장 높은 카드 게임에 안드로이드 스튜디오를 사용하고 있습니다. 나는 카드, 갑판, 가모 로지 (Gamelogic)라고 불리는 세 가지 자바 클래스를 가지고 있습니다. 지금까지는 모든 것이 잘 진행되고 있지만 카드 비교 방법에 대한 기능을 시작하는 데 조금 문제가 있습니다. 이것이 내가 지금까지 가지고있는 것입니다 ...가장 높은 카드이기는 나의 프로그램이며 이제 카드를 비교하고 싶습니다.

import android.graphics.Color; 

/** 
* Created by azib2 on 12/1/2016. 
*/ 
enum Suite { 
    Heart, diamond, spades, clubs; 

    public String toString() 

    { 
     switch (this) { 
      case Heart: 
       return "Heart"; 
      case diamond: 
       return "diamond"; 
      case spades: 
       return "spades"; 
      case clubs: 
       return "clubs"; 
      default: 
       return "Wrong type"; 
     } 

    } 

    public String symbol(){ 

     switch (this) { 
      case Heart: 
       return "\u2764"; 
      case diamond: 
       return "\u2666"; 
      case spades: 
       return "\u2660"; 
      case clubs: 
       return "\u2663"; 
      default: 
       return "Wrong type"; 
     } 
    } 


    public int colors() { 
     switch (this) { 
      case Heart: 
      case diamond: 
       return Color.RED; 
      case spades: 
      case clubs: 
       return Color.BLACK; 
     } 

     return 0; 
    } 

} 
public class Cards { 
    private int cardnum; 
    private Suite suitetype; 


    public Cards(int cardnum, Suite suitetype){ 
     this.cardnum = cardnum; 
     this.suitetype = suitetype; 
    } 
    public String CardType(int num){ 
     switch(num){ 
      case 1: return "A"; 
      case 2: return "2"; 
      case 3 : return"3"; 
      case 4: return "4"; 
      case 5: return "5"; 
      case 6: return "6"; 
      case 7: return "7"; 
      case 8: return "8"; 
      case 9: return "9"; 
      case 10: return "10"; 
      case 11: return "J"; 
      case 12: return "Q"; 
      case 13: return "K"; 
      default: return " error invaild "; 
     } 

    } 
    public void CompareCards(){ 

    } 

    public int Getcardnum(){ 
     return cardnum; 
    } 
    public Suite getsuite(){ 
     return suitetype; 

    } 
} 

카드를 비교하려면 어떻게해야합니까?

+0

'CompareCards()'함수를 작성하는 기술적 세부 사항에 대해 잘 알기 전에 일반적인 의미에서해야 할 일을 생각해 볼 수 있습니다. 예 : 어디서 전화가 왔습니까? 그것의 입력은 무엇입니까? 그것은 아마도 카드 인스턴스를 입력으로 가져와 그 카드가'this' 카드보다 높은지 ('.equals() 함수가 어떻게 작동하는지와 비슷한) 부울을 반환해야합니까? 또는...? (또한, 질문에서 "javascript"태그를 제거했습니다 : JavaScript! = Java.) – nnnnnn

+0

에이스가 최고 또는 최저일까요? –

답변

0

먼저 "카드"는 "카드"로하는 것이 좋습니다. 하지만 여기서 "카드"를 고수 할 것입니다. 그럴 수도 종류 A,이 방법으로

if(card.compareTo(otherCard) > 0) { ... } 

: 하나의 카드가 다른 것보다 높은 경우 다음

public class Cards implements Comparable<Cards> { 

    // Ace lowest: 
    public int compareTo(Card other) { 
     return Integer.compare(cardnum, other.cardnum); 
    } 
} 

보고 :

이것은 Comparable 인터페이스에 대한 좋은 사용의 경우처럼 보인다 사용 카드 목록 :

List<Cards> cards = new ArrayList<Cards>(); 
// Add all cards desired 
Collections.sort(cards); 

안정적인 정렬을 원하면 and suit) :

+1

고마워요, 이건 정말 도움이되었습니다. 네 놀라운. –