0

小さなゲームを作りたい:

ペアの写真を見つける必要があります。これが私のコードです。写真の表と裏を見ることができますが、写真を見つけたり比較したりしてペアを見つける方法がわかりません

ここに私のコードがあります:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.


}

// Create the view
CardView *cv = [[CardView alloc] initWithFrontImage:img1 backImage:img2];


}

いくつかのヒントやチュートリアルで私を助けてください:)

4

1 に答える 1

2

サンプル コードで既に行ったように、タグを使用しないのはなぜですか? cardview のタグを常に 1 に設定する理由はありますか? そうでない場合は、画像ごとに異なるタグを設定し、画像がクリックされたときにタグを比較できます。これが最も簡単な解決策です。それ以外の場合、別の簡単な解決策は、imageID などの cardview クラスに別のインスタンス変数を追加し、異なる画像の一意の ID を保存してから、これらの imageID を比較して、クリックされた 2 つの画像が同じかどうかを確認することです。

imageID を生成して保存するには、イメージ ファイル名がオブジェクト キーで、ID が nsnumber オブジェクトである NSDictionary を使用することをお勧めします。次に、画像を nsdictionary に追加するときに、画像ファイル名が既に存在するかどうかを確認します。存在する場合は imageID を返します。そうでない場合は、新しいオブジェクトとキーのペアを追加して、新しく作成された imageID を返します。詳細が必要な場合は、行き詰まっている場所を教えてください。

編集: imageID を cardview クラスに格納する代わりに、インスタンス変数として NSString frontImageFileName を追加するだけで、より簡単なアイデアが得られました。addCardAtX を次のように変更します。

- (void)addCardAtX:(CGFloat)x y:(CGFloat)y andFrontImageWithFileName:(NSString *) imgName andTag:(int)tag
{
// Load images
UIImage *img2= [UIImage imageNamed:@"card_back.png"];

// Create the view
//So instead of this one
//CardView *cv = [[CardView alloc] initWithFrontImage:img1 backImage:img2];

//You have
CardView *cv = [[CardView alloc] initWithFrontImage:[UIImage imageNamed:imgName] backImage:img2];
cv.frontImageFileName = imgName;

// Center card on location
CGRect f = cv.frame;
f.origin.x = x-(f.size.width/2.0);
f.origin.y = y-(f.size.height/2.0);

cv.frame = f;
}

これで、次の方法でカードビューの同等性を比較できます

[cv1.frontImageFileName isEqualTo:cv2.frontImageFileName] 
于 2013-01-28T16:57:03.140 に答える