До колко разбираме програмирате, които използваме всеки ден като Facebook, google, YouTube, bgmaps и тн.? Във всички тези програми има неща, които се случват сякаш автоматично. Например още щом започнем да пишем име на наш приятел във Facebook и ни излиза списък с предложения, кого търсим. Или когато свърши една песен в YouTube, автоматично започва следваща. В този урок ще видим, че всъщност зад всички тези неща стои програмен код и ще се научим как да пишем такъв код в C#.
Цел на урока: Да използваме основни събития в наша програма. Да описваме понятието събитийно програмиране и неговите характеристики.
Увод: Visual C# е език за събитийно програмиране, което означава, че всеки код, който пишем съответства на дадено събитие. (натискане с мишката, двукратно натискане с мишката, преминаване през контролата с мишката и други) От това следват 2 основни неща:
1) кодът се изпълнява само при настъпване на даденото събитие
2) може да имаме различен код за различни събития: например при еднократно натискане с мишката да се случват операции 1, а при двукратно натискане с мишката да се случват операции 2.
Нов материал:
1. Събитие – информира програмата, когато нещо важно се случи.
Например: потребителя натисне някой бутон и програмата трябва да реагира; започваме да пишем текст за търсене в google и автоматично ни се довършва думата; потребител преминава с мишката над някоя картинка и програмата трябва да реагира;
2. Характеристики на събитийно пограмиране
а) програмата е в изчакващо състояние и настъпването на определени събития определя кога и коя част от кода ще се изпълни
б) събитията може да настъпват паралелно – докато се изпълнява едно събитие, да настъпи друго
3. Видове събития
– натискане с мишката: Click
– двойно натискане с мишката: DoubleClick
– натискане на клавиш от клавиатурата: KeyDown
– зареждане на формата – настъпва, когато стартираме програма: Form_Load
Примерна задача: Да се напише програма, която при натискане на етикет един път изписва в текстово поле “Clicked once” при натискане на етикет два пъти – изписва в текстовото поле “Clicked twice”.
private void label1_Click(object sender, EventArgs e) { label1.Text = "Clicked once"; } private void label1_DoubleClick(object sender, EventArgs e) { label1.Text = "Clicked twice"; }
Примерна задача 2: Да се напише програма, която позволява да управляваме картинка (герой) наляво и надясно със стрелките на клавиатурата. И да може да изстрелва друга картинка (стрели).
private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Left) { pictureBox1.Left = pictureBox1.Left - 10; } if (e.KeyCode == Keys.Right) { pictureBox1.Left = pictureBox1.Left + 10; } if (e.KeyCode == Keys.Space) { pictureBox2.Top = pictureBox1.Top; pictureBox2.Left = pictureBox1.Left; timer1.Enabled = true; } }
Задача за домашно:
- Да се напише програма, която позволява да управляваме картинка (кошница) като я мърдаме в 4-те посоки с клавиши по избор.
б) Срещу картинката да лети друга картинка (сандвич) чрез таймер и като падне сандвича в кошницата да трупаме точка.
Задачи за самостоятелна работа:
- Да се направи програма, която в етикет (label) показва кой клавиш сме натиснали.
- Да се направи игра в която управляваме космически кораб наляво и надясно. Срещу нас идват вражески кораби, които трябва да унищожаваме с лазер.
Код за да може вражеските кораби да се показват на случайно произволно място:
Random rnd = new Random(); int position = rnd.Next(1, 300); pictureBox1.Left = position;