シンプルなゲームのためにこのコードを書いています。数字をランダム化してからswitch
で何かをしています。それは簡単ですが、私は1回のラウンドで1回しか仕事をしたくありません。私の場合、ラウンドは3つのタスクです。ラウンドが終わったら、変数をリセットして新しいラウンドをやり直したい。だからランダムですが、タスクは1ラウンドで2回起こることはありません。Objective-Cでランダムな繰り返しはありません
私はこのコードを書いたが、うまくいかなかった。 rand()
を起動するボタンをクリックすると1番目のタスクが実行され、2番目のタスクが再びクリックされますが、3回目をクリックすると何も起こりません。 3番目のタスクは4回目のクリックで機能します。
int text;
int x=3; //this is number of tasks in one round, so in switch i have 3 tasks
int z=9999;
int x0=1; //this mean's that task 0 can happen only once in one round
int x1=1;
int x2=1;
-(void)reset{ // this is rof checking if x is <1, then it will reset all variables (start a new round)
if (x<1) {
x=3;
x0=1;
x1=1;
x2=1;
}
}
-(void)randomize{
text = rand() % 3; //this wil get me a random number for switch
while(text==z) //this is because i don't want to have same number consecutively
{text = rand() % 3;}
}
- (IBAction)random:(id)sender {
[self randomize];
switch (text) {
case 0:
if (x0!=0){
//something will happen
z=0;
x0--;
x--;
[self reset];
break;
}
else {
[self randomize];
}
case 1:
if (x1!=0) {
//something will happen
z=1;
x1--;
x--;
[self reset];
break;
}
else {
[self randomize];
break;
}
case 2:
if (x2!=0) {
//something will happen
z=2;
x2--;
x--;
[self reset];
}
else {
[self randomize];
}
}
}
あなたの答えをたくさんありがとうございますが、私はよくそれを想像することはできません..私はObjective Cのコードでは新しいです –
@OndřejVeverkaさて、[ObjCでシャッフルする方法はこちら](http://stackoverflow.com/a/) 56656/2166798)。残りは直感的でなければなりません。好奇心の外に、あなたがObjCを初めて使っているのであれば、代わりにスウィフトを学んでいない何らかの理由がありますか? – pjs
アレイ学習の数時間後にありがとう、それは動作します! :) –