gpt4 book ai didi

iphone - - (void)drawRect :(CGRect)rect , 绘制迷宫并检测其边界

转载 作者:行者123 更新时间:2023-11-29 04:14:37 25 4
gpt4 key购买 nike

我正在尝试实现一个迷宫游戏,它将通过在 drawRect 上开发的代码绘制自己的关卡,我只需要知道如何检测将要绘制的图像内容的边界由代码绘制,

我正在使用一个 UIButton ,它是使用以下代码拖动的:

- (void)viewDidLoad
{
[super viewDidLoad];
map = [[mapView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
[self.view addSubview:map];

self.view.backgroundColor = [UIColor blackColor];
meButton = [UIButton buttonWithType:UIButtonTypeCustom];
[meButton setTitle:@"Drag me!" forState:UIControlStateNormal];
meButton.backgroundColor = [UIColor yellowColor];
[meButton addTarget:self action:@selector(wasDragged:withEvent:) forControlEvents:UIControlEventTouchDragInside];

meButton.frame = CGRectMake(100,100,50, 50);

[self.view addSubview:meButton];
}



- (void)wasDragged:(UIButton *)button withEvent:(UIEvent *)event
{
UITouch *touch = [[event touchesForView:button] anyObject];

CGPoint previousLocation = [touch previousLocationInView:button];
CGPoint location = [touch locationInView:button];
CGFloat delta_x = location.x - previousLocation.x;
CGFloat delta_y = location.y - previousLocation.y;

// move button
button.center = CGPointMake(button.center.x + delta_x,
button.center.y + delta_y);
if(CGRectIntersectsRect(button.frame, map.frame)) {

NSLog(@"CGRectIntersectsRect");

}
}

这段代码用于绘制 map (仍然没有正确实现)

- (void)drawRect:(CGRect)rect;
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0.0, 1.0); // yellow line

CGContextBeginPath(context);

CGContextMoveToPoint(context, 50.0, 50.0); //start point
CGContextAddLineToPoint(context, 250.0, 100.0);
CGContextAddLineToPoint(context, 250.0, 350.0);
CGContextAddLineToPoint(context, 50.0, 350.0); // end path

CGContextClosePath(context); // close path

CGContextSetLineWidth(context, 8.0); // this is set from now on until you explicitly change it

CGContextStrokePath(context); // do actual stroking

CGContextSetRGBFillColor(context, 0.0, 1.0, 0.0, 0.5); // green color, half transparent
CGContextFillRect(context, CGRectMake(20.0, 250.0, 128.0, 128.0)); // a square at the bottom left-hand corner
}

最佳答案

因此,您有两种方法可以真正实现这一目标。第一个,在我看来更难的选择是测试您当前在迷宫中的像素,看看颜色是否对应于墙壁。此方法可能会出现一些微妙的问题,这意味着它不是最佳的。

更好的方法是将屏幕划分为图 block 网格(例如,大小为 10x10 像素),并使用它来保存迷宫 map (例如,使用二维 bool 数组)。这样你就可以简单地查找当前所在的图 block 并查看允许的移动方向。这是处理迷宫的相当标准的方法。

关于iphone - - (void)drawRect :(CGRect)rect , 绘制迷宫并检测其边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899813/

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