我正在尝试构建一个简单的猜谜游戏。我有一个奇怪的问题:
-(int)setRandom {
randomNum=(int)arc4random() % 100;
return randomNum;
}
-(IBAction)submit
{
num=[self setRandom];
if([numberField.text intValue] > num)
randomNumLabel.text=@"Too high. Try again";
else if([numberField.text intValue] < num)
randomNumLabel.text=@"Too low. Try again";
else
randomNumLabel.text=@"You got it, congrats!";
}
问题是每次按提交时我都会得到一个新的随机数。我认为第一种方法会创建随机数,每次都会相同,但显然不是。我该如何解决这个问题?
答案 0 :(得分:4)
每次提交时都不要调用setRandom。 arc4random()每次调用时都会返回一个新的随机数。
创建一个存储随机数的属性,并仅在需要时设置 - 在初始化和游戏重置时。
答案 1 :(得分:1)
为此,你需要一个全局变量。首先是一个fall声明
NSInteger num;在.h类然后在viewDidLoad
写这样的
- (void)viewDidLoad {
num=[self setRandom];
//you stuff
}
然后提交
-(IBAction)submit
{
if([numberField.text intValue] > num)
randomNumLabel.text=@"Too high. Try again";
else if([numberField.text intValue] < num)
randomNumLabel.text=@"Too low. Try again";
else
{
randomNumLabel.text=@"You got it, congrats!";
num=[self setRandom];
}
}
-(int)setRandom {
randomNum=(int)arc4random() % 100;
return randomNum;
}
这里你在查看加载时得到一个随机数,然后当你的答案与数字匹配时,你会得到一个新的随机数。
所以这对你有帮助。