Допълнителни проекти - Teacher.bg Guide Additional...Microsoft Visual Basic .NET...

23
1 Допълнителни проекти Някои ученици могат да завършат курса по-рано. Този документ съдържа 5 допълнителни проекта, които могат да се напишат като се използват научените по време на курса техники. За всеки проект съществуват варианти за ученика и учителя. Тези проекти са осигурени със съгласието на автора от: Microsoft Visual Basic .NET проекти за работа в клас Създадени от Alfred C Thompson II Разпространени от Mainfunction.com Microsoft C# проекти за работа в клас Създадени от Alfred C Thompson II Разпространени от Mainfunction.com За учениците, които искат са разширят познанията си препоръчваме изучаването на масиви и указатели. Подходящи материали са заглавията по въпроса са “Visual Basic Array Tutorial” и “Visual Basic Index Tutorial”, които можете да откриете в Интернет. Те могат да са ориентирани към Visual Basic 6 вместо къмVisual Basic.Net. И в двата езика, обаче теорията и реализацията на масивите е подобна. Проект Страница Програма за пресмятане на ресто - учител 2 Програма за пресмятане на ресто - ученик 4 Палиндроми - учител 8 Палиндроми - ученик 6 Програма за преброяване на букви - учител 10 Програма за преброяване на букви - ученик 12 Преобразуване от и в римски цифри - учител 14 Преобразуване от и в римски цифри - ученик 16 Космически нашественици - учител 18 Космически нашественици - ученик 21

Transcript of Допълнителни проекти - Teacher.bg Guide Additional...Microsoft Visual Basic .NET...

1

Допълнителни проекти

Някои ученици могат да завършат курса по-рано. Този документ съдържа 5допълнителни проекта, които могат да се напишат като се използват научените повреме на курса техники. За всеки проект съществуват варианти за ученика иучителя.

Тези проекти са осигурени със съгласието на автора от:

Microsoft Visual Basic .NET проекти за работа в класСъздадени от Alfred C Thompson II

Разпространени от Mainfunction.com

Microsoft C# проекти за работа в класСъздадени от Alfred C Thompson II

Разпространени от Mainfunction.com

За учениците, които искат са разширят познанията си препоръчваме изучаванетона масиви и указатели. Подходящи материали са заглавията по въпроса са “VisualBasic Array Tutorial” и “Visual Basic Index Tutorial”, които можете да откриете вИнтернет. Те могат да са ориентирани към Visual Basic 6 вместо къмVisualBasic.Net. И в двата езика, обаче теорията и реализацията на масивите еподобна.

Проект СтраницаПрограма за пресмятане на ресто - учител 2Програма за пресмятане на ресто - ученик 4Палиндроми - учител 8Палиндроми - ученик 6Програма за преброяване на букви - учител 10Програма за преброяване на букви - ученик 12Преобразуване от и в римски цифри - учител 14Преобразуване от и в римски цифри - ученик 16Космически нашественици - учител 18Космически нашественици - ученик 21

2

Програма за пресмятане на ресто – бележки на учителя

НИВО: Начинаещи

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 90 минути

ЦЕЛИ: Използване на условни изрази Използване на формули за работа с парични суми

НЕОБХОДИМИ ЗНАНИЯ: Математически операции, включващи деление и степенуване

НЕОБХОДИМИ МАТЕРИАЛИ: Visual Basic.NET

ПРЕПОРЪКИ ЗА УЧИТЕЛЯ:Приложението е предвидено за работа с цели числа. Учениците, които желаят даизползват десетични числа ще срещнат повече трудности, порадинеобходимостта от закръгляване.Може би ще искате да обясните разликата между тези два типа от данни. Ако стезапознати с двоичната бройна система, ще можете да обясните, че 1/10 ебезкрайна дроб в двоичната бройна система, както 1/3 в десетичната бройнасистема. Това затруднява работата на компютъра с парични стойности.

РЕСУРСИ: Ръководство

ПРЕДЛОЖЕНИЕ ЗА ОЦЕНКА:Програмата трябва да прави правилни пресмятания за всички възможникомбинации, включително и съдържащите пени. При пресмятането на рестототрябва да участват всички монети и банкноти, т.е. не се допускат нулевистойности за някои от монетите или банкнотите.

Тествайте програмата с различни стойности, включително и такива, при коитотрябва да се направи избор между две монети от 5 цента и една монета от 10цента или други подобни комбинации. Програмата трябва да продължи да работии когато предложените пари са по-малко или равни на изискваните.

Изходът от програмата трябва да е чист.

3

ПРИМЕРЕНО РЕШЕНИЕ:Програмата трябва да започва с проверка дали предложените пари садостатъчно. Ако сумата е достатъчна се пресмята разликата между цената ипредложената сума. Изчислената стойност се сравнява със стойността на най-голямата банкнота. Приемете, че най голямата банкнота е с номинална стойност100 долара.

ЗАБЕЛЕЖКА: Отпечатвани са и банкноти от $500, $1000, $5,000 и $10,000, но тене са в обръщение.

Определя се броя на 100 доларовите банкноти и полученото число се добавя къмсписъка с парите, които трябва да се върнат като ресто. Това може да стане катопредложената сума се раздели на 100, след което цялата част от делението сесъхранява. Върнатото ресто в 100 доларови банкноти се определя чрезумножение на определения преди това брой на банкнотите по 100. След това сепресмята разликата между първоначално определеното ресто и рестото, което щесе върне в 100 доларови банкноти.

Същата обработка се прави и за останалите банкноти и монети.

4

Програма за пресмятане на ресто – бележки на ученика

НИВО: Начинаещ

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 90 минути

ЦЕЛИ: Използване на условни изрази Използване на формули за работа с парични суми

ПРЕГЛЕД НА ПРОЕКТА:Създайте програма, за да представите пресмятането на ресто. Тя трябва даприема задължението на купувача и дадената от него сума за плащане.Програмата трябва да пресмята рестото и да съобщава на касиера колко паритрябва да върне на купувача и в какви банкноти и монети. Тя не трябва да допусканулев брой от дадена банкнота или монета.

ИНСТРУКЦИИ:1. Създайте и текстови полета за въвеждане на дължимата и дадената сума.2. Създайте списъчно поле за представяне на информацията за банкнотите имонетите, които трябва да се върнат.3. Създайте команда в меню или бутон за изчисляване на резултата.4. Изчислете рестото и определете представянето му в банкноти и монетипосредством функция. Уверете се, че функцията изчиства предишно показанатаинформация, за да предотвратите погрешни резултати.5. Осигурете начин за чист изход от програмата.

ДОПЪЛНИТЕЛНИ СРЕДСТВА: Ръководство

5

ПРИМЕРНО РЕШЕНИЕ:Завършената програма може да изглежда по следния начин:

ДОПНИТЕЛНИ ВЪЗМОЖНОСТИ: Уведомете потребителя, ако купувачът дава недостатъчно пари.

6

Палиндроми – бележки на учителя

НИВО: Напреднали

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 2-3 часа

ЦЕЛИ: Работа със символни низове

НЕОБХОДИМИ ЗНАНИЯ: Цикли Функции за работа с низове

НЕОБХОДИМИ МАТЕРИАЛИ: Visual Basic .NET

ПРЕПОРЪКИ ЗА УЧИТЕЛЯ:Излишните символи, символите извън диапазона, който не ви интересува испециалните символи създават затруднения при откриването на палиндроми.Уверете се, че учениците са наясно със същността на символите и технитехарактеристики.

В тази програма могат да се използват традиционната функция Mid и методаString.SubString. Уверете се, че учениците знаят стартовия индекс, с който работивсяка една от тези функции. Функцията Mid предполага, че първият символ отвсеки низ има индекс 1, докато метода SubString – 0. Дължината на низа определякога ще приключи изпълнението на цикъла.

Обмислете, ако е необходимо, да направите преговор на функциите. Тяхнотоизползване ще направи проектът по-лесен за реализиране.

Проверката за валидност на данните е част от всяка програма. Обмислетепредложения за данни, с които учениците ще тестват своите програми ефективно.Ако не направите предложение, наблегнете на важността при тестването сподходящи данни.

СРЕДСТВА: Ръководство

ПРЕДЛОЖЕНИЕ ЗА ОЦЕНКА:Тествайте програмите с низове, за които резултатът е предварително известен, зада се уверите, че всички възможни случаи са реализирани. Класическияпалиндром “Madam I’m Adam” е подходящ за тестване. Изречението "Hello Madam,I'm Adam and this is my friend Bob" съдържа следните палиндроми с дължина оттри символа:

7

ada – от думата "Madam"mim – от думата "Madam, I'm"ada – от думата "Adam"ama – от думата "Adam and"isi – от думата "this is"sis – от думата "this is"bob – от думата "bob"

ПРИМЕРЕНО РЕШЕНИЕ:Първо премахнете излишните символи. Използвайте метода UCase, за дапреобразувате символите от въведения низ в главни букви. Използвайтесвойството Length, за да определите дължината на низа и структурирайте цикъл,който обработва всеки символ. Обединете всички валидни символи между A и Zили 0 и 9 в символна променлива. Това ще елиминира символите извъндопустимия диапазон.

Създайте булев метод, който проверява за валиден палиндом. Инициализирайтеедин брояч с единица и втори брояч с дължината на низа. Използвайте тезиброячи, за да сравните първия и последния символ. Ако са еднакви,инкрементирайте първия брояч и декрементирайте втория. Ако не са еднакви,установете флаг, който показва, е низът не е палиндом. Продължете дасравнявате символите, докато стигнете до средата на низа или откриетенесъответствие. Ако средата на низа се достигне без несъответствия, задайтеTrue за върнатата от метода. Ако се открие несъответствие, задайте стойностFalse на метода.

Ако не е зададена дължината на търсените палиндоми, подайте на метода целияниз. Визуализирайте подходящо съобщение в зависимост от стойността, коятометода връща.

Ако дължината на палиндома е зададена, създайте механизъм за отделяне наподнизове и ги подайте на метода за откриване на палиндоми. Цикълът започваот началото на низа и нараства с дължината на низа минус дължината на поднизабез единица. Използвайте метода SubString или функцията Mid, за да получитеподниза с желаната дължина. Подайте го на функцията за откриване напалиндоми. Ако подниза е палиндом, го визуализирайте по подходящ начин. Впротивен случай покажете съобщение за грешка.

8

Палиндроми – бележки на ученика

НИВО: Напреднали

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 2-3 часа

ЦЕЛИ: Работа със символни низове

ПРЕГЛЕД НА ПРОЕКТА:Палиндомът е дума или фраза, която се чете по един и същ начин отзад напред иотпред назад. Примери за такива думи са "Mom", "Dad", "Bob", а за фрази –"Madam, I'm Adam." Когато една фраза се проверява за палиндом, главните ималките букви не се вземат предвид, а също така не се отчитат разстояниятамежду думите или пунктуационните знаци, ако фразата е изречение.

Целта на програмата е да определи дали дадена дума, фраза или части от тях сапалиндоми. Например, съществуват ли групи от по три символа, които сапалиндоми? Допуска се обработване само на 26 букви (a...z) и 10 цифри (0...9).

ИНСТРУКЦИИ:1. Създайте текстово поле за въвеждане на низ за проверка.2. Създайте второ текстово поле за въвеждане на дължината на палиндомите,които ще се търсят.3. Създайте списъчно поле за визуализиране на откритите палиндоми.4. Напишете код за бутон, който ще извършва обработката на входния низ.5. Визуализирайте откритите палиндоми в списъчното поле. (Изчиствайтесписъчното поле преди да се въведе нов низ за проверка.)6. Покажете диалогов прозорец със съобщение, ако не са открити палиндоми.7. Създайте опция за изход от програмата.

ДОПЪЛНИТЕЛНИ СРЕДСТВА: Ръководство

9

ПРИМЕРЕНО РЕШЕНИЕ:Помислете за създаването на булев метод, който обработва низ и връща стойностTrue, ако е палиндом. Като аргумент на метода подайте въведения в текстовополе низ. Открийте по-малки палиндоми като организирате цикъл, в койтоподавате на метода поднизове.

Завършената програма може да изглежда по следния начин:

ДОПЪЛНИТЕЛНИ ВЪЗМОЖНОСТИ:Визуализирайте броя на откритите палиндоми.

10

Програма за преброяване на букви – бележки на учителя

НИВО: Средно напреднали

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 2 часа

ЦЕЛИ: Използване на методи за работа с низове и масиви Масивите не се изучават в курса Code Rules Visual Basic.NET. Програмата можеда бъде направена и без използването на масиви, но това ще затрудни учениците,тъй като ще се наложи да сравняват всички букви, за да определят променливата,в която ще съхраняват броя.

НЕОБХОДИМИ ЗНАНИЯ: Работа с различни типове променливи

НЕОБХОДИМИ МАТЕРИАЛИ: Visual Basic.NET

ПРЕПОРЪКИ ЗА УЧИТЕЛЯ:Обяснете, че символите се съхраняват като числа. Ето защо те могат да сеизползват като ограничители и във формули. Уверете се, че сте обсъдили всичкиопасности от предположението, че символите имат специфична числова стойност.Най-често използвана е ASCII системата за кодиране, но съществуват и другитакива. Средата .NET например използва Unicode кодиране. Ето защо е по-добреза извършване на сравнения да се използват символни константи вместо числовиконстанти.

За повече информация относно Unicode кодирането разгледайте уеб сайта наUnicode консорциума(http://www.unicode.org/).

СРЕДСТВА: Ръководство

ПРЕДЛОЖЕНИЕ ЗА ОЦЕНКА:Програмата трябва точно да преброява повторенията на всяка една от буквите втекст. За тестване й може да се използва низ, за който предварително е известенброя на всяка една от буквите, които съдържа. Програмата не трябва да извеждакато резултат нулев брой за символите, които не се срещат. Изходът от неятрябва да е чист.

ПРИМЕРЕНО РЕШЕНИЕ:За съхраняване броя на всяка една от буквите може да се използва масив с 26елемента.

11

ASCII стойността на всяка една от буквите може да се използва за изчисляване наотместването в масива. Например:

myCount(myString(i)- ”A”) = myCount(myString(i)- ”A”) + 1

Учениците, които не са изучили масивите самостоятелно, трябва да използват 26променливи и 26 оператора If.

След като входния низ е обработен, може да се използва цикъл за изобразяванена резултата е списъчно поле. При визуализиране на резултата масивът трябвада се проверява за ненулеви елементи и тяхната стойност заедно с символнотопредставяне на съответните букви трябва да се показва в списъчното поле.

Друг начин за представяне на резултата е в текстови полета, озаглавени с букви.Текстовите полета, които нямат съдържание при визуализирането на резултататрябва да приемат стойност False за свойството си Visible.

Резултатите трябва да се показват в азбучен ред, тъй като елементите на масива,преброяващ буквите, са подредени също в азбучен ред. Ако програмистът желаеможе да зададе стойност True за свойството Sorted на списъчното поле и дапостави резултата направо в неговите символни елементи. В повечето случаирезултатите ще се визуализират в реда на появата им. Тъй като при азбучнотоподреждане 10 е преди 2, пред едноцифрените числа трябва да се поставят нули,за ад се запази правилния ред. Броя на думите може да се определя чрезпреброяване на интервалите между тях. Програмата трябва да отчита, чепоследната дума в текстовото поле няма интервал. При обработване наизречения трябва да се преброяват точките, удивителните и въпросителнитезнаци.

12

Програма за преброяване на букви – бележки на ученика

НИВО: Средно напреднали

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 2 часа

ЦЕЛИ: Използване на методи за работа с масиви и символни низове Алтернативно могат да се използват 26 променливи за съхраняване нарезултатите

ПРЕГЛЕД НА ПРОЕКТА:Преброяването на буквите е интересна задача с практическо приложение.Езиковедите преброяват буквите, използвани в литературата, за да изследватпромените в езика. Настоящият проект ще преброява броя на буквите в думи иизречения, въвеждани в текстово поле..

ИНСТРУКЦИИ:1. Създайте нов проект.2. Добавете текстово поле за въвеждане на низа, който ще се обработва. Задайтестойност True за свойството Multiline на текстовото поле.3. Добавете списъчно поле или друг обект, за да показвате броя на срещанията навсяка една буква.4. Добавете бутон или команда към меню, за да реализирате преброяването.Направете следното:a) Нулирайте всички броячи и покажете, че новият текст не съдържа информацияот предходното преброяване.b) Изчистете полето или полетата, в които ще се визуализират резултатите..c) Създайте цикъл, който ще обработва всеки символ от текста.d) Ако символът е буква, увеличете броя за съответната буква.e) Обработвайте следващите символи, докато не стигнете до края на текста.f) Визуализирайте броя на срещанията на всеки един символ. Не показвайтеинформация за символите, които не са част от входния текст.5. Добавете бутон или команда към меню, за да осигурите изход от програмата.

ДОПЪЛНИТЕЛНИ СРЕДСТВА: Ръководство

13

ПРИМЕРЕНО РЕШЕНИЕ:

Завършената програма може да изглежда по следния начин:

ДОПЪЛНИТЕЛНИ ВЪЗМОЖНОСТИ:

Пребройте броя на неповтарящите се символи в текста. Пребройте символите, които не са букви. Пребройте думите. Повечето думи завършват с интервал. Последната думаобикновено няма интервал след себе си. Пребройте изреченията. Не забравяйте, че не само точката е знак за край наизречението. Покажете броя на думите във всяко изречение. Покажете средния брой символи във всяка дума.

14

Преобразуване от и в римски цифри – бележки научителя

НИВО: Напреднали

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 3-4 часа

ЦЕЛИ: Създаване на конструкции със сложни условни изрази

НЕОБХОДИМИ ЗНАНИЯ: Работа с условни изрази Използване на функции за работа с низове

НЕОБХОДИМИ МАТЕРИАЛИ: Visual Basic.NET Таблица на римските цифри

ПРЕПОРЪКИ ЗА УЧИТЕЛЯ:Като програмен проблем тази програма е логически пъзел. На пръв погледученикът ще предложи използване на оператор if за всяко от числата.Необходимостта да реализира 4 999 израза обаче би го обезкуражила.Напомняйки на учениците, че конвертирането по този начин изисква 9,998 реда скод, вие ще ги убедите, че това решение не е удачно.

Числото 4,999 беше избрано от практически съображения. Римските числа надпет хиляди was се записват със символи, които не са от ASCII множеството. 4 999е достатъчно голямо число, за да предизвика повечето ученици.

Трябва ад напомните на учениците да осигурят проверка за валидност наданните. Какво ще се случи, ако в полето за въвеждане на арабските числа севъведе десетично число или символ? Или, ако в полето за въвеждане наримските числа се въведе невалиден символ? Как ще се обработват малките иголемите букви?

Можете да припомните на учениците функцията UCase. Накарайте учениците дапомислят как биха направили преобразуването на ръка. Когато преобразуват отарабски към римски цифри, повечето хора използват метод, който изважда отарабското число най-голямото възможно представимо със символ число.Символът се оставя настрана, след което се изчислява следващия символ. Товапродължава, докато се получат всички цифри на римското число. Съществуватняколко възможни алгоритъма за реализация.

Преобразуването от римски в арабски цифри е даже по-лесно. Обработвайтесимволите от римското число от ляво надясно като ги преобразувате в цифри и ги

15

добавяте към брояч. Трудности се появяват в случай, че стойността на водещиясимвол трябва да се извади от стойността на следващия символ, когато той е по-голям. Сравнявайте всеки символ с разположения вдясно от него, за даопределите правилното число.

СРЕДСТВА: Ръководство

ПРЕДЛОЖЕНИЕ ЗА ОЦЕНКА:Проверете, че програмата работи за широк диапазон от числа. Числата 1994 и4999 осигуряват добър тест. Проверете, че конвертирано в едната посока числодава същото число, когато се конвертира обратно.

ПРИМЕРЕНО РЕШЕНИЕ:Създайте две текстови полета за въвеждане на числата, които ще сепреобразуват. Под всяко поставете по един бутон, озаглавен в зависимост отпреобразуването, което прави.

Преобразуване от арабски в римски числаИзползвайте функцията Val, за да преобразувате въведеното в текстовото полечисло в числова стойност. Ако числото е по-голямо или равно на 4 000, извадетеот него1000 и добавете символа M към низа, който ще представя римското число.Направете същото за 3 000, 2 000 и 1 000. Сравнете числото с 900. Ако то все ощее по-голямо, извадете от него 900 и добавете CM към края на низа. Продължетепо същия начин с 500, 400, 300, 200, 100, 90, 50, 40, 30, 20, 10, 9, 5, 4, 3, 2, и 1.След като цялото число е обработено, покажете резултата.

Преобразуване от римски в арабски числаИнициализирайте променлива брояч. Инициализирайте и символна променлива,която ще съхранява предишните символи за символите след първия.Конструирайте цикъл, който обработва всеки символ. Ако символът е I добаветеединица към брояча. Ако е V, добавете 5, в случай, че предходния символ не е I.Ако предходния символ е I, то тогава трябва да извадите единица и след това дадобавите полученото число. Следвайте описаната последователност заоставащите символи до M.

Не забравяйте, че има само един възможен символ преди определен друг символ,който участва в операцията изваждане. Символът I се поставя преди X (10), кактои преди V (5). Символът X се поставя преди L (50) и C (100). Символът C сепоставя преди D (500) и M (1000).

След като обработите всички символи покажете резултата в съответното текстовополе.

16

Преобразуване от и в римски цифри – бележки наученика

НИВО: Напреднали

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 3-4 часа

ЦЕЛИ: Създаване на конструкции със сложни условни изрази

ПРЕГЛЕД НА ПРОЕКТА:Програмата конвертира арабските цифри в римски и обратно – римските варабски. В зависимост от случая тя трябва да прочита число или символенниз.Потребителят трябва да определи типа на преобразуването. Програмататрябва да конвертира числа до 4 999.

ИНСТРУКЦИИ:1. Създайте две текстови полета и ги озаглавете.2. Създайте два бутона – един за преобразуване от арабски в римски числа и другза преобразуване от римски в арабски числа.3. Напишете код за преобразуването в двете посоки.4. Поставете преобразуваните числа в подходящите текстови полета.5. Добавете команда за изход от програмата.

ДОПЪЛНИТЕЛНИ СРЕДСТВА: Ръководство Таблица за преобразуване в римски числа1 I 40 XL2 II 50 L4 IV 90 XC5 V 100 C6 VI 500 D9 IX 900 CM10 X 1,000 M

17

ПРИМЕРЕНО РЕШЕНИЕ:Завършената програма може да изглежда по следния начин:

ДОПЪЛНИТЕЛНИ ВЪЗМОЖНОСТИ: Числата над пет хиляди изискват символи с линийка над тях. Създайте файловес картинки за изобразяване на символите над 5 000. Ако потребителят въвежда римските числа с малки букви, осигуретепредставянето им в главни букви.

18

Космически нашественици – бележки на учителя

НИВО: Средно напреднали

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 3-5 часа

ЦЕЛИ: Използване на таймер Използване на метода MessageBox Обработка на събития Създаване и използване на масиви от обекти

НЕОБХОДИМИ ЗНАНИЯ: Конструиране на цикли Използване на масиви. Ако се използват ограничен брой космически кораби,програмата може да бъде написана и без използване на масиви. Обемът на кодаще е по-голям, ако всеки кораб трябва да се проверява поотделно, вместо да сеизползва обработка на масив в цикъл.

НЕОБХОДИМИ МАТЕРИАЛИ: Visual Basic.NET

ПРЕПОРЪКИ ЗА УЧИТЕЛЯ:За таймерите са особено важни две свойства: enabled и interval. Таймерът трябвада се активира, за да работи. След като това се направи определени действия сеизпълняват през определения от таймера интервал. Интервалът се задава вмилисекунди. Тази стойност е от тип double, което означава, че могат да сезадават различни по продължителност интервали. Това е различно във VisualBasic 6.0, където най-големия интервал, който може да се зададе на таймера еминута. Допуска се създаването на множество таймер обекти.

Програмата използва елементарна начин за анимация. Тя променя свойстватаTop или Left на полета за визуализация на изображения.

Обмислете разликите между варианта да движите всеки един обект индивидуалнои варианта да реализирате масив от обекти, което предполага използването нацикъл.

След като програмата се завърши, накарайте учениците да разработят своисобствени игри с подобна концепция.

СРЕДСТВА: Ръководство

19

ПРЕДЛОЖЕНИЕ ЗА ОЦЕНКА:Картинките трябва да се движат по един и същ начин надолу или напречно въвформата. Щракването върху някоя от тях трябва автоматично да я поставя вгорната част на формата. Играчът трябва да избира между три различни скорости.Броя на пропуснатите и уцелените картинки трябва да се показва. Програмататрябва да има чист изход. Рестартирането на играта трябва да нулира всичкиброячи и да позиционира картинките в горната част на формата.

ПРИМЕРЕНО РЕШЕНИЕ:Създайте рамка, в която могат да се движат картинките. Това ще улесни начина,по който ще се определят границите на движението. Създайте едно поле завизуализиране на изображение и след като дефинирате всичките му свойствасъздайте и останалите обекти. Уверете се, че сте задали стойност за свойствотоPicture.

Щракнете двукратно върху полето с картинката, за да създадете метод заобработка на събитие. Използвайте подаденият аргумент на този метод, за да сиосигурите достъп до свойството Top на полето с картинката. Методът няма дапремества обекта, ако играта е поставена в пауза чрез деактивиране на таймера.Кодът може да изглежда по следния начин:

Private Sub picTarget_Click(ByVal sender As System.Object, ByVal eAs System.EventArgs) Handles picTarget.Click

Dim this As PictureBox = senderIf Timer1.Enabled Then

this.Top = 10End If

End Sub

Върху формата трябва да се постави таймер. Методът Tick на таймера трябва дадобавя стойност към свойството Top, за да придвижва обекта надолу въвформата.

Две променливи ще управляват преместването на картинките. Първата задаваинтервала на таймера, а втората – разстоянието, на което трябва да сепридвижва всяка картинка. Увеличаването разстоянието, което се изминава навсеки интервал или намаляване продължителността на интервалите води доувеличаване на скоростта, с която се движат картинките. Накарайте учениците даекспериментират с тези настройки, за да открият оптималните им стойности.Изберете само тези стойности, с които е подходящо да променяте скоростта надвижение на картинките по време на изпълнение на програмата.

Манипулирането на таймера е основополагаща за програмата. Напишете цикъл,който премества картинките чрез промяна на стойността за свойството им Top.След всяко преместване сравнявайте местоположението им спрямо долнатастрана на рамката. Ако стойността за свойството Top на някоя от картинките е по-голяма от височината на рамката, то картинката трябва да се премести под

20

рамката и да изчезне. В този случай увеличете броя на пропуснатите картинки иобновете визуализацията. Преместете картинката в горната част на рамката.

След всяко изчезване на картинка проверявайте дали брояча на пропуснатитекартинки не е достигнал стойност, изискваща край на играта. Ако това се изпълни,визуализирайте диалогов прозорец с бутони за съгласи и отказ, който питапотребителя дали желае да стартира нова игра. Ако потребителят откажестартирането на нова игра, използвайте метода application.Exit(), за да излезете отиграта. Ако потребителят потвърди стартирането на нова игра, инициализирайтеброячите и формата.

Щракването върху картинка я премества в горната част на формата иинкрементира брояча на точните попадения. Тествайте програмата с единиченобект преди да преминете към следващата стъпка.

Копирайте няколко пъти полето за визуализиране на картинка върху формата.Добавете имената на всички нови полета към клаузата handles на създадениявече метод за обработка на събитието Click. По този начин всички нови обекти щереагират на това събитие.

Забележка: В курса Code Rules не се изучава описаната по-горе техника. Товаобаче е лесен начин да се използва еднократно написан код за множество обекти.

Обектите могат да се движат самостоятелно като се използват имената им, нореализирането на масив от обекти прави процеса на обработка по-ефективен.Декларирайте масив от полета за визуализиране на картинка. Открийтеобръщението към InitializeComponents. Уверете се, че всеки обект е асоцииранкъм елемент на масива. Методът Tick на таймера може да обработва елементитена масива в цикъл, за да премества обектите.

Създайте етикети за визуализиране на информация за статуса на играта.Декларирайте променливи за съхраняване броя на пропуснатите и ударенитекартинки. Друга променлива ще контролира скоростта, с която се движаткартинките.

Осигурете на потребителя възможност да променя скоростта на движение катоизползвате група от опции. Озаглавете ги като бавно, умерено и бързо. Прищракването върху всяка една от опциите актуализирайте разстоянието, на коетоще се преместват картинките при изтичането на всеки интервал на таймера.Гъвкав и удобен вариант е използването на скролираща лента. Използвайтесъбитието, което се генерира при скролиране на лентата, за да зададете стойностза скоростта на движение в зависимост от мястото на показалеца й. Уверете се,че сте задали подходящи минимална и максимална стойност за диапазона, вкойто се движи показалеца на скролиращата лента.

21

Космически нашественици – бележки на учителя

НИВО: Средно напреднали

ПРИБЛИЗИТЕЛНО ВРЕМЕ ЗА ИЗПЪЛНЕНИЕ: 3-5 часа

ЦЕЛИ: Използване на таймер Използване на метода MessageBox Обработка на събития (не е задължително за реализацията на проекта) Създаване и използване на масиви от обекти (не е задължително зареализацията на проекта)

НЕОБХОДИМИ ЗНАНИЯ: Конструиране на цикли Използване на масиви (не е задължително за реализацията на проекта, ноулеснява работата по проекта)

ПРЕГЛЕД НА ПРОЕКТА:Имате определен брой полета с картинки, които се движат надолу във формата.Ако потребителят щракне на някое от тях, го върнете в горната част на формата.Пребройте и покажете колко пъти е щракнато върху поле с картинка. Когато поледостигне долната част на формата, приемете че то е “изчезнало”. След катоопределен брой полета изчезнат, спрете играта и осигурете възможност напотребителя да стартира нова игра или да излезе от програмата. Позволете напотребителя да затвори играта и да излезе от програмата, когато желае..

ИНСТРУКЦИИ:1. Създайте масив от обекти, представящи полетата с картинки, които ще седвижат по екрана.2. Асоциирайте към всяко поле файл с картинка или икона.3. Създайте обект таймер. Всеки път, когато интервала на таймера изтече,увеличавайте стойността на свойството Top за полетата с картинките.4. В събитието, което се генерира при изтичане интервала на таймера,проверявайте дали дадено поле не е достигнало долната страна на екрана. В тозислучай преместете полето обратно в горната част на екрана.5. Ако броя на изчезналите полета достигне предварително зададено число,например 10, покажете диалогов прозорец, за да попитате потребителя далижелае да стартира нова игра.6. Ако потребителят желае да стартира нова игра, нулирайте броячите ипозиционирайте всички полета с картинки в горната част на формата. Акопотребителят не желае да продължи с нова игра, осигурете изход от програмата.7. Осигурете метод, който обработва генерираното при щракване върху поле скартинка събитие. В него използвайте свойството Top на полето, за да го върнетев горната част на формата.

22

8. Осигурете възможност на потребителя да променя скоростта на движениепосредством бутон, елемент от меню или някакъв друг начин.9. Осигурете изход от програмата.

23

ДОПЪЛНИТЕЛНИ СРЕДСТВА: Ръководство

ПРИМЕРЕНО РЕШЕНИЕ:Картинките в примера са създадени с програмата Paint. Можете да създадетесобствено изображение или използвате вече създадено.

ДОПЪЛНИТЕЛНИ ВЪЗМОЖНОСТИ:Добавете повече кораби.Осигурете на потребителя възможност да избира различни картинки.Настройте полетата за визуализиране на картинките по свой начин.Поставете различни картинки в полетата.Осигурете хоризонтално движение на картинките.Осигурете ускоряване на картинките по време на играта.Използвайте скролираща лента, за да променяте скоростта на движение.Добавете команда за пауза.