Advertisement
Guest User

Untitled

a guest
May 24th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.34 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Windows.Forms;
  10.  
  11. namespace gofaster
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.  
  16.         System.Windows.Forms.Timer timerS1 = new System.Windows.Forms.Timer(); // инициализируем таймер
  17.         Graphics g;
  18.         Pen mypen; // карандаш1
  19.         Pen mypen2; // карандаш2
  20.         bool playing = false; // флаг, определяющий, "играем" ли мы в данный момент
  21.  
  22.         Point enemy = new Point(0, 0);  // инициализируем координаты "догоняющего"
  23.         Point target = new Point(0, 0); // инициализируем координаты "догоняемого"
  24.         Point direct = new Point(0, 0); // инициализируем направление.
  25.         public Form1()
  26.         {
  27.             InitializeComponent();
  28.             mypen = new Pen(Color.Black, 2); // задаем карандашу1 черный цвет
  29.             mypen2 = new Pen(Color.Red, 2); // карандашу 2, красный.
  30.             timerS1.Interval = 10; // интервал таймера 10 мсек.
  31.             timerS1.Tick += new EventHandler(Timer1);
  32.             timerS1.Start(); // запускаем таймер..
  33.            
  34.         }
  35.  
  36.  
  37.         void Timer1(object sender, EventArgs e) // функция срабатывания таймера.
  38.         {
  39.      
  40.             if (!playing)   // если "не играем", выходим из функции.
  41.                 return;
  42.             timerS1.Stop(); // останавливаем таймер.
  43.             arenaZone.Refresh(); // обновляем поле.
  44.  
  45.             enemy.X = enemy.X + direct.X / 20; // высчитываем  новое положение "догоняемого" по Х
  46.             enemy.Y = enemy.Y + direct.Y / 20;// высчитываем  новое положение "догоняемого" по У
  47.  
  48.             g.DrawEllipse(mypen, target.X, target.Y, 20, 20); // рисуем эллипсис - догоняемого
  49.             g.DrawEllipse(mypen2, enemy.X, enemy.Y, 20, 20); // рисуем эллипсис - догоняющего
  50.  
  51.  
  52.             int dist = (int)Math.Sqrt((target.X - enemy.X) * (target.X - enemy.X) + (target.Y - enemy.Y) * (target.Y - enemy.Y)); // расчитываем дистанцию.
  53.             if (dist < 20)// если дистанция меньше 20 пикселей, значит, нас догнали.
  54.             {
  55.                 MessageBox.Show("Вас догнали!");
  56.                 playing = false; // останавливаем игру.
  57.             }
  58.             else
  59.             {
  60.                 timerS1.Start(); // иначе, включаем таймер.
  61.             }
  62.         }
  63.  
  64.  
  65.         private void arenaZone_MouseMove(object sender, MouseEventArgs e) // функция, вызывается каждый раз, когда мы водим мышкой по полю.
  66.         {
  67.             if (!playing)   // если "не играем", выходим из функции.
  68.                 return;
  69.  
  70.             arenaZone.Refresh();  // обновляем поле.
  71.             target = new Point(e.Location.X - 10, e.Location.Y - 10); // позиция "догоняемого" - позиция мышки -10px
  72.             direct.X = target.X - enemy.X;  // высчитываем направление по Х
  73.             direct.Y = target.Y - enemy.Y;  // высчитываем направление по У
  74.  
  75.             g.DrawEllipse(mypen, target.X, target.Y, 20, 20); // рисуем эллипсисы
  76.             g.DrawEllipse(mypen2, enemy.X, enemy.Y, 20, 20);
  77.  
  78.         }
  79.  
  80.         private void arenaZone_MouseUp(object sender, MouseEventArgs e) // функция, вызывается каждый раз, когда мы отпускаем мышку на поле
  81.         {
  82.           g = Graphics.FromHwnd(arenaZone.Handle); // задаем графическое поле.
  83.           playing = true; // запускаем "игру"
  84.           timerS1.Start(); // запускаем таймер
  85.           arenaZone.Refresh(); // очищаем поле
  86.         }
  87.  
  88.  
  89.  
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement