当我使用矩形作为食物时,这是有效的,但现在我正在尝试使用我自己的图像作为食物,但无法让它正常工作。在使用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);
答案 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定义为具有图像尺寸的矩形。