我已经学会了CS193P的第一堂课和第二堂课,并完成了第一个任务,让我让Matchismo以随机顺序翻阅整副扑克牌,每次只显示一张牌。这里是我的CardGameViewController.m的代码关于CS193P任务1的问题
#import "CardGameViewController.h"
#import "Deck.h"
#import "PlayingCardDeck.h"
@interface CardGameViewController()
@property (weak, nonatomic) IBOutlet UILabel *flipsLabel;
@property (nonatomic) int flipCount;
@property (strong, nonatomic) Deck *fullDeck;
@end
@implementation CardGameViewController
- (void)setFlipCount:(int)flipCount{
_flipCount = flipCount;
self.flipsLabel.text = [NSString stringWithFormat:@"Flips: %d",self.flipCount];
NSLog(@"flipCount changed to %d",self.flipCount);
}
- (Deck *)fullDeck{
if (!_fullDeck) _fullDeck =[[PlayingCardDeck alloc] init];
return _fullDeck;
}
- (IBAction)touchCardButton:(UIButton *)sender {
if (!sender.currentTitle) {
[sender setBackgroundImage:[UIImage imageNamed:@"cardfront"]
forState:UIControlStateNormal];
[sender setTitle:[[self.fullDeck drawRandomCard] contents]
forState:UIControlStateNormal];
} else {
[sender setBackgroundImage:[UIImage imageNamed:@"cardback"]
forState:UIControlStateNormal];
[sender setTitle:nil forState:UIControlStateNormal];
}
self.flipCount++;
}
@end
当然,在此之前,我已经删除了“A♣︎”在第一次攀科技演示的按钮,因为提示告诉我,我应该让拿出展示而不是卡的背面。我成功构建应用程序,看起来工作得很好。
然而,转让的提示告诉我:
一个很好的解决方案将给予一些思想,如果在甲板上的每卡已被证明与用户仍保持翻转会发生什么。做一些简单明智的事情(例如,你不应该以任何方式修改模型中的类)。
但我的解决方案将让用户翻转卡infinitely.So我尝试如果()这样增加了达到目标:
- (IBAction)touchCardButton:(UIButton *)sender {
if (self.flipCount < 53){ /*There are 52 cards in a deck */
if (!sender.currentTitle) {
[sender setBackgroundImage:[UIImage imageNamed:@"cardfront"]
forState:UIControlStateNormal];
[sender setTitle:[[self.fullDeck drawRandomCard] contents]
forState:UIControlStateNormal];
} else {
[sender setBackgroundImage:[UIImage imageNamed:@"cardback"]
forState:UIControlStateNormal];
[sender setTitle:nil forState:UIControlStateNormal];
}
self.flipCount++;
}
}
然后当我运行应用程序,触摸屏,当fliplabel达到52时,它不会翻转。
这种解决方案是否幼稚和荒谬?我搜索了github以查看其他人的解决方案,似乎忽略了这些提示。可以与我分享您的想法吗?
任何建议将不胜感激!