.NET飞机模拟器

时间:2009-12-03 12:40:20

标签: oop c#-2.0

用例名称:启动飞机模拟

范围:飞机飞行模拟器

级别:用户目标

主要演员:用户

  1. 用户启动飞机模拟器
  2. 询问用户最大高度(天花板)
  3. 询问用户最低身高(楼层)
  4. 飞机模拟器从空降位置开始,没有起飞或着陆
  5. 飞机上升到最大高度
  6. 飞机下降到最小高度
  7. 重复步骤5和6,直到用户结束模拟
  8. 这是我的问题。在.NET中,哪个Timer最适合飞机类,它应该是Windows窗体计时器,基于服务器的计时器还是线程计时器?我试图让飞机以由计时器间隔确定的速率上升/下降。希望这是有道理的。

    我需要对此进行一些澄清,请帮忙!这是我的班级

    使用System; 使用System.Timers;

    命名空间ConsoleApplication1

    {

     class Airplane
    {
        public Airplane()
        {
            _currentAltitude = 0;
            Timer _timer = new Timer();            
            _timer.Start();
            Console.WriteLine("airplane started");
            Console.ReadKey();
        }
    
        public const int MAXALLOWABLEHEIGHT = 30000;
        public const int MINALLOWABLEHEIGHT = 15000;
    
        private int _currentAltitude;        
    
        public int CurrentAltitude
        {
            get
            {
                return _currentAltitude;
            }
            set
            {
                _currentAltitude = value;
            }
        }
    
    
        private bool airplaneIsDead = false;
    
        // Define the delegate types
        public delegate void GoneTooHigh(string msg);
        public delegate void GoneTooLow(string msg);
    
        // Define member variables of the above delegate types
        private GoneTooHigh MaxHeightViolationList;
        private GoneTooLow MinHeightVioloationList;
    
    
    
        // Add members to the invocation lists using helper methods
        public void OnGoneTooHigh(GoneTooHigh clientMethod)
        {
            MaxHeightViolationList = clientMethod;            
        }
    
        public void OnGoneTooLow(GoneTooLow clientMethod)
        {
            MinHeightVioloationList = clientMethod;
        }
    
    
        void _timer_Elapsed(object sender, ElapsedEventArgs e)
        {                        
            if (_currentAltitude < MAXALLOWABLEHEIGHT)
            {               
                _currentAltitude++;                  
            }
            else
            {
                _currentAltitude--;                
            }            
        }
    
    
    }
    

    }

2 个答案:

答案 0 :(得分:0)

您应该使用System.Timers.Timer,原因如下:

http://msdn.microsoft.com/en-us/magazine/cc164015.aspx

基本上,你受Winforms Timer控件的其他Winforms代码的支配,它不会给你一定的相等间隔。

答案 1 :(得分:0)

由于这是一个控制台应用程序,因此Windows窗格计时器无法正常工作。

我会选择线程计时器。

请注意,控制台应用程序中的多线程计时可能有点......愚蠢。你的主线程将只是坐在一个无限循环中,几乎没有任何东西,直到另一个线程完成。