当前位置: 首页 > 知识库问答 >
问题:

如何分发卡片,直到整个卡片堆栈/包基于洗牌/随机数分发,只需点击一个按钮?

房新翰
2023-03-14

我正在创建我的第一个纸牌游戏,需要洗牌。因此,对于初学者来说,我已经为一个包含4个值的示例堆栈创建了一个洗牌按钮,其中一行是:

int i = arc4random() % 4;
NSLog(@"%d", i);

洗牌效果很好,但我希望此按钮允许用户分发随机卡,直到堆栈中没有更多卡为止。每次单击此示例按钮时,我需要NSLoged结果类似于3,然后是1,然后是0,然后是2,然后是“不再有卡”,例如(而不是四个随机数和一条消息的列表)。

有没有一种简单的方法,每次点击一个按钮,就能随机“分配一个数字”?

另外,arc4random是否生成实随机数或伪随机数?我读了很多关于它的文章,但似乎不太清楚。将数字随机化的最佳方法是什么?

共有1个答案

李新霁
2023-03-14

可以使用随机空间中的所有可能元素创建数组,例如:

NSMutableArray *randomNumber = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:1],[NSNumber numberWithInt:2],[NSNumber numberWithInt:3], nil];

然后,随机选取数组中的元素,并在以下操作之后移除它们:

for (int i = 0; i < 4; i++){

int randIndex = arc4random()%[randomNumber count];
NSLog(@" %d %d", randIndex, [[randomNumber objectAtIndex:randIndex] intValue]);
[randomNumber removeObjectAtIndex:randIndex];
}
 类似资料:
  • 我正在制作看板,我有一列在里面,它用一个网格窗格划分在标题和下面的卡片列表之间。我正在使用场景生成器构建此场景。 所以层次结构是 当我按下卡上的按钮时,我希望它移除我单击的卡。 我已经做了以下工作 然而,当我按下按钮时什么也没有发生,卡没有被删除,我也不知道为什么。如果有人能帮我,那就太好了。

  • 我一直在寻找一个解决办法,现在,尽管所有类似的问题和答案,但没有找到任何似乎工作。我想让用户能够通过卡片布局中设置的各种面板进行操作。然而,我希望用来在这些卡片之间切换的按钮在卡片本身,而不是一组单独的按钮,它不会在程序中改变。下面是创建框架的主文件: 编辑:我向MainMenu JPanel的按钮添加了一个自动生成的操作监听器,如下所示: 在主文件(主文件为BattleGraphs_V1)中添加

  • 我想要一个选项卡布局,其中,在每个选项卡上有两个片段,一个在上面显示任务的进度,通过在3个选项卡中提供从开始到结束的输入来完成,和另一个在进度片段下面的主片段将接受输入。 我试了两天所有的方法:( 我的解决方案我尝试了一个包含两个framelayout的布局,用于将主片段添加到ViewPager的两个选项卡中,如下所示: 在活动开始时,我执行此操作,请参见在主片段中用于加载不同标签位置的详细片段的

  • 定义 司机卡片。 图片展示 代码演示 import Driver from 'pile/dist/components/driver' <Driver avatarUrl="" carColor="白" carType="大众速腾" card="京FA7318" cntOrder={174} company="车主之家-车主俱乐部望京店" isMaster={fals

  • 卡片用于展示不同类型的内容是很方便的,它适合用于展示具有相似的对象但是行为差异大的内容,如具有可变长度的标题的照片。 基本卡片 <div class="row"> <div class="col s12 m6"> <div class="card blue-grey darken-1"> <div class="card-content white-text">

  • 我已经创建了ViewPager,其中一个选项卡有二维码阅读器,一个选项卡显示扫描二维码的结果。默认情况下,二维码屏幕的结果将弹出,所以当我在扫描二维码选项卡,我只看到该片段的布局,但扫描仪屏幕不显示。当我使默认选项卡扫描仪,然后只有它显示扫描仪屏幕。下面是我的视图寻呼机代码。 ViewPageRadpater.Class