Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Windows.Forms;
- using System.Threading;
- using System.Drawing;
- namespace cs_KURSACH_stage1
- {
- class Car //класс машины
- {
- public int speed; //скорость машины
- public int capacity; //емкость бензобака
- public string name; //имя машины
- Point position; //текущая позиция машины
- public int X //свойство координаты X центра машины
- { get
- {
- return position.X - 10;
- }
- }
- public int Y //свойство координаты Y центра машины
- {get
- {return position.Y - 10;}
- }
- bool onstation, //признак нахождения на завправке
- onrefuel, //признак заправки бензином
- onroadtostation, //признак движения к заправке
- oncircleroad, //признак движения по кругу
- life; //жизнь потока
- int indikator, //индикатор наполнения бензобака
- max_indikator; //максимальное значение индикатора
- Rectangle rpetrolstation;//место заправки
- Thread t; //поток
- public Car(string Name, Rectangle rPetrolstation)
- {
- name = Name;
- rpetrolstation = rPetrolstation;
- speed = 2;
- position.X = rpetrostation.Right;
- position.Y = rpetrolstation.Top + rpetrolstation.Height / 2;
- capacity = 5;
- onstation = true;
- indikator = 0;
- max_indikator = 20;
- life = true;
- t = new Thread(new ThreadStart(Change_position));
- t.Start();
- }
- void Change_position() //движение
- {
- while (life)
- {
- if (onstation) OnStation();
- if (onrefuel) OnRefuel();
- if (onroadtostation) OnRoadtoStation();
- if (oncircleroad) OnCircleroad();
- Thread.Sleep(100);}
- }
- void OnRoadtoStation() //движение к месту заправки
- {
- if (rpetrolstation.Contains(position.X, position.Y))
- {
- speed = -speed;
- onroadtostation = false;
- onstation = true;
- Console.WriteLine("onrefuel");
- }
- Changepos();
- }
- void OnStation() //действия на заправке
- {
- if (indikator != 0)
- {
- indikator--;
- }
- else
- {
- onstation = false;
- onrefuel = true;
- Console.WriteLine("onrefuel");
- }
- Console.WriteLine("X=" + position.X +
- " indikator=" + indikator);
- }
- void OnRefuel() //заправка машины
- {
- indikator++;
- if (indikator == max_indikator)
- {
- onrefuel = false;
- oncircleroad = true;
- Console.WriteLine("oncircleroad");
- }
- Console.WriteLine("X=" + position.X +
- " indikator=" + indikator);
- }
- void OnCircleroad() //движение по кругу
- {
- if (position.X < rpetrolstation.Right && position.X > rpetrolstation.Left
- && position.Y > rpetrolstation.Top && position.Y < rpetrolstation.Bottom)
- {
- speed = -speed;
- oncircleroad = false;
- onroadtostation = true;
- Console.WriteLine("onroadtostation");
- }
- Changepos();
- }
- void Changepos() //перемещение
- {
- position.X += speed;
- Console.WriteLine("X=" + position.X +
- " indikator=" + indikator);
- }
- public void Del()
- {
- life = false; }
- }
- class Mainwindow : Form //класс главного окна
- {
- Thread t; //поток
- Rectangle rpetrolstation; //место базы
- bool life; //жизнь потока
- Car l; //машина
- /*Прописывается поток действий и рисование авто и заправки,пришлось убрать,из-за лимита символов.*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement