问题
我正在开发一些扑克软件~纯粹是为了好玩。
现在,当谈到筹码的时候,我正在做一个噩梦。一个定位他们,两个面额和三选择我需要的!,这似乎是不可能与我目前的设计。
基本上,我画了一个skshapenode,给它命名的名称和球员的名字。然而,这个芯片可以用相同的名字绘制50次。
当我给这些芯片动画时,我只能看到一堵不可能的墙。
一旦我做了一个函数来选择正确的芯片面额用于呼叫或提高等,我将如何开始写这个伪代码?
I require 2 large chips, 1 small chip and 2 medium chips {
SKNode *node = [self childnodewithname:denomination, playername];
runaction..
}要明白,我只需要拿芯片栈里的20个芯片中的2个。以及改变芯片的所有权。
这个是可能的吗?还是我把事情搞得太复杂了..?
发布于 2015-06-19 05:31:41
你需要重新设计一下你的解决方案。我会这样做:
首先,子类SKSpriteNode (或SK任何您喜欢的节点)来制作一个芯片:
Chip.h
@interface Chip : SKSpriteNode
@property (nonatomic, retain) NSString *player;
@property int denomination;
@endChip.m
@implementation Chip
- (id)initWithColor:(UIColor *)color size:(CGSize)size
{
if(self = [super initWithColor:color size:size])
{
self.name = @"chip";
}
return self;
}
@end现在,您可以合理地列举和检查一些内容。
在你的游戏场景中加入一堆筹码:
GameScene.m
-(void)didMoveToView:(SKView *)view {
for(int i = 0; i < 50; i++)
{
Chip *chip = [[Chip alloc] initWithColor:[SKColor greenColor]
size:CGSizeMake(100.0, 100.0)];
chip.player = @"some player";
chip.denomination = 10;
[self addChild:chip];
}
}那么当是时候弹出一定数量的芯片时:
-(void)popChipsFromPlayer:(NSString *)playerName
ofDenomination:(int)denomination
numberOfChips:(int)numChips
{
__block int i;
[self enumerateChildNodesWithName:@"chip"
usingBlock:^(SKNode *node, BOOL *stop) {
Chip *chip = (Chip *)node;
if(chip.denomination == denomination &&
[playerName isEqualToString:chip.player])
{
if(i==numChips)
return;
SKAction *moveUp = [SKAction moveByX:0.0
y:200.0
duration:3];
[chip runAction:moveUp];
i++;
}
}];
}调用该方法:
[self popChipsFromPlayer:@"some player"
ofDenomination:10
numberOfChips:3];https://stackoverflow.com/questions/30929547
复制相似问题