2

私の目標は、サイコロ ゲームを次のように設計することです。

ダイスを 1 つ振って、このダイスが偶数の場合、追加のダイスを 1 つ取得し、ダイスを 2 つ振ることができます。すべてのサイコロが偶数の場合、追加のサイコロを 1 つ取得します。

私の問題は、それを行うための一般的な方法をどのように構築できるかを理解できないことです。

最近、私は次のようなことについて考えました

  • n = 1
  • n*さいころを転がして(「転がす」と乱数が返ってきます)、どのサイコロが偶数かを調べます...

誰かが最善の方法を教えてください。ありがとうございました

更新 コメントの後、最終的に NSMutableArray を使用してサイコロの値を保存しようとしましたが、これはうまく機能します。値が NSMutableArray に保存されると、値は同じままで、好きなように変更できない新しいサイコロを投げるのと同じように。これは、乱数が不変の NSNumber に格納されているという事実から来ていると思いますか? 皆さん、私のコードをチェックしてもらえますか...

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) 
{   
//  my int values 
int valueOne = arc4random()%6+1;
int valueTwo = arc4random()%6+1;
int valueThree = arc4random()%6+1;
int valueFour = arc4random()%6+1;
int valueFive = arc4random()%6+1;

//  Wrapped into objects to add to my array
NSNumber* diceOne = [NSNumber numberWithInt:valueOne];
NSNumber* diceTwo = [NSNumber numberWithInt:valueTwo];
NSNumber* diceThree = [NSNumber numberWithInt:valueThree];
NSNumber* diceFour = [NSNumber numberWithInt:valueFour];
NSNumber* diceFive = [NSNumber numberWithInt:valueFive];

//  my array called "myDice"
NSMutableArray* myDice = [[NSMutableArray alloc] initWithCapacity:6];

//  add the objects
[myDice addObject:diceOne];
[myDice addObject:diceTwo];
[myDice addObject:diceThree];
[myDice addObject:diceFour];
[myDice addObject:diceFive];

//  Sorting my array
int i;
NSNumber *myObject;

for(i=0;i<[myDice count];i++)
{
    myObject = [myDice objectAtIndex:i];
NSLog(@"\n\nyour die %d is %@.",i+1, myObject);
}


return 0;

}
4

2 に答える 2

0

たぶん、これはあなたを動かすのに役立ちます。

プログラムが開始すると、1 つの「die」の配列があります (これは int または die オブジェクトです)。そのサイコロを「ロール」し、配列内の各要素に対して 1 から 6 の間の乱数 (6 面ダイスを想定) を生成します。bool even = true があり、配列を反復するときに、値が奇数の場合は壊れるだけです。奇数に当たらずに反復する場合は、別のサイコロを追加して繰り返します。

于 2012-11-28T10:06:43.053 に答える
0

私があなたの質問を正しく理解していれば、必要なのは単純なループだけです。高度なアルゴリズムや配列はまったく必要ありません。

int dice=1; //Number of dice being rolled
BOOL gotOddDice = NO; //Exits the infinite loop when you get an odd dice
while(gotOddDice==YES) //Creates an infinite loop, which will escape when there's an odd dice
{
    for (int i=0;i<dice;i++)
    {
        int rolledNum = rollDice(); //Function of getting a random number from 1 - 6
        if (rolledNum%2==1) //If the rolled dice is odd
            gotOddDice = YES;
    }
    dice++; //Add another dice
}
于 2012-11-28T10:39:26.017 に答える