如何对NSMutableArray的扑克牌进行排序

时间:2011-04-05 08:15:33

标签: iphone objective-c ios ios4

我有NSMutableArrary,它有扑克牌的形象,如:

  1. 01-13卡是黑桃,
  2. 14-26是Hearts,
  3. 27-39是Diamonds,
  4. 40-52是俱乐部。
  5. 我使用

    对其进行颜色排序
    [CopyArraryForShorting sortUsingSelector:@selector(caseInsensitiveCompare:)];
    

    这条线,但是我没有将它编号为Wile。所以请告诉我如何对它进行排序。

    arrayPlayerCard=[NSArray arrayWithObjects:[UIImage imageNamed:@"01.png"],
                                              [UIImage imageNamed:@"02.png"],
                            [UIImage imageNamed:@"03.png"],
                                              [UIImage imageNamed:@"04.png"],
                                              [UIImage imageNamed:@"05.png"],
                      [UIImage imageNamed:@"06.png"],
                                              [UIImage imageNamed:@"07.png"],
                                              [UIImage imageNamed:@"08.png"],................................................,nil]; 
    

2 个答案:

答案 0 :(得分:2)

我会创建一个自定义类。类似的东西:

card.h

typedef enum {
    CardSuitSpade,
    CardSuitHeart,
    CardSuitClub,
    CardSuitDiamonds
}

@interface Card : NSObject {
    CardSuit    _suit;
    NSUInteger  _value;
}

- (id)initWithSuit:(CardSuit)suit andValue:(NSUInteger)value;

此类的实现将执行以下操作:

  1. 实施initWithSuit:andValue:初始化程序
  2. 在设置值时验证卡值在0..12(ace到king)之间,如果不是
  3. 则失败
  4. 实施比较器以比较两张牌并返回适当的比较值
  5. 然后你可以拥有一张充满卡片的NSArray并轻松排序。你也可以创建方法来洗牌,等等。创造你的纸牌游戏。

答案 1 :(得分:0)

创建自定义类,或将数据放入NSDictionary中。您无法对图像(在其名称上)进行排序,但您可以对字符串进行排序。

arrayPlayerCard=[NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"01", @"name", [UIImage imageNamed:@"01.png"], @"image", nil], ...

然后使用NSSortDescriptor进行排序。