【发布时间】:2014-10-16 20:40:48
【问题描述】:
我正在制作一个简单的记忆游戏应用程序,我想让它随机放置图片。所以我使用的是arc4random() %4。我有 4 张图片,每张图片需要 2 张才能显示总共 8 张。但是当我执行 arc4random() 时,每张图片都超过 2 张。
这是我的代码 这是我的 .M 文件
#import "GameViewController.h"
@interface GameViewController ()
@end
@implementation GameViewController
-(void)Card1SelectedType{
switch (card1Type) {
case 0:
{
UIImage *ButtonImage = [UIImage imageNamed:@"cell phone.jpeg"];
[card1 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card1];
}
break;
case 1:
{
UIImage *ButtonImage = [UIImage imageNamed:@"Dinasore.jpeg"];
[card1 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card1];
}
break;
case 2:
{
UIImage *ButtonImage = [UIImage imageNamed:@"jump Rope.jpeg"];
[card1 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card1];
}
break;
case 3:
{
UIImage *ButtonImage = [UIImage imageNamed:@"monkey.jpeg"];
[card1 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card1];
}
break;
default:
break;
}
}
-(void)Card2SelectedType{
switch (card2Type) {
case 0:
{
UIImage *ButtonImage = [UIImage imageNamed:@"cell phone.jpeg"];
[card2 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card2];
}
break;
case 1:
{
UIImage *ButtonImage = [UIImage imageNamed:@"Dinasore.jpeg"];
[card2 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card2];
}
break;
case 2:
{
UIImage *ButtonImage = [UIImage imageNamed:@"jump Rope.jpeg"];
[card2 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card2];
}
break;
case 3:
{
UIImage *ButtonImage = [UIImage imageNamed:@"monkey.jpeg"];
[card2 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card2];
}
break;
default:
break;
}
}
-(void)Card3SelectedType;{
switch (card3Type) {
case 0:
{
UIImage *ButtonImage = [UIImage imageNamed:@"cell phone.jpeg"];
[card3 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card3];
}
break;
case 1:
{
UIImage *ButtonImage = [UIImage imageNamed:@"Dinasore.jpeg"];
[card1 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card3];
}
break;
case 2:
{
UIImage *ButtonImage = [UIImage imageNamed:@"jump Rope.jpeg"];
[card3 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card3];
}
break;
case 3:
{
UIImage *ButtonImage = [UIImage imageNamed:@"monkey.jpeg"];
[card3 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card3];
}
break;
default:
break;
}
}
-(void)Card4SelectedType{
switch (card4Type) {
case 0:
{
UIImage *ButtonImage = [UIImage imageNamed:@"cell phone.jpeg"];
[card4 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card4];
}
break;
case 1:
{
UIImage *ButtonImage = [UIImage imageNamed:@"Dinasore.jpeg"];
[card4 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card4];
}
break;
case 2:
{
UIImage *ButtonImage = [UIImage imageNamed:@"jump Rope.jpeg"];
[card4 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card4];
}
break;
case 3:
{
UIImage *ButtonImage = [UIImage imageNamed:@"monkey.jpeg"];
[card4 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card4];
}
break;
default:
break;
}
}
-(void)Card5SelcetedType{
switch (card5Type) {
case 0:
{
UIImage *ButtonImage = [UIImage imageNamed:@"cell phone.jpeg"];
[card5 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card5];
}
break;
case 1:
{
UIImage *ButtonImage = [UIImage imageNamed:@"Dinasore.jpeg"];
[card5 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card5];
}
break;
case 2:
{
UIImage *ButtonImage = [UIImage imageNamed:@"jump Rope.jpeg"];
[card5 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card5];
}
break;
case 3:
{
UIImage *ButtonImage = [UIImage imageNamed:@"monkey.jpeg"];
[card5 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card5];
}
break;
default:
break;
}
}
-(void)Card6SelectedType{
switch (card6Type) {
case 0:
{
UIImage *ButtonImage = [UIImage imageNamed:@"cell phone.jpeg"];
[card6 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card6];
}
break;
case 1:
{
UIImage *ButtonImage = [UIImage imageNamed:@"Dinasore.jpeg"];
[card6 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card6];
}
break;
case 2:
{
UIImage *ButtonImage = [UIImage imageNamed:@"jump Rope.jpeg"];
[card6 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card6];
}
break;
case 3:
{
UIImage *ButtonImage = [UIImage imageNamed:@"monkey.jpeg"];
[card6 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card6];
}
break;
default:
break;
}
}
-(void)Card7SelectedType{
switch (card7Type) {
case 0:
{
UIImage *ButtonImage = [UIImage imageNamed:@"cell phone.jpeg"];
[card7 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card7];
}
break;
case 1:
{
UIImage *ButtonImage = [UIImage imageNamed:@"Dinasore.jpeg"];
[card7 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card7];
}
break;
case 2:
{
UIImage *ButtonImage = [UIImage imageNamed:@"jump Rope.jpeg"];
[card7 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card7];
}
break;
case 3:
{
UIImage *ButtonImage = [UIImage imageNamed:@"monkey.jpeg"];
[card7 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card7];
}
break;
default:
break;
}
}
-(void)Card8SelectedType{
switch (card8Type) {
case 0:
{
UIImage *ButtonImage = [UIImage imageNamed:@"cell phone.jpeg"];
[card8 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card8];
}
break;
case 1:
{
UIImage *ButtonImage = [UIImage imageNamed:@"Dinasore.jpeg"];
[card8 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card8];
}
break;
case 2:
{
UIImage *ButtonImage = [UIImage imageNamed:@"jump Rope.jpeg"];
[card8 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card8];
}
break;
case 3:
{
UIImage *ButtonImage = [UIImage imageNamed:@"monkey.jpeg"];
[card8 setImage:ButtonImage forState:UIControlStateNormal];
[self.view addSubview:card8];
}
break;
default:
break;
}
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
card1Selected.hidden = YES;
card2Selected.hidden = YES;
card3Selected.hidden = YES;
card4Selected.hidden = YES;
card5Selected.hidden = YES;
card6Selected.hidden = YES;
card7Selected.hidden = YES;
card8Selected.hidden = YES;
card1Type = arc4random() %4;
card2Type = arc4random() %4;
card3Type = arc4random() %4;
card4Type = arc4random() %4;
card6Type = arc4random() %4;
card7Type = arc4random() %4;
card8Type = arc4random() %4;
[self Card1SelectedType];
[self Card2SelectedType];
[self Card3SelectedType];
[self Card4SelectedType];
[self Card5SelcetedType];
[self Card6SelectedType];
[self Card7SelectedType];
[self Card8SelectedType];
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
这是在我的 .h 文件中
![#import <UIKit/UIKit.h>
int card1Type;
int card2Type;
int card3Type;
int card4Type;
int card5Type;
int card6Type;
int card7Type;
int card8Type;
@interface GameViewController : UIViewController
{
IBOutlet UIButton *card1;
IBOutlet UIButton *card2;
IBOutlet UIButton *card3;
IBOutlet UIButton *card4;
IBOutlet UIButton *card5;
IBOutlet UIButton *card6;
IBOutlet UIButton *card7;
IBOutlet UIButton *card8;
IBOutlet UIImageView *card1Selected;
IBOutlet UIImageView *card2Selected;
IBOutlet UIImageView *card3Selected;
IBOutlet UIImageView *card4Selected;
IBOutlet UIImageView *card5Selected;
IBOutlet UIImageView *card6Selected;
IBOutlet UIImageView *card7Selected;
IBOutlet UIImageView *card8Selected;
}
-(void)Card1SelectedType;
-(void)Card2SelectedType;
-(void)Card3SelectedType;
-(void)Card4SelectedType;
-(void)Card5SelcetedType;
-(void)Card6SelectedType;
-(void)Card7SelectedType;
-(void)Card8SelectedType;
@end][1]
【问题讨论】:
-
最简单的方法是打乱一个序列的允许值;就像洗一副牌一样 - 可以抽出 4 张任何牌,但绝不会抽出 2 张面值相同和花色相同的牌。毕竟,随机是随机的。
标签: ios objective-c random arc4random