gpt4 book ai didi

objective-c - 为 iPhone 检测方 block 和方 block 游戏

转载 作者:行者123 更新时间:2023-12-02 04:56:58 24 4
gpt4 key购买 nike

我正在尝试使用 sprite 工具包为 iPhone 制作一个点和盒子的小游戏。我写了代码来创建点并用线连接它们,但我没有想法当四个点连接时如何检测框?这是我现在的代码:

    -(id)initWithSize:(CGSize)size {    
if (self = [super initWithSize:size]) {
/* Setup your scene here */

self.backgroundColor = [SKColor whiteColor];
[self gameScene];
}
return self;
}

-(void)gameScene {

int dotNameCount = 1;

for (int i = 0; i < dotsInARow * dotsInACol; i++) {

dot = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(20, 20)];
dot.position = CGPointMake(40+i%dotsInARow*60, 120+i/dotsInACol*60);
dot.name = [NSString stringWithFormat:@"dot%i", dotNameCount];
dotNameCount ++;
dot.zPosition = 2;
[self addChild:dot];
}
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* touch = [touches anyObject];
CGPoint positionInScene = [touch locationInNode:self];

if ([[self nodeAtPoint:positionInScene].name length] == 0) { } else {

pathToDraw = CGPathCreateMutable();
CGPathMoveToPoint(pathToDraw, NULL, [self nodeAtPoint:positionInScene].position.x, [self nodeAtPoint:positionInScene].position.y);
selectedNode = (SKSpriteNode *)[self nodeAtPoint:positionInScene];
selectedNode.color = [SKColor blueColor];
}
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{

UITouch* touch = [touches anyObject];
CGPoint positionInScene = [touch locationInNode:self];

if ([[self nodeAtPoint:positionInScene].name length] == 0) { } else {

CGPathAddLineToPoint(pathToDraw, NULL,[self nodeAtPoint:positionInScene].position.x, [self nodeAtPoint:positionInScene].position.y);

selectedNode = (SKSpriteNode *)[self nodeAtPoint:positionInScene];
selectedNode.color = [SKColor blueColor];

pathNode = [[SKShapeNode alloc] init];
pathNode.path = pathToDraw;
pathNode.strokeColor = [SKColor redColor];
pathNode.fillColor = [SKColor greenColor];
pathNode.zPosition = 1;
[self addChild:pathNode];
}
}

最佳答案

概念解决方案 1

创建一个“BOX”类,它是 SKSpriteNode 的子类。 BOX 类有 4 个点或 4 条线。我认为如果您只有 4 个点(用户已单击)就足够了。现在请记住,用户可能会单击 4 个不同的位置,创建 4 个不能连接到盒子中的点,而不是其他一些复杂的物体。这就是我建议创建一个单独的类的原因。在这个 BOX 类中,您现在可以检查四个点是否“可连接”,如果是,画线并自动确保您真正拥有一个 BOX。您可以用 4 个点初始化 BOX 对象。在里面:

initWith ... firstDot:(CGPoint)dot1 ...

然后您可以检查坐标 x 和 y。如果他们组成一个 BOX 返回自己并绘制,如果不是则不允许创建和绘制。

概念解决方案编号 2

您可以使用您的代码,只需添加一个计数器来计算绘制的线条。一个盒子由 4 行组成。在你的

-(void)update:(NSTimeInterval)currentTime

你检查你是否 counter % 4 == 0 (因为有)。这是最简单的原理,无需检查框是否绘制正确。我建议您编写一个 BOX 检查算法来确定,因为您很可能随时需要一个。

我希望这能让你至少更进一步:)

关于objective-c - 为 iPhone 检测方 block 和方 block 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20732015/

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