Передача параметра в конструктор - C#

Узнай цену своей работы

Формулировка задачи:

Дамы и господа, нужна помощь! Есть следующий класс с конструктором Tank(int sizeField)
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
 
namespace Tanks
{
   public class Tank : IRun, ITurn, ITransparent
    {
        //движение танка (координаты)
        int x, y, direct_x, direct_y; //координаты танка, напоавление танка
        int sizeField;
 
        public int Direct_Y
        {
            get { return direct_y; }
            set
            {
                if (value == -1 || value == 0 || value == 1)
                    direct_y = value;
            } 
                
        }
 
        public int Direct_X
        {
            get { return direct_x; }
            set
            {
                if (value == -1 || value == 0 || value == 1)
                    direct_x = value;
            } 
                
        }
 
        public int X
        {
            get { return x; }
            set { x = value; }
        }

       public int Y
       {
           get { return y; }
           set { y = value; }
       }
 
       Random r;

       //Изображение танка
        TankImg tankImg = new TankImg();
        Image image;
 
        public Image Image
        {
            get { return image; }
            set { image = value; }
        }
 
        public Tank(int sizeField)
        {
            this.sizeField = sizeField;
            
            image = tankImg.Img;
            Direct_X = 0;
            Direct_Y = 1;
 
            X = 80;
            Y = 80;
        }
                    
        //метод движение танка
        public void Run()
        {
            x += Direct_X;
            y += Direct_Y;
 
            if (Math.IEEERemainder(x, 40) == 0 && Math.IEEERemainder(y, 40) == 0)
                Turn();
            
            Transparent();
        }

        public void Turn()
        {
            r = new Random();
                        
            {
                if (r.Next(5000) < 2500)//двигаемся по горизонтали
                {
                    if (Direct_X != 0)
                        Direct_X = Direct_X;
                    else
                    {
                        Direct_Y = 0;
                        while (Direct_X == 0)
                            Direct_X = r.Next(-1, 2);
                    }
                }
                else//двигаемся по вертикали
                {
                    if (Direct_Y != 0)
                        Direct_Y = Direct_Y;
                    else
                    {
                        Direct_X = 0;
                        while (Direct_Y == 0)
                            Direct_Y = r.Next(-1, 2);
                    }
                }
            }
  
        }
 
       //метод прозрачности стен 
       public void Transparent()
        {
            if (x == -1)
                x = sizeField - 21;
            if (x == sizeField - 19)
                x = 1;
 
            if (y == -1)
                y = sizeField - 21;
            if (y == sizeField - 19)
                y = 1;
        }

    }
}
в классе Model создаю объект tank и использую параметр sizeField (поле класса Model), но выдает ошибку: Error 1 A field initializer cannot reference the non-static field, method, or property 'Tanks.Model.sizeField' E:\C#\MyProject\Tanks\Tanks\Tanks\Model.cs 28 37 Tanks
namespace Tanks
{
  public class Model
  {
        int sizeField; 
        int  amountTanks; 
        int amountApples; 
        public int speedGame;

        public GameStatus gameStatus;//статус игры
 
        public Model(int sizeField, int amountTanks, int amountApples, int speedGame)
        {
            this.sizeField = sizeField;
            this.amountTanks = amountTanks;
            this.amountApples = amountApples;
            this.speedGame = speedGame;
            
            gameStatus = GameStatus.stoping;//первоначальный статус игры
        }
 
        public Tank tank = new Tank();
        public Wall wall = new Wall();

        //запуск игры
        public void play()
        {
            while (gameStatus==GameStatus.playing)
            {
                Thread.Sleep(speedGame);
                tank.Run();
            }
        }

    }
}
Хотелось бы именно поле sizeField использовать как аргумент в конструкторе. Жду совета, плиззз)))

Решение задачи: «Передача параметра в конструктор»

textual
Листинг программы
        public Tank tank = new Tank(this.sizeField);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5