0

大家好

我需要编写简单的益智游戏,主要条件是当拼图“释放”时它接近目的地时,它会准确到达它应该在的位置。

所以我试图获取图像每个像素的坐标数组,为此我想将像素颜色与背景颜色进行比较,如果它们不相等,那就是图像像素的坐标。但是..我不知道该怎么做。

我试过了:

- (BOOL)isImagePixel:(UIImage *)image withX:(int)x andY:(int) y {

    CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
    const UInt8* data = CFDataGetBytePtr(pixelData);

    int pixelInfo = ((image.size.width  * y) + x ) * 4; // The image is png

    UInt8 red = data[pixelInfo];         
    UInt8 green = data[(pixelInfo + 1)]; 
    UInt8 blue = data[pixelInfo + 2];    
    UInt8 alpha = data[pixelInfo + 3];   
    CFRelease(pixelData);

    UIColor* color = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.0f]; 

        NSLog(@"color is %@",[UIColor whiteColor]);
    if ([color isEqual:self.view.backgroundColor]){
        NSLog(@"x = %d, y = %d",x,y);
        return YES;
    }
    else return NO;

}

这里有什么问题?
或者也许有人可以建议我另一种解决方案?

谢谢你。

4

1 回答 1

0

这似乎是一个非常麻烦的解决方案。我的建议是,对于每一块,你维护一个表格,说它是拼图中的左上角坐标,当用户抬起手指时,你计算从当前位置到指定位置的绝对距离。

于 2013-05-10T12:46:28.717 回答