Advertisement
Serafim_

Рисование настоящей машины

Apr 17th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.83 KB | None | 0 0
  1.  
  2. using System;
  3. using System.Collections;
  4. using System.Windows.Forms;
  5. using System.Threading;
  6. using System.Drawing;
  7.  
  8. namespace cs_KURSACH_stage1
  9. {
  10.     class Car //класс машины
  11.     {
  12.         public int speed;       //скорость машины
  13.         public int capacity;    //емкость бензобака
  14.         public string name;     //имя машины
  15.         Point position;         //текущая позиция машины
  16.         public int X            //свойство координаты X центра машины
  17.         { get
  18.             {
  19.                 return position.X - 10;
  20.             }
  21.         }
  22.         public int Y       //свойство координаты Y центра машины
  23.         {get
  24.             {return position.Y - 10;}
  25.         }
  26.         bool onstation,          //признак нахождения на завправке
  27.             onrefuel,            //признак заправки бензином
  28.             onroadtostation,     //признак движения к заправке
  29.             oncircleroad,        //признак движения по кругу
  30.             life;                //жизнь потока
  31.         int indikator,           //индикатор наполнения бензобака
  32.             max_indikator;       //максимальное значение индикатора
  33.         Rectangle rpetrolstation;//место заправки
  34.         Thread t;                //поток
  35.        
  36.          public Car(string Name, Rectangle rPetrolstation)
  37.         {
  38.             name = Name;
  39.             rpetrolstation = rPetrolstation;
  40.             speed = 2;
  41.             position.X = rpetrostation.Right;
  42.             position.Y = rpetrolstation.Top + rpetrolstation.Height / 2;
  43.             capacity = 5;
  44.             onstation = true;
  45.             indikator = 0;
  46.             max_indikator = 20;
  47.             life = true;
  48.             t = new Thread(new ThreadStart(Change_position));
  49.             t.Start();
  50.         }
  51.            void Change_position() //движение
  52.         {
  53.             while (life)
  54.             {
  55.                 if (onstation) OnStation();
  56.                 if (onrefuel) OnRefuel();
  57.                 if (onroadtostation) OnRoadtoStation();
  58.                 if (oncircleroad) OnCircleroad();
  59.                 Thread.Sleep(100);}
  60.         }
  61.        void OnRoadtoStation() //движение к месту заправки
  62.         {
  63.             if (rpetrolstation.Contains(position.X, position.Y))
  64.             {
  65.                 speed = -speed;
  66.                 onroadtostation = false;
  67.                 onstation = true;
  68.                 Console.WriteLine("onrefuel");
  69.             }
  70.             Changepos();
  71.         }
  72.          void OnStation() //действия на заправке
  73.         {
  74.             if (indikator != 0)
  75.             {
  76.                 indikator--;
  77.             }
  78.             else
  79.             {
  80.                 onstation = false;
  81.                 onrefuel = true;
  82.                 Console.WriteLine("onrefuel");
  83.             }
  84.             Console.WriteLine("X=" + position.X +
  85.                 " indikator=" + indikator);
  86.         }
  87.          void OnRefuel() //заправка машины
  88.         {
  89.             indikator++;
  90.             if (indikator == max_indikator)
  91.             {
  92.                 onrefuel = false;
  93.                 oncircleroad = true;
  94.                 Console.WriteLine("oncircleroad");
  95.             }
  96.             Console.WriteLine("X=" + position.X +
  97.             " indikator=" + indikator);
  98.         }
  99.           void OnCircleroad() //движение по кругу
  100.         {
  101.             if (position.X < rpetrolstation.Right && position.X > rpetrolstation.Left
  102.                 && position.Y > rpetrolstation.Top && position.Y < rpetrolstation.Bottom)
  103.             {
  104.                 speed = -speed;
  105.                 oncircleroad = false;
  106.                 onroadtostation = true;
  107.                 Console.WriteLine("onroadtostation");
  108.             }
  109.             Changepos();
  110.         }
  111.            void Changepos() //перемещение
  112.         {
  113.             position.X += speed;
  114.             Console.WriteLine("X=" + position.X +
  115.                 " indikator=" + indikator);
  116.         }
  117.  
  118.           public void Del()
  119.         {
  120.             life = false; }
  121.     }
  122.          class Mainwindow : Form      //класс главного окна
  123.     {
  124.         Thread t;                 //поток
  125.         Rectangle rpetrolstation; //место базы
  126.         bool life;                //жизнь потока
  127.         Car l;                    //машина
  128.            
  129. /*Прописывается поток действий и рисование авто и заправки,пришлось убрать,из-за лимита символов.*/
  130.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement