实现功能:设置了一个按钮,鼠标点击,随机显示一副扑克牌的一张牌
目前问题:点击后没有显示。
问题应该是下面我标注了红色的两行代码,还请帮忙,感谢!#import "PlayingCardDeck.h"
#import "Deck.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *flipsLabel;
@property (nonatomic) NSInteger flipCount;
@property (strong,nonatomic) Deck *deck;@end@implementation ViewController
- (Deck *)deck
{
if (!_deck) {
_deck = [self createDeck];
}
return _deck;
}- (Deck *)createDeck
{
return [[PlayingCardDeck alloc] init];
}- (IBAction)touchCardButton:(UIButton *)sender {
//UIImage *cardImage = [UIImage imageNamed:@"cardback"];
if ([sender.currentTitle length]) {
[sender setBackgroundImage:[UIImage imageNamed:@"cardback"]
forState:UIControlStateNormal];
[sender setTitle:@"" forState:UIControlStateNormal];
}else
{
Card *randomCard = [self.deck drawRandomCard];。// 该行存在问题,不知道什么原因
[sender setBackgroundImage:[UIImage imageNamed:@"cardfront"]
forState:UIControlStateNormal];
[sender setTitle:randomCard.contents forState:UIControlStateNormal];
}
self.flipCount++;
}
PlayingCardDeck.m:
#import "PlayingCardDeck.h"
#import "PlayingCard.h"@implementation PlayingCardDeck- (instancetype)init
{
self = [super init];
if (self) {
for (NSString *suit in [PlayingCard validSuits]) {
for (NSUInteger rank = 1; rank <= [PlayingCard maxRank]; rank++) {
PlayingCard *card = [[PlayingCard alloc] init];
card.rank = rank;
card.suit = suit;
}
}
}
return self;
}@end#import "Deck.h"
@interface Deck()
@property (strong,nonatomic) NSMutableArray *cards;
@end
Deck.m:- (NSMutableArray *)cards
{
if (!_cards) _cards = [[NSMutableArray alloc] init];
return _cards;
}- (Card *)drawRandomCard
{
Card *randomCard = nil;
if ([self.cards count]) { //好像就是这里存在问题:self.cards count 一直是0,正常这里应该是一幅扑克牌的52张牌,不知道原因
unsigned index = arc4random() % [self.cards count];
randomCard = self.cards[index];
[self.cards removeObjectAtIndex:index];
}
return randomCard;
}
完整代码如下:
//
// Card.h
// CardGame
//
// Created by jianghao on 2017/4/16.
// Copyright 2017年 jianghao. All rights reserved.
//#import <Foundation/Foundation.h>@interface Card : NSObject@property (strong,nonatomic) NSString *contents;
@property (nonatomic) BOOL chosen;
@property (nonatomic) BOOL matched;- (NSInteger) match:(NSArray *)otherCard;@end
//
// Card.m
// CardGame
//
// Created by jianghao on 2017/4/16.
// Copyright 2017年 jianghao. All rights reserved.
//#import "Card.h"@implementation Card- (NSInteger) match:(NSArray *)otherCard
{
int score = 0;
for (Card *card in otherCard) {
if ([card.contents isEqualToString:self.contents]) {
score = 1;
}
}
return score;
}@end
//
// PlayingCard.h
// CardGame
//
// Created by jianghao on 2017/4/17.
// Copyright 2017年 jianghao. All rights reserved.
//#import <Foundation/Foundation.h>
#import "Card.h"@interface PlayingCard : Card@property (strong,nonatomic) NSString *suit;
@property (nonatomic) NSUInteger rank;+ (NSArray *)validSuits;
+ (NSUInteger)maxRank;@end
//
// PlayingCard.m
// CardGame
//
// Created by jianghao on 2017/4/17.
// Copyright 2017年 jianghao. All rights reserved.
//#import "PlayingCard.h"@implementation PlayingCard- (NSString *) contents
{
NSArray *rankStrings = [PlayingCard rankStrings];
return [rankStrings[self.rank] stringByAppendingString:self.suit];
}@synthesize suit = _suit;+ (NSArray *)validSuits
{
return @[@"",@"",@"",@""] ; //黑红梅方
}- (void)setSuit:(NSString *)suit
{
if ([[PlayingCard validSuits] containsObject:suit]) {
_suit = suit;
}
}- (NSString *)suit
{
return _suit ? _suit : @"?";
}+ (NSArray *)rankStrings
{
return @[@"?",@"A",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"Q",@"K",@"A"];
}
+ (NSUInteger)maxRank
{
return [[self rankStrings] count] -1;
}- (void)setRank:(NSUInteger)rank
{
if (_rank <= [PlayingCard maxRank]) {
_rank = rank;
}
}
//
// Deck.h
// CardGame
//
// Created by jianghao on 2017/4/17.
// Copyright 2017年 jianghao. All rights reserved.
//#import <Foundation/Foundation.h>
#import "Card.h"
//#import "PlayingCard.h"@interface Deck : NSObject- (void)addCard:(Card *)card atTop:(BOOL)atTop;
- (void)addCard:(Card *)card;-(Card *)drawRandomCard;@end//
// Deck.m
// CardGame
//
// Created by jianghao on 2017/4/17.
// Copyright 2017年 jianghao. All rights reserved.
//#import "Deck.h"
@interface Deck()
@property (strong,nonatomic) NSMutableArray *cards;
@end
@implementation Deck- (NSMutableArray *)cards
{
if (!_cards) _cards = [[NSMutableArray alloc] init];
return _cards;
}- (void)addCard:(Card *)card atTop:(BOOL)atTop
{
if (atTop) {
[self.cards insertObject:card atIndex:0];
}
else{
[self.cards addObject:card];
}
}- (void)addCard:(Card *)card
{
[self addCard:card atTop:NO];
}- (Card *)drawRandomCard
{
Card *randomCard = nil;
if ([self.cards count]) {
unsigned index = arc4random() % [self.cards count];
randomCard = self.cards[index];
[self.cards removeObjectAtIndex:index];
}
else
NSLog(@"报错");
return randomCard;
}@end
//
// PlayingCardDeck.h
// CardGame
//
// Created by jianghao on 2017/4/19.
// Copyright 2017年 jianghao. All rights reserved.
//#import <Foundation/Foundation.h>
#import "Deck.h"@interface PlayingCardDeck : Deck@end
//
// PlayingCardDeck.m
// CardGame
//
// Created by jianghao on 2017/4/19.
// Copyright 2017年 jianghao. All rights reserved.
//#import "PlayingCardDeck.h"
#import "PlayingCard.h"@implementation PlayingCardDeck- (instancetype)init
{
self = [super init];
if (self) {
for (NSString *suit in [PlayingCard validSuits]) {
for (NSUInteger rank = 1; rank <= [PlayingCard maxRank]; rank++) {
PlayingCard *card = [[PlayingCard alloc] init];
card.rank = rank;
card.suit = suit;
}
}
}
return self;
}@end
#import "ViewController.h"
#import "PlayingCardDeck.h"
#import "Deck.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *flipsLabel;
@property (nonatomic) NSInteger flipCount;
@property (strong,nonatomic) Deck *deck;@end@implementation ViewController
- (Deck *)deck
{
if (!_deck) {
_deck = [self createDeck];
}
return _deck;
}- (Deck *)createDeck
{
return [[PlayingCardDeck alloc] init];
}- (void)setFlipCount:(NSInteger)flipCount
{
_flipCount = flipCount;
self.flipsLabel.text = [NSString stringWithFormat:@"Flips:%ld",self.flipCount];
//NSLog(@"flipCount = %d",self.flipCount);
}- (IBAction)touchCardButton:(UIButton *)sender {
//UIImage *cardImage = [UIImage imageNamed:@"cardback"];
if ([sender.currentTitle length]) {
[sender setBackgroundImage:[UIImage imageNamed:@"cardback"]
forState:UIControlStateNormal];
[sender setTitle:@"" forState:UIControlStateNormal];
}else
{
Card *randomCard = [self.deck drawRandomCard];
[sender setBackgroundImage:[UIImage imageNamed:@"cardfront"]
forState:UIControlStateNormal];
[sender setTitle:randomCard.contents forState:UIControlStateNormal];
}
self.flipCount++;
}
@end
目前问题:点击后没有显示。
问题应该是下面我标注了红色的两行代码,还请帮忙,感谢!#import "PlayingCardDeck.h"
#import "Deck.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *flipsLabel;
@property (nonatomic) NSInteger flipCount;
@property (strong,nonatomic) Deck *deck;@end@implementation ViewController
- (Deck *)deck
{
if (!_deck) {
_deck = [self createDeck];
}
return _deck;
}- (Deck *)createDeck
{
return [[PlayingCardDeck alloc] init];
}- (IBAction)touchCardButton:(UIButton *)sender {
//UIImage *cardImage = [UIImage imageNamed:@"cardback"];
if ([sender.currentTitle length]) {
[sender setBackgroundImage:[UIImage imageNamed:@"cardback"]
forState:UIControlStateNormal];
[sender setTitle:@"" forState:UIControlStateNormal];
}else
{
Card *randomCard = [self.deck drawRandomCard];。// 该行存在问题,不知道什么原因
[sender setBackgroundImage:[UIImage imageNamed:@"cardfront"]
forState:UIControlStateNormal];
[sender setTitle:randomCard.contents forState:UIControlStateNormal];
}
self.flipCount++;
}
PlayingCardDeck.m:
#import "PlayingCardDeck.h"
#import "PlayingCard.h"@implementation PlayingCardDeck- (instancetype)init
{
self = [super init];
if (self) {
for (NSString *suit in [PlayingCard validSuits]) {
for (NSUInteger rank = 1; rank <= [PlayingCard maxRank]; rank++) {
PlayingCard *card = [[PlayingCard alloc] init];
card.rank = rank;
card.suit = suit;
}
}
}
return self;
}@end#import "Deck.h"
@interface Deck()
@property (strong,nonatomic) NSMutableArray *cards;
@end
Deck.m:- (NSMutableArray *)cards
{
if (!_cards) _cards = [[NSMutableArray alloc] init];
return _cards;
}- (Card *)drawRandomCard
{
Card *randomCard = nil;
if ([self.cards count]) { //好像就是这里存在问题:self.cards count 一直是0,正常这里应该是一幅扑克牌的52张牌,不知道原因
unsigned index = arc4random() % [self.cards count];
randomCard = self.cards[index];
[self.cards removeObjectAtIndex:index];
}
return randomCard;
}
完整代码如下:
//
// Card.h
// CardGame
//
// Created by jianghao on 2017/4/16.
// Copyright 2017年 jianghao. All rights reserved.
//#import <Foundation/Foundation.h>@interface Card : NSObject@property (strong,nonatomic) NSString *contents;
@property (nonatomic) BOOL chosen;
@property (nonatomic) BOOL matched;- (NSInteger) match:(NSArray *)otherCard;@end
//
// Card.m
// CardGame
//
// Created by jianghao on 2017/4/16.
// Copyright 2017年 jianghao. All rights reserved.
//#import "Card.h"@implementation Card- (NSInteger) match:(NSArray *)otherCard
{
int score = 0;
for (Card *card in otherCard) {
if ([card.contents isEqualToString:self.contents]) {
score = 1;
}
}
return score;
}@end
//
// PlayingCard.h
// CardGame
//
// Created by jianghao on 2017/4/17.
// Copyright 2017年 jianghao. All rights reserved.
//#import <Foundation/Foundation.h>
#import "Card.h"@interface PlayingCard : Card@property (strong,nonatomic) NSString *suit;
@property (nonatomic) NSUInteger rank;+ (NSArray *)validSuits;
+ (NSUInteger)maxRank;@end
//
// PlayingCard.m
// CardGame
//
// Created by jianghao on 2017/4/17.
// Copyright 2017年 jianghao. All rights reserved.
//#import "PlayingCard.h"@implementation PlayingCard- (NSString *) contents
{
NSArray *rankStrings = [PlayingCard rankStrings];
return [rankStrings[self.rank] stringByAppendingString:self.suit];
}@synthesize suit = _suit;+ (NSArray *)validSuits
{
return @[@"",@"",@"",@""] ; //黑红梅方
}- (void)setSuit:(NSString *)suit
{
if ([[PlayingCard validSuits] containsObject:suit]) {
_suit = suit;
}
}- (NSString *)suit
{
return _suit ? _suit : @"?";
}+ (NSArray *)rankStrings
{
return @[@"?",@"A",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"Q",@"K",@"A"];
}
+ (NSUInteger)maxRank
{
return [[self rankStrings] count] -1;
}- (void)setRank:(NSUInteger)rank
{
if (_rank <= [PlayingCard maxRank]) {
_rank = rank;
}
}
//
// Deck.h
// CardGame
//
// Created by jianghao on 2017/4/17.
// Copyright 2017年 jianghao. All rights reserved.
//#import <Foundation/Foundation.h>
#import "Card.h"
//#import "PlayingCard.h"@interface Deck : NSObject- (void)addCard:(Card *)card atTop:(BOOL)atTop;
- (void)addCard:(Card *)card;-(Card *)drawRandomCard;@end//
// Deck.m
// CardGame
//
// Created by jianghao on 2017/4/17.
// Copyright 2017年 jianghao. All rights reserved.
//#import "Deck.h"
@interface Deck()
@property (strong,nonatomic) NSMutableArray *cards;
@end
@implementation Deck- (NSMutableArray *)cards
{
if (!_cards) _cards = [[NSMutableArray alloc] init];
return _cards;
}- (void)addCard:(Card *)card atTop:(BOOL)atTop
{
if (atTop) {
[self.cards insertObject:card atIndex:0];
}
else{
[self.cards addObject:card];
}
}- (void)addCard:(Card *)card
{
[self addCard:card atTop:NO];
}- (Card *)drawRandomCard
{
Card *randomCard = nil;
if ([self.cards count]) {
unsigned index = arc4random() % [self.cards count];
randomCard = self.cards[index];
[self.cards removeObjectAtIndex:index];
}
else
NSLog(@"报错");
return randomCard;
}@end
//
// PlayingCardDeck.h
// CardGame
//
// Created by jianghao on 2017/4/19.
// Copyright 2017年 jianghao. All rights reserved.
//#import <Foundation/Foundation.h>
#import "Deck.h"@interface PlayingCardDeck : Deck@end
//
// PlayingCardDeck.m
// CardGame
//
// Created by jianghao on 2017/4/19.
// Copyright 2017年 jianghao. All rights reserved.
//#import "PlayingCardDeck.h"
#import "PlayingCard.h"@implementation PlayingCardDeck- (instancetype)init
{
self = [super init];
if (self) {
for (NSString *suit in [PlayingCard validSuits]) {
for (NSUInteger rank = 1; rank <= [PlayingCard maxRank]; rank++) {
PlayingCard *card = [[PlayingCard alloc] init];
card.rank = rank;
card.suit = suit;
}
}
}
return self;
}@end
#import "ViewController.h"
#import "PlayingCardDeck.h"
#import "Deck.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *flipsLabel;
@property (nonatomic) NSInteger flipCount;
@property (strong,nonatomic) Deck *deck;@end@implementation ViewController
- (Deck *)deck
{
if (!_deck) {
_deck = [self createDeck];
}
return _deck;
}- (Deck *)createDeck
{
return [[PlayingCardDeck alloc] init];
}- (void)setFlipCount:(NSInteger)flipCount
{
_flipCount = flipCount;
self.flipsLabel.text = [NSString stringWithFormat:@"Flips:%ld",self.flipCount];
//NSLog(@"flipCount = %d",self.flipCount);
}- (IBAction)touchCardButton:(UIButton *)sender {
//UIImage *cardImage = [UIImage imageNamed:@"cardback"];
if ([sender.currentTitle length]) {
[sender setBackgroundImage:[UIImage imageNamed:@"cardback"]
forState:UIControlStateNormal];
[sender setTitle:@"" forState:UIControlStateNormal];
}else
{
Card *randomCard = [self.deck drawRandomCard];
[sender setBackgroundImage:[UIImage imageNamed:@"cardfront"]
forState:UIControlStateNormal];
[sender setTitle:randomCard.contents forState:UIControlStateNormal];
}
self.flipCount++;
}
@end
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货