Я работаю над игрой, и я сделал все строительные блоки. теперь я работаю над логикой игры и рендерингом. У меня есть абстрактный класс монстров и вызов класса 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);
}
}
Я не получаю никаких ошибок, и пробеги приложения, но я могу вынести монстр.
Это конструктор монстр класса и метод Draw Я использую, чтобы нарисовать монстра:
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);
}
и это класс GreenMonster конструктор:
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
Да, я добавлю его прямо сейчас! – samy
Итак, каковы свойства Position и Size? Возможно, поможет ваш код в качестве [MCVE] (http://stackoverflow.com/help/mcve). – nvoigt