2015-02-22 4 views
0

Я ищу возможность более эффективно формировать мою программу и более эффективно использовать объектно-ориентированный подход.Эксплуатация ООП более эффективно

public ScrollingBackground(int width, int height, int speed, string title, Bitmap path) 
    { 

     intBreite = width; 
     intHoehe = height; 
     intFeinheitDerBewegungen = speed; 
     stringTitel = title; 
     bitmapBildpfad = path; 


     this.Text = title; 
     this.Size = new Size(this.intBreite, this.intHoehe); 
     this.StartPosition = FormStartPosition.CenterScreen; 
     this.FormBorderStyle = FormBorderStyle.FixedSingle; 
     this.MaximizeBox = false; 


     timerBewegungImage = new Timer(); 
     timerBewegungImage.Tick += new EventHandler(bewegungImage_XRichtung_Tick); 
     timerBewegungImage.Interval = constIntInterval; 
     timerBewegungImage.Start(); 

     //// 
     picBoxImage = new PictureBox(); 
     picBoxImage.Image = global::Flugzeugspiel.Properties.Resources.MyFlugzeug; 
     picBoxImage.BackColor = Color.Transparent; 
     picBoxImage.SetBounds(100, 100, 125, 50); 
     this.Controls.Add(picBoxImage); 
     //// 

     listPicBoxAufeinanderfolgendeImages = new PictureBox[2]; 

     imageInWinFormLadenBeginn(); 

     this.ShowDialog(); 

    } 

Как вы можете видеть конструктор выше, что код обнесен слешами расположен в конструкторе ScrollingBackground.

Для меня важно, чтобы этот конструктор должен содержать код, относящийся только к экрану прокрутки, но не к изображению MyFlugzeug.png. Этот образ (конечно, весь код, заключенный в косые черты) должен быть заменен на мой основной класс Flugzeug.

using System; 
using System.Drawing; 
using System.Windows.Forms; 


    public abstract class Flugzeug : Form 
    { 

     private PictureBox picBoxImage;  
     protected int lebensanzeige = 10; 




     public virtual void nachObenUntenFliegen(string pathOfMovingObject, int xPositionObject, int yPositionObject, int widthOfObject, int heightOfObject) 
     { 

       // The code in the upper constructor enclosed by the slashes should stand here. Here I'd like to ensure the control of the airplane which has to be still programmed. 

     } 


     public int getLebensanzeige() 
     { 

      return lebensanzeige; 

     } 


     public int getTreffer(int schussstaerke) 
     { 

      return lebensanzeige = lebensanzeige - schussstaerke; 

     } 

    } 

Как можно передать код от конструктора в класс Flugzeug?

Я пробовал что-то, но это не сработало.

Я пробовал sth. как это:

public class MyFlugzeugspiel 
     { 


      public static void Main() 
      { 

       MyFlugzeug myPlane = new MyFlugzeug(10); 


       ScrollingBackground hintergrund = new ScrollingBackground(1000, 650, 5, "THE FLIGHTER", global::Flugzeugspiel.Properties.Resources.Himmel, myPlane); 

... 

public abstract class Flugzeug : Form 
     { 

      private PictureBox picBoxImage;  
      protected int lebensanzeige = 10; 



      public virtual void nachObenUntenFliegen(string pathOfMovingObject, int xPositionObject, int yPositionObject, int widthOfObject, int heightOfObject) 
      { 

       picBoxImage = new PictureBox(); 
       picBoxImage.Image = global::Flugzeugspiel.Properties.Resources.MyFlugzeug; 
       picBoxImage.BackColor = Color.Transparent; 
       picBoxImage.SetBounds(100, 100, 125, 50); 
       this.Controls.Add(picBoxImage); 


      } 

... 




public ScrollingBackground(int width, int height, int speed, string title, Bitmap path, Flugzeug plane) 
    { 


     intBreite = width; 
     intHoehe = height; 
     intFeinheitDerBewegungen = speed; 
     stringTitel = title; 
     bitmapBildpfad = path; 
     this.plane = plane; 
     plane.nachObenUntenFliegen("Path", 0, 0, 100, 100); 



     this.Text = title; 
     this.Size = new Size(this.intBreite, this.intHoehe); 
     this.StartPosition = FormStartPosition.CenterScreen; 
     this.FormBorderStyle = FormBorderStyle.FixedSingle; 
     this.MaximizeBox = false; 

... 

Но это не так, это? Ничего не произошло. Самолет не появится на фоне прокрутки.

Кто может помочь мне решить эту проблему?

+0

Вообще говоря, перемещение закрытого бита в FlugZeug должно работать до тех пор, пока вы создадите соответствующий экземпляр этого FlugZeug либо из экземпляра ScrollingBackground, либо, по крайней мере, сделаете экземпляр FlugZeug доступным для экземпляра ScrollingBackground. Очень обобщенный старт, который поможет вам: https://msdn.microsoft.com/en-us/library/x9afc042.aspx –

+0

Звучит неплохо! Большое спасибо за Вашу помощь! –

ответ

1

Вы могли бы сделать Control или Form из вашего ScrollingBackground класса, и извлечь из него (или использовать его в качестве контроля) в вашей Flugzeug форме.

Если вы считаете получением является лучшим вариантом, ваш класс подпись должна выглядеть следующим образом:

public class ScrollingBackground : Form { } 

public class Flugzeug : ScrollingBackground { } 

Если вы любите контроль лучше, вы должны выставить требуемые свойства из ScrollingBackground класса, так что вы можете получить доступ к их в вашем классе Flugzeug.

+0

Я собираюсь проверить это! Благодаря! –

Смежные вопросы