我正在嘗試在C#中製作遊戲。 首先看到一些到目前爲止我的代碼:同時將對象投射到抽象類和接口上
我的抽象類gridobject
它包含了我的gridobjects(牆,播放器,敵人,等等)的所有一般屬性
abstract class GridObject
{
public Rectangle Rect;
...
//all kind of getters and setters for location and size: X, Y, Height, Width
...
}
接口移動
此接口包含移動的網格對象的屬性:
interface Moving
{
int Xspeed { get; set; }
int Yspeed { get; set; }
void Move();
}
現在我想重力添加到我的遊戲:
public void doGravity(GridObject obj)
{
//check if intersects && if object isn't the same as the given object.
while (AllGridObjects.FindAll(item => item.Rect.IntersectsWith(obj.Rect) && item != obj).Count > 0)
{
obj.Y += obj.Yspeed;
obj.Yspeed++;
}
}
這ofcourse給出了一個編譯錯誤。因爲Yspeed不是抽象類GridObject中的必需字段。 也許標題不正確,也許也是我的問題,但是如何將對象投射到抽象類和界面以確保屬性Y和屬性Yspeed是必需的? 這樣做的正確方法是什麼?
創建一個'Moving'類型的局部變量?注意:.net約定爲接口使用'I'前綴,它應該是'IMoving'而不是'Moving'。 – 2014-10-27 13:49:18
如果我使用兩個變量,我的代碼是否仍然運行得足夠快?並感謝您的提示! – 2014-10-27 13:54:44
當然,試試吧。確保你沒有在循環中進行投射。讓「IMoving」本地在循環之外。 – 2014-10-27 13:57:58