蛇游戏 - 碰撞与图像一起工作

时间:2012-06-16 04:54:39

标签: c#

当我使用矩形作为食物时,这是有效的,但现在我正在尝试使用我自己的图像作为食物,但无法让它正常工作。在使用IntersectsWith时,我不断收到“无法将图像转换为矩形”的错误,因此我卡在那里,不知道该怎么做。

我的错误在于代码的这一部分:if (snake.SnakeRec[i].IntersectsWith(food.foodRec))

for (int i = 0; i < snake.SnakeRec.Length; i++)
        {
            if (snake.SnakeRec[i].IntersectsWith(food.foodRec))
            {
                score += 10;
                snake.growSnake();
                food.foodLocation(randFood);
            }
        } 
        collision();

        this.Invalidate();

在Food.cs类

public void drawFood(Graphics paper)
    {
        Image foodRec = Image.FromFile(@"C:\food.bmp"); 
        Rectangle rectangleAreaToDrawImage = new Rectangle(x, y, width, height);

        paper.DrawImage(foodRec, rectangleAreaToDrawImage);
    }

如果您需要更多代码,请与我们联系。

编辑:已解决

我不得不改变:

if (snake.SnakeRec[i].IntersectsWith(food.foodRec))

Rectangle rectangleAreaToDrawImage = new Rectangle(x, y, width, height);

为:

if (snake.SnakeRec[i].IntersectsWith(food.rectangleAreaToDrawImage))

rectangleAreaToDrawImage = new Rectangle(x, y, width, height);

2 个答案:

答案 0 :(得分:1)

不是将图像发送到IntersectsWith,而是需要发送图像矩形,如下所示:

// Instead of this:
if (snake.SnakeRec[i].IntersectsWith(food.foodRec))
// Put this:
if (snake.SnakeRec[i].IntersectsWith(food.rectangleAreaToDrawImage))

我假设rectangleAreaToDrawImage是公开的,因为您使用的是同一类中的foodRec

希望这有帮助!

答案 1 :(得分:0)

您现在编码,因为它现在将foodRec定义为图像而不是矩形。尝试将foodRec定义为具有图像尺寸的矩形。