我正在製作一款遊戲,並且我製作了所有的積木。現在我正在研究遊戲邏輯和渲染。 我有抽象的怪物類和類繼承自它的類調用GreenMonster。發起課程時的怪異行爲
現在奇怪的是,當我嘗試初始化一個GreenMonster對象。
當我這樣做:
private void initGreenMonsters()
{
for (int i = 0; i < greenMonsters.Length; i++)
{
greenMonsters[i] = new GreenMonster(new Point(0,40),new Size(40, 40));
}
}
每一件事就像我的計劃,我可以使窗體上的圖像。
,但是當我嘗試初始化這樣的:
private void initGreenMonsters()
{
for (int i = 0; i < greenMonsters.Length; i++)
{
greenMonsters[i] = new GreenMonster();
greenMonsters[i].Position = new Point(0, 40);
greenMonsters[i].Size = new Size(40, 40);
}
}
我沒有得到任何錯誤,並且應用程序運行,但我可以使怪物。
這是怪獸類的構造函數,我用它來畫一個怪物的繪製方法:
public Monster(Point _startPosition,Size _size)
{
this.size = _size;
this.position = _startPosition;
}
public virtual void Draw(Graphics g)
{
Rectangle monsterRec = new Rectangle(position, size);
g.DrawImage(img, monsterRec);
}
,這是綠色怪物類的構造函數:
public GreenMonster(Point _startPosition, Size _size)
: base(_startPosition, _size)
{
this.img = new Bitmap(SpaceInvadersGame.Properties.Resources.NormalMonster);
this.hp = 1;
this.speed = 1;
}
public GreenMonster()
{
this.img = new Bitmap(SpaceInvadersGame.Properties.Resources.NormalMonster);
this.hp = 1;
this.speed = 1;
}
困擾我的唯一的事情就是,當我看着兩種方式我初始化的對象,它看起來是一樣的.. 我只是無法找到兩種方式之間的任何不同。 有人有什麼想法如何與衆不同?
如果你需要更多的代碼,所以問題更加清晰,我會很樂意補充!
這是怪物類及其屬性 公共抽象類怪物 保護點位置; public point position {get {return position; } set {position = value; }}
protected Size size;
public Size Size { get { return size; } set { value = size; } }
public int speed;
protected Bitmap img;
protected int hp;
public int HP { get { return hp; } }
public void SetStartingPosition(int x, int y)
{
this.position = new Point(x, y);
}
public virtual void Draw(Graphics g)
{
Rectangle monsterRec = new Rectangle(position, size);
g.DrawImage(img, monsterRec);
}
}
GreenMonster必須有第二個構造函數,否則您的代碼將無法編譯。你可以發佈嗎? – nvoigt 2014-09-01 16:51:23
是的,我現在將它添加! – samy 2014-09-01 16:53:05
那麼位置和大小屬性是什麼?也許將你的代碼發佈爲[MCVE](http://stackoverflow.com/help/mcve)會有所幫助。 – nvoigt 2014-09-01 16:55:45