Меню сайта
Категории раздела
Мои лекции [2]
C# [2]
as3 [3]
теория и практика
java [1]
первые шаги в java. Теория и практика
Web [2]
CSS, HTML, JS и т.д.
MyProgramms [2]
Образование [1]
лекции разного уровня
Мои ссылки
  • Новый проект Ufo&MIR
  • Дизайн-магазин
  • Поиск
    Статистика


    Воскресенье, 17.12.2017, 15:08ГлавнаяМой профильРегистрацияВыходВход
    Добро пожаловать в мой MIR!
    Вы вошли как Гость | Группа "Гости"Приветствую Вас Гость | RSS
    Главная » Статьи » Программирование » C#

    Создаем игру "Ну погоди!"
       Сначала создаем пустой проект.

        Нарисовали в GIMP фон ( 4 жердочки, трава, небо), а так же на отдельном листе сделали маленькое ядро, которое будет ловить волк.

        Разместили на форме картинку фона.

        Свойства MainForm:

    •     BackgroundImage=Загружаем фон
       
        
    Затем берем 2 компонента PictureBox. В первом поместим нарисованное ядро.

          Свойства:

    • Image = загружаем картинку ядра
    • BackColor=Transparent
    • Location=-100;-100       // убираем из поля видимости
    • AutoSize=false;
    • Size=12;12
    • SizeMode=StretchImage // растягиваем по рамке

      
       Во втором разместим Волка. Компонент должен располагаться между жердочек. Это будет его зона работы.

       Свойства:

    • Image= загружаем волка
    • SizeMode=StretchImage
    • BackColor=Transparent
      
        Теперь нам нужно 5 Labels.
    Первый будет счетчиком.

        Свойства:

    • ForeColor=DarkRed
    • TextAlign=MiddleCenter
    • AutoSize=True.
       
         Остальные Labels нужны для памятки. В них укажем буквы, которые необходимо нажимать для управления Волком. В частности выбраны буквы A,Z,K,M. Для того что бы понять, какая буква к какой жердочке относится, разместим каждую label к соответствующей ей черте (предполагаю логика размещения понятна). Таким образом, у игрока всегда будет подсказка перед глазами.

         Свойства:

    • BackColor= Transparent
    • ForeColor=DarkGrey
    • Text= одна из букв
      

         И последний компонент, который необходим - Timer.

         Свойства:

    • Interval=200 или 250
    • Enabled=true   // запуск
       
        В результате всех манипуляций, получим вот такую картинку
     

            Теперь переходим к Событиям.

          У компонента timer выберем событие Tick. Двойным щелчком откроется окно редактора.
    • после следующих слов public partial class MainForm : Form  {          
        запишем такие строчки:            
                 Random
    rnd = new Random();

                 int speedX;  int speedY;   // глобальные переменные

                 int miKey;    // для определения расположения волка

                 int rand;     // для хранения рандомного числа

          Так же нам потребуется два своих обработчика

    • после слов public MainForm() { InitializeComponent();

        запишем

             uItemInit(); } // указали придуманное нами название,    

                                                    // и инициировали его при запуске      

    •  теперь создадим свой первый обработчик со следующим кодом:

               void uItemInit() {

                   rand = rnd.Next(0,4); // Запускаем генератор

                   speedY = 4;

                   switch (rand) {

                       case 0:   // влево-вверх

                          pictureBox1.Left = 10; // подбираем координаты для жердочки

                          pictureBox1.Top = 60;

                          speedX = 9; break;

                       case 1:   // влево-вниз

                           pictureBox1.Left = 10; pictureBox1.Top = 126;

                           speedX = 9; break;

                       case 2:   // вправо-вверх

                            pictureBox1.Left = 490; pictureBox1.Top = 70;

                            speedX = -9; break;

                       case 3:

                             pictureBox1.Left = 490; pictureBox1.Top = 130;

                             speedX = -9; break;      

                  }

    • второй обработчик для подсчета баллов

             void miCatch() {

                  int sum=Convert.ToInt32(label1.Text)+1; // прибавляем счётчик

                      label1.Text=Convert.ToString(sum); 

                      uItemInit();  }           // прячем пойманное ядро        

    • пришло время обратить внимание на событии Tick у компонента Timer 

           // Перемещение ядра

              pictureBox1.Left = pictureBox1.Left + speedX;

              pictureBox1.Top = pictureBox1.Top + speedY;       

           // Если ядро на центральной полосе, то оно должно падать вниз

              if (pictureBox1.Left > 135 && pictureBox1.Left < 365) {

                 if (rand==(miKey-1)) {miCatch ();}  // проверка нахождения волка и ядра

                 else if (speedX > 0) speedX = 2; }

                        else { speedX = -2; }

                        speedY = 8;    }  

           // Если упало ядро

              if (pictureBox1.Top > 255) {

                  if (Convert.ToInt32(label1.Text)>0)   // работа со счётчиком

                     label1.Text=Convert.ToString(Convert.ToInt32(label1.Text)-1);

                  uItemInit();  }

              Теперь потребуются события формы. А в частности KeyDown.

         
    • откроем окно редактора и запишем следующие строчки:

        switch (e.KeyCode)  {

            case Keys.A:  // влево-вверх

                pictureBox2.Top= 10; pictureBox2.Left= 125;

                miKey=1; break;

            case Keys.Z:  // влево-вниз

                 pictureBox2.Top= 65; pictureBox2.Left= 125;

                 miKey=2; break;

            case Keys.M:   // вправо-вниз

                 pictureBox2.Top= 80; pictureBox2.Left= 215;

                 miKey=4; break;

            case Keys.K:   //вправо-вверх

                 pictureBox2.Top= 20; pictureBox2.Left= 215;

                 miKey=3; break}

    Вот и всё!!! Запускаем и играем.
    Категория: C# | Добавил: halenka (06.09.2013)
    Просмотров: 503 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:

    Copyright MyCorp © 2017