gpt4 book ai didi

objective-c - NSMutableArray 不使用 addObjectsFromArray 添加任何内容

转载 作者:搜寻专家 更新时间:2023-10-30 19:49:56 25 4
gpt4 key购买 nike

我正在测试纸牌游戏的 AI,当我注意到 NSMutableArray 对象的 count 方法在使用其 addObjectsFromArray< 后从未增加时遇到了问题/em> 方法。我不仅在测试中使用了 addObjectsFromArray,而且在 AI 添加 NSArray(或 NSMutableArray)的方法中,并且在两者中情况下,没有添加任何内容。在测试中,我创建了一副完整的 52 张牌,洗牌,然后将牌分发给 3 个 AI 和一个额外的 NSMutableArray。然后我看看 AI 已经有哪些牌,然后看看每个 AI 在轮到它时会打出什么牌,然后在继续下一个 AI 之前将它打出的牌放回手中。

代码如下:

for(int k = 1; k < 14; k++)
{
NSLog(@"-|-|-|-|-|- Current Value: %i", k);
NSLog(@"----- Easy");
[discard addObjectsFromArray:(NSArray*)[easy playHand:(NSUInteger)k]];
NSLog(@"Discard's Count: %i", [discard count]);
for(Card* cd in discard)
{
NSLog(@"card displayed = true");
[cd displayCard];
NSLog(@"card displayed = true");
}
//[discard makeObjectsPerformSelector:@selector(displayCard)];
[easy addCards:discard];
[discard removeAllObjects];

NSLog(@"------ Medium");
blah = (NSArray*) [Medium playHand:k];
[discard addObjectsFromArray:blah];
NSLog(@"Discard's Count: %i", [discard count]);
//[discard addObjectsFromArray:[Medium playHand:(NSUInteger)k]];
for(Card* cd in discard)
{
[cd displayCard];
}
//[discard makeObjectsPerformSelector:@selector(displayCard)];
[Medium addCards:discard];
[discard removeAllObjects];

NSLog(@"------ Hard");
[discard addObjectsFromArray:[HARD playHand:(NSUInteger)k]];
for(Card* cd in discard)
{
[cd displayCard];
}
//[discard makeObjectsPerformSelector:@selector(displayCard)];
[HARD addCards:discard];
[discard removeAllObjects];
NSLog(@" ");
NSLog(@" ");
}

从这里开始,discard 应该是抓取 playHand 打出的牌,它返回一个 NSMutableArrayaddObjectsFromArray 接受一个 NSArray(所有指针,当然)。我不应该使用下面的行直接传递它们吗?

[discard addObjectsFromArray:[easy playHand:k]];

使用单独的指针,快速解决方法也不起作用:

NSArray* blah = nil;
blah = [easy playHand];
[discard addObjectsFromArray:blah];

...或使用指针进行类型转换(我对此进行了测试,但没有用):

NSArray* blahblah = nil;
blahblah = (NSArray*)[easy playHand:k];
[discard addObjectsFromArray:blahblah];

我做错了什么?这不是自动类型转换,还是我需要使用其他形式的类型转换?或者还有其他我忽略的东西吗?我将尝试让它返回一个 NSArray,但 AI 类中的容器是一个 NSMutableArray,因此我可以轻松地向其中添加卡片,而无需每次都创建数组副本添加/删除卡片对象的时间。 (PS:是的,一切都是事先正确创建的,我只是剪掉了那部分,因为它使代码片段很长。额外的 NSMutableArray 包含剩余的 13 张卡片 count 使用 addObject 返回 13,但丢弃的计数永远不会从 0 改变。)

最佳答案

通常的问题是discardnil。我没有看到它被初始化,所以我猜这里也是这种情况。

关于objective-c - NSMutableArray 不使用 addObjectsFromArray 添加任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6462885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com