Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Windows.Forms;
- namespace gofaster
- {
- public partial class Form1 : Form
- {
- System.Windows.Forms.Timer timerS1 = new System.Windows.Forms.Timer(); // инициализируем таймер
- Graphics g;
- Pen mypen; // карандаш1
- Pen mypen2; // карандаш2
- bool playing = false; // флаг, определяющий, "играем" ли мы в данный момент
- Point enemy = new Point(0, 0); // инициализируем координаты "догоняющего"
- Point target = new Point(0, 0); // инициализируем координаты "догоняемого"
- Point direct = new Point(0, 0); // инициализируем направление.
- public Form1()
- {
- InitializeComponent();
- mypen = new Pen(Color.Black, 2); // задаем карандашу1 черный цвет
- mypen2 = new Pen(Color.Red, 2); // карандашу 2, красный.
- timerS1.Interval = 10; // интервал таймера 10 мсек.
- timerS1.Tick += new EventHandler(Timer1);
- timerS1.Start(); // запускаем таймер..
- }
- void Timer1(object sender, EventArgs e) // функция срабатывания таймера.
- {
- if (!playing) // если "не играем", выходим из функции.
- return;
- timerS1.Stop(); // останавливаем таймер.
- arenaZone.Refresh(); // обновляем поле.
- enemy.X = enemy.X + direct.X / 20; // высчитываем новое положение "догоняемого" по Х
- enemy.Y = enemy.Y + direct.Y / 20;// высчитываем новое положение "догоняемого" по У
- g.DrawEllipse(mypen, target.X, target.Y, 20, 20); // рисуем эллипсис - догоняемого
- g.DrawEllipse(mypen2, enemy.X, enemy.Y, 20, 20); // рисуем эллипсис - догоняющего
- int dist = (int)Math.Sqrt((target.X - enemy.X) * (target.X - enemy.X) + (target.Y - enemy.Y) * (target.Y - enemy.Y)); // расчитываем дистанцию.
- if (dist < 20)// если дистанция меньше 20 пикселей, значит, нас догнали.
- {
- MessageBox.Show("Вас догнали!");
- playing = false; // останавливаем игру.
- }
- else
- {
- timerS1.Start(); // иначе, включаем таймер.
- }
- }
- private void arenaZone_MouseMove(object sender, MouseEventArgs e) // функция, вызывается каждый раз, когда мы водим мышкой по полю.
- {
- if (!playing) // если "не играем", выходим из функции.
- return;
- arenaZone.Refresh(); // обновляем поле.
- target = new Point(e.Location.X - 10, e.Location.Y - 10); // позиция "догоняемого" - позиция мышки -10px
- direct.X = target.X - enemy.X; // высчитываем направление по Х
- direct.Y = target.Y - enemy.Y; // высчитываем направление по У
- g.DrawEllipse(mypen, target.X, target.Y, 20, 20); // рисуем эллипсисы
- g.DrawEllipse(mypen2, enemy.X, enemy.Y, 20, 20);
- }
- private void arenaZone_MouseUp(object sender, MouseEventArgs e) // функция, вызывается каждый раз, когда мы отпускаем мышку на поле
- {
- g = Graphics.FromHwnd(arenaZone.Handle); // задаем графическое поле.
- playing = true; // запускаем "игру"
- timerS1.Start(); // запускаем таймер
- arenaZone.Refresh(); // очищаем поле
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement