我正在制作一款游戏,并且我制作了所有的积木。现在我正在研究游戏逻辑和渲染。 我有抽象的怪物类和类继承自它的类调用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