Создание Windows приложений на C#




Создание динамических приложений на C#

На этом уроке, используя уже известный объект pictureBox, создадим простенькую игру "Тараканьи бега". Суть игры состоит в том, чей жучёк прибежит к финишу первым. Для игры нужны две картинки жучков, один будет красный, другой синий. Картинки можно нарисовать в редакторе Paint, или загрузить к себе в папку с проектом представленные здесь картинки:       

Создав новый проект, следует расположить на форме следующие объекты:



В объекты pictureBox1 и pictureBox2 следует загрузить картинки. Для этого в свойстве Image нажать маленькую кнопочку и, далее, нажать кнопку Import на панели ресурсов.
Когда картинки будут загружены, следует панели panel1 присвоить в свойстве BackColor такой же цвет, как и фон картинок жучков.
Двойным щелчком на выделенной форме следует создать событие и прописать в нём начальные установки нашей программы:

private void Form1_Load(object sender, EventArgs e)
  {
    textBox1.Text = "Вася";
    textBox2.Text = "Петя";
    label1.Text = "0";
    label2.Text = "0";
    pictureBox1.Left = 1;
    pictureBox2.Left = 1;
  }

Кнопке button1 в свойстве Text следует присвоить значение "СТАРТ", а button2 значение "Сброс".
Запустим приложение на исполнение; форма должна принять вид, показанный на рисунке:



Далее, создадим в коде программы несколько глобальных переменных:

public partial class Form1 : Form
  {
   int flag1;
   int x1, x2;
   public Form1()
  {
...

Переменная flag1 - предназначена для контроля игровой ситуации, если flag1 равна 0, то жучки стоят на месте, а если flag1 не равна 0, то жучки начинают двигаться. Переменные x1 и x2 предназначены для хранения горизонтальных координат положения жучков на беговой дорожке.
Создадим событие для кнопки "Сброс", это событие очищает все переменные и устанавливает жучков в стартовую позицию.

private void button2_Click(object sender, EventArgs e)
  {
   label1.Text = "0";
   label2.Text = "0";
   x1 = 1; x2 = 1;
   pictureBox1.Left = x1;
   pictureBox2.Left = x2;
   flag1 = 0;
  }

Для кнопки "СТАРТ" тоже создадим событие, оно будет очень простое, нужно присвоить переменной flag1 любое значение не равное 0.

private void button1_Click(object sender, EventArgs e)
  {
    flag1 = 1;
  }

Теперь осталось создать событие, которое будет перемещать наших жучков. Для этого нам понадобится компонент таймер timer1. Установим компонент на форме и произведём некоторые настройки.



Свойство GenerateMember и Enabled должны быть True. Свойство Interval равно 100 - это один тик таймера в секунду. Если жучки будут двигаться медленно, то это значение можно уменьшить, например до 50.
Для определения координаты финиша следует одного из жучков сдвинуть до конца вправо.



Первая цифра в свойстве Location (на рисунке это 422) означает финишную координату (у вас это значение может быть другим, его нужно запомнить для вставки в код программы).
Двойным щелчком по иконке timer1 создадим событие движения жучков:

private void timer1_Tick(object sender, EventArgs e)
  {
   if (flag1 != 0) // Если дан старт :
   {
   Random a = new Random(); // Включаем генератор случайных чисел
// В переменную count записываем случайное число в диапазоне от 0 до 8
   int count = a.Next(8);
// Наращиваем значение координаты x1 на случайное число count
   x1 += count;
// Выводим значение пройденного пути для первого игрока
   label1.Text = Convert.ToString(x1);
// Смещаем первого жучка на случайную величину
   pictureBox1.Left = x1;
// Создаём случайное число для второго игрока и повторяем всё то же самое
   count = a.Next(8);
   x2 += count;
   label2.Text = Convert.ToString(x2);
   pictureBox2.Left = x2;
  }
// Проверяем какой из игроков дошёл до финиша и останавливаем процесс
  if ((x1 >= 422) || (x2 >= 422))
  {
   flag1 = 0;
  }
}

Запустим программу на исполнения и, нажав кнопку "СТАРТ" сыграем несколько партий, что бы убедиться, что игроки приходят к финишу с переменным успехом.



В заключение следует сказать, что исполнимый файл (exe) находится в папке с вашим проектом в папке bin \ debug \ имя_проекта.exe. Этот файл можно копировать на любой носитель и выполнять независимо от среды программирования Visual Studio.



   ©Гуков Константин Михайлович 2006 - 2012     Почта: [email protected]