Съдържание


Проектиране на решението на проблема



страница2/6
Дата22.07.2016
Размер0.8 Mb.
#585
1   2   3   4   5   6

2.2Проектиране на решението на проблема

2.2.1Мултимедийно приложение под Windows


Основната идея в реализирането на проекта АBС-learn бе създаването на среда, в която детето да се запознава с английската азбука и овладява първите четиристотин думи необходими за комуникация с езика. По тази причина акцентът в разработката падна върху лексиката на езика, а не върху неговата граматика.

Средата, в която ще се провежда обучението при овладяването на азбуката, трябва да притежава всички онези мултимедийни характеристики на компютърните игри. Това от една страна привлича потребителя за по-интезивна работа със нея и като крайна цел се овладяват заложените в нея знания, а от друга страна се съчетават средствата на съществуващите системи за езиково обучение (с аудио касети и илюстрирани учебници) с нови, при които към информацията и знанията получавани чрез аудио и визия на статични картинки, се прибавят и раздвижени анимационни персонажи. Тук от особенно значение е фактът, че процеса на обучение трябва да се извършва в единна среда – тази на компютърната конфигурация (монитор, мишка, клавиатура), за да не се налага използване на различни помагала (касетофон, учебници, видеомагнетофон), както при по-горе споменатите системи. Това спомага за съсредоточаване вниманието на потребителя върху извършваните от него дейности и бе причината за налагане на единен графичен интерфейс.

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

2.2.2Основни части


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

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

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

В четвъртата част на проекта, се предвиждаше на базата на няколко игри и упражнения с думи, да се усвоят знанията придобити в третата част. Разбира се тук са залегнали и знанията, придобити в първата част, по време на изучаването на азбуката. Там както вече споменахме наред със запознаването с буквата и графичната информация, която е свързана с нея, тоест предмет на картинка, чува се произношението на съответната дума и на съответната буква. Така, че един от основните моменти тук в тази четвърта част, бе създаването на игра, в която по произношение на определена дума да бъде въведен нейния синтаксис от клавиатурата. Акцентът в това упражнение пада върху факта, че в английския език произношението на думите се различава от техния правопис. В процеса на работа тези четири основни части бяха разширени допълнително, особено след тестването на средата проведено в ЧОУ с изучаване на чужди езици "Св.св. Кирил и Методий" и консултацията с преподаватели по английски език. Работните имена, които получиха четирите части са съответно



  • авс.learn за първата ,

  • abc.game за втората,

  • word.learn за третата и

  • word.game за четвъртата.

2.3Описание на реализацията


Целта при технологичната реализация на проекта, бе получаването на самостоятелно работещо приложение под Windows с потребителски ориентиран интерфейс. Ето защо за реализацията на проекта бе избрана средата Comenius Logo.

2.3.1Програмна среда


Comenius Logo е една нова реализация на стандартната Лого-философия за начално обучение по информатика с обогатени възможности, които позволяват използването на средата като развойно средство за създаване на самостоятелни приложения. В нея са включени много елементи от мултимедийните среди – работа със звук, анимация и графика. Наред с тях е обогатен основния инструментариум, с който се работи в Лого-философията – костенурката. Тук потребителят наред с традиционната костенурка и свързаната с нея геометрия, може да работи с два нови типа – анимационна костенурка и така наречените text-box костенурки. Първите се използват основно за създаване на анимационни персонажи и ефекти, а вторите за генериране на Windows плъзгачи и текстови кутии. И трите типа костенурки бяха използвани в разработката на средата.

2.3.2Ресурсни материали


Ресурсните материали в един мултимедиен проект са определящи за неговата интеративност. В проекта АBС-learn се работи с три типа: графични файлове във формат ВМР, файлове с образи (формат LGW) и звукови файлове (формат WAV). Всеки един от тези типове материали се съхранява в отделна поддиректория с имена – SCREEN, IMAGE, и WAVE. Системата търси точно от тези директории необходимия й ресурсен материал в определен момент.

Понякога се случва при пренасянето на проекта от едно място на друго дадена част от ресурсните материали да бъде унищожена или да не може да бъде заредена в новото място. Това води до генериране на грешка и прекратяване работата на потребителя. Поради тази причина създадохме допълнително няколко процедури, които се използват вместо стандартните команди на Comenius Logo. В тях се прави проверка за наличност на определен ресурсен материал и ако той е такъв едва тогава се изпълнява примитива, който може да го обработва.

Такъв е случаят с процедурата my.playw, която се използва вместо вградената команда PLAYWAVE. Основна нейна задача е проверка за наличие на звуков файл в директорията със звукови файлове (WAVE). Ако се установи липсата на такъв той бива заменен с празен, т.е. не се изпълнява нищо. Това се наложи като необходимост в процеса на тестване на системата, тъй като тя използва над 80 звукови файла. Част от тях са със съобщения на средата (тези файлове имат имена от вида АВСх, където х е число от 0 до 29. Виж Приложение 3), други с произношения на букви (тези файлове имат аналогични имена със самите букви) и думи от английския език (тези файлове имат аналогични имена със самите думи).
to my.playw :filewave

; процедурата проверява за наличието на звукови файлове и

; ако се окаже, че даден липсва не го изпълнява

setpath "%wave

repeat count :filewave ~

[test empty? item repc :filewave ~

iff [if not member? word item repc :filewave ".wav filter.dir~ dir "*.wav [make "filewave replace repc :filewave "]]]

playwave :filewave

end
За подмяната на липсващ звуков файл с празен се използва операцията REPLACE. По особен момент тук е построяването на списък с имената на всички звукови файлове. Използвахме конструкцията:

filter.dir dir "*.wav

Тук вградената операция dir връща списък, състоящ се от списъци от вида:

[име_на_файл големина]

Като вход се задава разширението на файла (в случая "*.wav, в различни части на проекта се използват различни разширения при обръщение към тази процедура, за установяване наличност на определен файл), а с рекусивната процедурата-операция filter.dir се връщат само имената на файловете.


to filter.dir :list.dir

; процедурата, връща списък само с първите елементи на подадения вход

if word? first :list.dir [op :list.dir]

op filter.dir lput first first :list.dir bf :list.dir

end
По аналогия на процедурата my.playw бе създадена процедурата my.setshape, която замества в проекта вградената команда setshape, като при зареждане на даден образ прави проверка за неговата наличност в ресурсните материали.
to my.setshape :shape

setpath "%image

if member? word :shape ".lgw filter.dir dir "*.lgw ~

[setshape :shape][setshape emptyimage]

end
При установяване липсата на такъв на костенурката се дава празният образ.

2.3.3Инициализиращи процедури


Comenius Logo разполага с инструментариум, който позволява произволен негов проект да бъде съхранен като самостоятелно приложение под Windows. При неговото стартиране от потребителя, средата се зарежда сама и работи във фонов режим. Едно от основните неща, които трябва да притежава такъв проект е процедура за първоначално зареждане. Нейното име е запазено в Comenius Logo и то е startup.
to startup

ini ; настройки на основния прозорец

my.playw [abc0]

( loadscreen "win1 [-240 190] )

; създаване на котенурки с образ завеси

maketurtle 1 [-154 105 0 tell st pu setphasemode "winl]

maketurtle 2 [150 105 0 tell st pu setphasemode "winr]

ask [1 2][repeat 3 [setphase repc wait 500]]

erturtle [1 2]

catch "error [main]

ignore error

setlogosize []

showspeedbar

ss

end


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

Първата от тях е процедурата ini (Виж Приложение 2). Целта на тази процедура е да се инициализират основните настройки на прозореца, в който ще бъде приложението, т.е. да се преобразува стандартния прозорец на Comenius Logo така, че потребителят да не вижда, че приложението работи под системата. Тази процедура извиква процедурата ini.path.


to ini.path

setpath loadpath

( setpath "image word path "\\image )

( setpath "wave word path "\\wave )

( setpath "screen word path "\\screen )

end
В нея се прави пренастройка на пътищата. Comenius Logo работи с няколко типа обекти, един от тях са образи, втория - звуци, третия - графични екрани, това са файлове с разширение BMP. Именно в тази процедура се правят настройките необходими на средата при търсенето на ресурсните й материали в специални директории. Когато проекта е пренасян от една система на друга е необходимо основната програма файла abсlearn.lgP да бъде в една директория, а в поддиректории да са файловете с образи, звуци и екрани, като имената на тези поддиректории са съответно image, wave и screen.

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

С
лед тази въвеждаща анимация процедурата startup се обръща към рекурсивната процедура main (Виж Приложение 2). При обръщението към нея е използвана конструкцията catch, с думата error. Това се наложи от изискването при възникване на евентуална грешка по време на изпълнението потребителят да не получава съобщение за нея, а да продължи своята работа. Всъщност продължението се изразява в прекратяване диалога със средата, без съобщение за грешка. Последното се осъществява от инструкцията ignore error. След нейното изпълнение Comenius Logo се настройва в стандартен режим за работа. Това е необходимо, ако потребителят е стартирал приложението през самата среда.

За влизането в отделните части на проекта в процедурата main се дефинират специални области от графичния екран, които да реагират при щракване с мишката върху тях. За тази цел се използват нови средства на Comenius Logo, които ги няма в другите среди базирани на Лого-философията. Това са така наречените думи със списъци, на които се присвоява специалното име Codearea. Дума със списък, носеща името Codearea позволява да бъдат дефинирани области от графичния екран с определен код. Този код се връща при щракване с мишката и прочита с операцията readkey.

Изходът от средата ABC LEARN се осъществява с клавиша ESC. Използването на този клавиш за изход е залегнало във всяка една от игрите-упражнения и образователните части.

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

След избора с мишката върху определената област става препратка към различните части на проекта. Така например при кликване върху първата област, където се осъществява запознаването с азбуката от английския език се стартира процедурата abc.learn.alphabet, а след нея abc.learn (Виж Приложение 2). Преди тяхното изпълнение се изтриват създадените области от графичния екран.


2.3.4Първа част на проекта


В първата част на проекта потребителят се запознава с азбуката. Това се реализира с процедурите abc.learn.alphabet и abc.learn.

Първата процедура abc.learn.alphabet запознава потребителя последователно с буквите от английския език. Наред с изписването на буквите в различен цвят, шрифт и големина, в долната част на екрана е разположена клавиатура. В определен момент точно една от буквите върху нея е оградена. Това е буквата, която се произнася и изписва върху текстовия екран. По този начин запознавайки се с последователнотта от букви в английския език детето придобива и знания за подредбата на тези букви по клавиатурата. Тези знания ще са необходими по-късно, когато вече работим с буквите в останалите части.

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

Т
ези дейности се реализират с процедурата abc.learn. Тук отново за обезопасяване на ресусните материали, свързани с образите, се използва създадената процедурата my.setshape, която замества командата setshape за задаване образ на костенурка. Ако дадена картинка от основните картинки, които се използват при запознаване с буква, липсва тогава вместо картинка на екрана не се извежда образ, а само буквата и думата, която е свързана с тази буква. Изходът от процедура abc.learn става с натискане на клавиша ESC и връщане в процедурата main, където отново чрез щракване с мишката върху някои от четирите области в прозореца може да минем към следващата част.

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

2.3.5Втора част на проекта


Втората част на проекта съдържа 5 игри-упражнения с буквите от английската азбука. Тя се управлява от процедурата abc.game (Виж Приложение 2). При влизане потребителят има меню за избор:
1. Първа буква от картинка.

2. Липсваща буква в дума.

3. Първа буква на чута дума.

4. Разбъркани букви.

5. Чута буква.
Изборът може да бъде направен с щракване върху съответното име с мишката или натискане на клавиша със съответното число. Отново се използва конструкцията pprop "codearea, с която се задава правоъгълна област от екрана за отчитане щракванията с мишка. Изходът от тази част става с клавиша ESC.

Преди обръщането към съответните процедури за различните типове игри се зануляват две променливи, които ще съхраняват резултата от всяка игра. Това са: all.cw и all.wr. Първата съхранява верните отговори, а втората грешните. Използват се глобални променливи, за да може в последствие, ако се реши доработка на средата тези променливи да се натрупват от различните игри, така, че потребителя като приключи работа с проекта, да получи цялостна информация за броя правилни и грешни ходове.

В първата игра от втората част, на потребителя се представя анимирана картинка на предмет и неговия надпис на български език. Той трябва да натисне клавиш от клавиатурата, на който е изписана първата буква от английското име на предмета. Използват се картинките, с които потребителят се е запознал в първата част. Тази игра се реализира от процедурата game.abc.picture. (Виж Приложение 2)

След натискане на клавиш от потребителя процедурата game.abc.picture отчита неговият резултат като верен или грешен. И в двата случая тя показва правилната английска буква и дума от картинката. При грешка се зачертва буквата, която е натиснал потребителя и се представя вярната буква. Тук в процедурата game.abc.picture се използва констукция за проверка наличието на определени файлове. Така например, ако се окаже, че от ресурсните материали липсва дадена картинка за определена буква, то тази картинка не може да бъде включена в изпитването на детето за определената буква. Изхода от процедурата става с натискане на клавиша ESC, след което на екрана се показва резултатът от играта във вид на усмихнато и намръщено ч
овече с броя на правилните и грешните отговори във вида:

Успоредно с картинката за подсилване на ефекта е добавен звуков файл. Процедурата, която визуализира резултата от играта използва като вход стойностите на глобалните променливи all.cw и all.wr. Нейното име е rezult.
to rezult :corr :rong

erturtle all

maketurtle 0 [0 0 0 ht pu tell]

setbg 3


settt [Hebar][22 700 0 0 0]

setshape :correct

setx -50 stamp

setx -80 - item 1 textsize :corr tt list :corr

setshape :wrong

setx 50 stamp

setx 100 tt list :rong

if :corr > :rong [my.playw [abc23]][my.playw [abc18]]

( readkey 0 )

waituntil [key?]

ignore readkey

playw []


cs

end
Тази процедура използва две променливи от тип образ за намръщено и усмихнато човече.

Потребителят се връща в менюто на втората част с натискане на произволен клавиш. Това е направено с цел всеки индивидиално да определя времетраенето за визуализация на неговите резултати.

Втората игра, от втората част на проекта, е с името Липсваща буква в дума. Тя представя на екрана анимирана картинка с името на предмета, в което липсва определена буква. Всеки път системата по случаен начин определя тази буква. Целта на потребителя е да натисне клавиша с буквата, която липсва. Системата прави оценка на неговия отговор, като показва съответно верния надпис на картинката или, ако е бил грешен, зачертва изписаното от потребителя. Процедурата, която управлява тази игра е game.abc.picture.1 (Виж Приложение 2). Като конструкция тя е сходна с тази на първата игра и затова носи подобно на нейното име. По-различното е вмъкването на операцията replace. Тук произволно избран знак от дадена дума, се замества с подчертаващо тире. По този начин на екрана се представя името на картинката с липсващата буква. И тук, разбира се, на няколко места е използвана конструкцията за проверка на липсващи ресурсни материали. Излизането от тази игра става с клавиша ESС. Показват се резултатите от играта и потребителят се връща към менюто на втората част от проекта.

В третата игра, на втората част, Първа буква на чута дума потребителят чува дума, чиято първа буква трябва да въведе от клавиатурата. Следва оценка на неговия ход, като се представя картинката, която съответстваше на тази буква, надписа й на английски език и самата буква изписани на графичния екран. Ако до 4-5 секунди потребителят не натине клавиш с буква системата отново повтаря думата. Изходът от играта става с натискане на клавиша ESC. Процедурата, която я реализира е game.abc.sound.(Виж Приложение 2) И тук отново се използва конструкция за проверка на ресурсните материали, но освен за образи тя е приложена и към звукови файлове. След напускане на играта се дава графична оценка за правилните и грешни ходове.

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

При избор на играта се зарежда процедурата start.compare.letters (Виж Приложение 2), с която потребителя избира свое ниво. Това става с натискане на клавишите 1, 2 или с посочване, с мишката, един от надписите Пър­­во ниво или Второ ниво. След това се стартира процедурата compare.letters (Виж Приложение 2) със вход 1 или 2, като съответно първият е за подредба на последователни букви от азбуката, а вторият - за случайно избрани. Тук особен интерес в технологично отношение е сравняването на буквите с използване на везната. Това е реализирано в процедурата game.comp.let. (Виж Приложение 2) Преди обръщането към нея, се създават костенурки, които да приемат образа на избраните от системата пет букви и пет костенурки, които приемат образа на чекмеджетата. Тук има особен момент, свързан с това, че имената на костенурките, които са за чекмеджета, са почти идентични с имената на костенурките с лик букви, като към тях има добавена цифрата 1.

За да се следи правилната подредба на буквите, е необходимо буквите, които се избират по случаен начин да бъдат подредени от самата системата. За тази цел се използва процедурата merge.sort, която сортира елементите подадени й като вход [8]. В други части на проекта отново се използва процедурата merge.sort за сортиране на елемент, затова ще се спрем накратко на нея. При създаване на процедурата основно изискване е тя да работи едновременно с думи и списъци, т.е. да бъде полиморфна. Поради тази причина подредбата на буквите се осъществява по следния механизъм: подадения като вход на процедурата списък или дума се разделя на две части. В едната се съдържат неговите четни елементи, а в другата нечетни. За целта се използват променливи - half1 и half2


to merge.sort :s

if empty? bf :s [op :s]

local [half1 half2]

make "half1 only.odd :s

make "half2 only.odd bf :s

op merge merge.sort :half1 merge.sort :half2

end
Подредбата става, като се сравнява всеки първи елемент от четния и нечетния съответно вход. Процедурата merge.sort се обръща към процедурата only.odd за взимане само елементите стоящи на нечетни позиции в подадения вход.
to only.odd :s

if empty? :s [op :s]

if empty? bf :s [op :s]

op fput first :s only.odd bf bf :s

end
След това процедурата се обръща към merge, която прави самото сравнение между четни и нечетни елементи.
to merge :s1 :s2

if empty? :s1 [op :s2]

if empty? :s2 [op :s1]

test first :s1 < first :s2

ift [op fput first :s1 merge bf :s1 :s2]

iff [op fput first :s2 merge :s1 bf :s2]

end
В процедурата за сравнение, както и процедурите, които тя извиква е използвана рекурсия. Всички процедури, с които се работи тук са процедури - операции.

След подреждане на петте костенурки - кутии, в които трябва да бъдат разположени другите пет костенурки - букви и везната на графичния екран, управлението на проекта се предава на процедурата game.comp.let. Тази процедура следи за действията на потребителя при играта. Тук основния проблем, който стоеше при техническата й реализация, бе как да се следи поставянето на костенурките - букви върху везната. Използва се факта, че имената на тези костенурки са самите букви. При щракване с мишката върху тях и преместването им, се проверяваше дали те застъпват костенурката, наречена vezna. За целта се използваше операцията overlap?, която връща името на костенурката, която е застъпена от последната активна костенурка. Ако се укажеше, че това е vezna то управленето се предава на процедурата vezna. Тя анализира местоположението на последната активна костенурка спрямо оста Оy и в зависимост от това “вдига” определен флаг, който системата следи и използва при поставяне на втора костенурка върху везната.

to vezna

make "l2 se :last.t ask :last.t [xcor]

; проверява подредбата на буквите

test ascii first :l1 < ascii first :l2

iff [if last :l1 < 0 ~

[ask "vezna [setphase 1] ask first :l2 [sety ycor + 5] ~

ask first :l1 [sety ycor - 5]] ~

[ask "vezna [setphase 3] ask first :l1 [sety ycor - 5] ~

ask first :l2 [sety ycor + 5]]]

ift [if last :l2 < 0~

[ask "vezna [setphase 1] ask first :l1 [sety ycor + 5] ~

ask first :l2 [sety ycor - 5]] ~

[ask "vezna [setphase 3] ask first :l2 [sety ycor - 5] ~

ask first :l1 [sety ycor + 5]]]

waituntil [key?]

ask se first :l1 first :l2 [home]

ask "vezna [setphase 2]

make "l1 []

make "l2 []

end
Изходът от играта за сравняване на буквите става по два начина. При първия - автоматично след подредбата на буквите. При втория - в избран момент потребителят, чрез клавиша ESC, може да напусне играта. И при двата случая управлението се предава на процедурата game.comp.let.rezult. Тя проверява правилността на подредените букви. Ако това не е направено буквите автоматично се подреждат в правилната последователност.

В последната игра, на втората част, Чута буква потребителят чува буква, която трябва да въведе чрез съответния клавиш на клавиатурата. При верен ход се показва картинката за съответната буква, самата буква, английската дума, свързана с нея и превода й на български език. Изходът от играта става с натискане на клавиша ESC. Процедурата, която я управлява е game.abc.sound.2. (Виж Приложение 2)

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


2.3.6Трета част на проекта


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

  • чрез тематичен речник

  • чрез английско-български азбучен речник

  • чрез българо-английски азбучен речник

  • чрез търсене на определена дума

  • чрез добавяне на своя дума към речник.

Възможностите са представени в меню.

1. Тематичен речник

2. Азбучен английско-български речник

3. Азбучен българо-английски речник

4. Търсене на думи

5. Добавяне на дума в речника
Процедурата word.learn е тази, която инициализира менюто и предоставя възможност на потребителя за избор. И тук изборът може да стане, чрез щракване на мишката върху съответната тема или чрез избор от клавиатурата с използване на клавишите от едно до пет.

При избор на първата възможност тематичен речник, пред потребителя се представят отворени книги по различни теми.





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

П
роцедурата dictionary.subject е тази, която подрежда по екрана отворените книги с различните теми. Тук всяка една тема е отделна костенурка. След разположението на темите по екрана, в процедурата се следи за действие от страна на потребителя. Ако е щракнато върху някоя от книгите, т.е. върху костенурка се зарежда картинка по темата с разположени думи върху нея.
Особен момент в техническата реализация е съответствието на ресурсни материали необходими по дадена тема. Името на всяка една от костенурките, с лик отворена книга, съвпада с името на самата тема. В проектът съществува променлива със същото име, която съдържа думите за усвояване в тази тема. Тази променлива представлява списък, чийто първи елемент са координатите на точката, в която трябва да се разположи горния ляв ъгъл на картинката по темата. Следват списъци от по два елемнта – първият е английска дума, а втория – нейния превод. Последният елемент в променливата е списък, съдържащ позициите на text-box костенурките, които трябва да заемат за визуализирането на думите от темата. В ресурсните материали има графични файлове, чиито имена са тези на темите. Именно те се зареждат върху графичния екран при избор на тема. По този начин е направено съответствие между името на костенурката избрана от потребителя и ресурсните материали, която трябва да се заредят за нея. Когато име на тема съдържа повече от 8 символа (restaurant) при зареждане на графичния файл се взимат само първите осем.

След направения избор на тема от потребителя управлението се предава на процедурата Dictionary.subject.choose. (Виж Приложение 2) Тук при щракване с мишката върху дума от темата потребителят може да чуе нейното произношение, ако в ресурсните материали е налице необходимия звуков файл. В настоящата разработка това е достъпно само за темата Числа (Numbers) като се произнасят само числата от 1 до 10. Успоредно с произношението, което се чува, при щракване с мишката кутията с думата се оцветява в зелено. Процедурата, която реализира тези дейности е play.dictionary.subject.elements:


to play.dictionary.subject.elements

case readkey [0 [if not empty? touched [ask touched [setbox [bg 2]]~

my.playw list first item touched :el []~

ask touched [setbox [bg 15]]]] ~

27 [stop]]

play.dictionary.subject.elements

end
Чрез ESC се излиза от картинката и управлението се връща в главното меню за избор на една от темите. Отново с клавиша ESC можем да се върнем към по-горно ниво.

Втората възможност за избор, в третата част на средата, е Азбучен английско-български речник. Тук, както и при третата възможност (азбучен българо-английски речник) е използвана една и съща процедура, но с различен вход. Всъщност и при двете части пред потребителя се генерира в момента речник от думите, намиращи се в проекта. Затова при стартиране на някои от тези части се появява надпис за изчакване, докато системата генерира този речник, който след това тя записва на твърдия диск във файл и отваря по-късно с вградения в Comenius Logo редактор на файлове. Процедурадата, която управлява тези дейности е dictionary.abc. (Виж Приложение 2) След нейното стартиране излиза съобщението моля изчакайте и анимирана костенурка, която симулира писане по страници. Успоредно с това се чува звук от писец.

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

В зависимост от входа на процедурата dictionary.abc сортирането става по първия елемент на всеки от списъците (за английско-българския речник) или по втория (за българо-английския речник). Особен момент преди сортирането е построяването на речниковия запас. Тук се използва операцията MAP, която позволява дадена операция на Comenius Logo да бъде приложена към всеки елемент на подадения й като втори вход списък. В зависимост от входа на процедурата dictionary.abc като първи вход на операцията се използва FIRST (за английско-българския речник) или LAST ( за българо-английски речник). Това се налага поради факта, че списъкът, който връща dictionary се състои от списъци с два елемента. Първият е английска дума, а вторият – нейния превод на български.

case :eb [EB [let "dic merge.sort map "first dictionary] ~

BE [let "dic merge.sort map "last dictionary]]

След сортирането на речника, което се прави от процедурата merge.sort изхода на системата за писане се пренасочва, чрез командата printto към файла dict.txt, който се създава в този момент. Ако такъв файл съществува неговото съдържание се заменя с текущо построяваното. В началото на този файл се записва общия брой на думите, а след това се подреждат самите думи по азбучен ред, като преди всеки раздел на дума се отпечатва и думата, с която започва раздела. След завършване на подредбата отново се пренасочва изхода чрез командата printto, и се отваря създадения речник. Това става чрез командата за редактиране на файл editfilе. По този начин файлът dict.txt се визуализира пред потребителя. Така визуализирания речник потребителя може да използва като справочник или да потърси някаква дума в него.

Търсенето на дума в речника на проекта е следващата опция, в тази част на средата. В зависимост от думата, която потребителят въведе може да се направи търсене както на английски, така и на български език. Ако въведе английска дума ще бъде намерено нейното съответствие на български език и обратно. При дума, която има в ресурсния материал изображение или произношение, се вижда съответното изображение или се чува произношението на думата. Възможността за търсене на дума се реализира от процедурата dictionary.search.(Виж Приложение 2) Думата се въвежда в кутия, която се отваря върху текстовия екран. За тази цел е използвана командата readlistdialog.

След откриване на думата в речника, който се връща от процедурата dictionary, на графичния екран се извежда нейното съответствие като превод и картинка, както вече споменахме. Ако търсенета дума я няма в речника се извежда съобщение: няма такава дума в моя речник. Изходът от търсенето на дума може да стане по два начина с клавиша ESC, ако е визуализирана думата и нейния превод или чрез въвеждане на празната дума, ако не желаем повече да търсим дума за превод. Това става с натискане на клавиша enter без изписване на дума за търсене.

Последната възможност в тази част на проекта е свързана с добавяне на дума към специален потребителски речник. Той представлява отделна променлива с името mу.dictionary, в която се натрупват думите, които потребителя може да въвежда към проекта. Процедурата, която осъществява тази дейност, се нарича dictionary.add. (Виж Приложение 2) При нея, след въвеждане на нова английска дума от потребителя, системата прави проверка, дале вече я има в речника на проекта. Ако я има автоматично се изкарва нейния превод, т.е. потребителя не може да въведе тази дума, но ако я няма се дава възможност да бъде въведен нейния превод. След това може да се създаде и картинка, която да бъде свързана с думата. Картинката се създава в редактора на образи, който е част от Comenius Logo. Тук се използва конструкция, при която с новата дума се създава променлива от празен тип образ. След това, тя се редактира с редактора на образи автоматично и това, което е нарисувано се съхранява на диска под аналогично име на въведената дума. Ако въведената дума е с повече от осем символа, се вземат само първите осем от тях. Файлът, който се създава е с разширение LGW и съдържа образ. Всъщност за всички онези думи от речника на проекта, които се използват и са по-големи от осем символа, ресурсните материали съдържат наименованието на думата до осмия символ. Във всички процедури, където има обръщение към ресурсен материал се вземат именно първите осем символа от думата, за да се използва съответния ресурсен материал, било то звук или картина. Изходът от процедурата за добавяне на дума става с клавиша ESC, в противен случай, ако бъде натиснат друг клавиш може да се добавят произволен брой думи.

Особен технически момент представлява сглобяването на потребителс­кия речник, тъй като той трябва да представлява списък, състоящ се от списъци с по два елемента, за да бъде използван от системата по аналогия на списъците с думите от теми. До намиране на правилното решение се използваха няколко комбинации от командите list и sentence, докато се стигне до използването на командата firstput в комбинация с list (приложена към английската и българската дума) и се зададе като втори вход речника на потребителя - mу.dictionary. По този начин се получава конструкцията, необходима на проекта, за да работи правилно. При търсене на дума се използва командата map, за да бъдат върнати като списък само английските и само българските думи от речника на проекта.

2.3.7Четвърта част на проекта


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

1. Дума от картинка

2. Чута дума

3. В градината

4. Превод на дума: английско-български

5. Превод на дума: българо-английски

6. Дума от тема

7. Дума по чути букви.
Процедурата, която инициализира менюто за тази част е wоrd.game (Виж. Приложение 2). И тук, както в останалите части избора от менюто може да бъде направен, чрез щракване с мишката върху съответното име или избор на клавишите 1, 2, 3, 4, 5, 6, 7.

При избор на първата игра дума от картинка, на потребителя се представя картинка, с която се е запознал в първата част при изучаването на буквите. Той трябва да въведе пълното име на предмета от картинката в отварящото се диалогово поле. Процедурата, която осъществява тази игра е game.abc.picture.2(Виж. Приложение 2).

Като структура процедурата е аналогична на процедурата game.abc.picturе, като разликата е във входа, който се приема от потребителя. Докато при първата процедура имаме само натискане на клавиш, то тук имаме прочитане на списък от клавиатурата. От списъка се обработва само неговия първи елемент. При правилно въвеждане на думата системата отчита това, като показва нейния превод. При грешно въвеждане на думата показва вярната дума на картинката. И в двата случая чрез звук се дава оценка за хода на потребителя в грешна или правилна посока. Напускането на тази част става чрез клавиша ESC или натискане на клавиша ENTER при въвеждане на дума, без да са написани символи, т.е. при въвеждане на празна дума. След това се показва резултат за правилните и грешните ходове на потребителя.

Във втората игра, на четвъртата част, ЧУТА ДУМА, потребителя чува дума произнесена на английски език и трябва да я въведе в отварящата се кутия. След това системата оценява неговия отговор, като показва картинката, която съответства на тази дума и нейния превод. Процедурата, която обработва тази игра е game.abc.sound.1(Виж. Приложение 2). Като структура тя е почти аналогична на game.abc.sound с тази разлика, че тук от потребителя се обработва цяла дума, докато при game.abc.sound, се обработва само първата буква. Ресурсния материал е ограничен само до двадесет и шестте думи, които се използват при запознаване с азбуката, туй като към системата само за тях има звукови файлове с произношението на съответните думи. Изходът става с клавиша ESC или с въвеждане на празна дума в полето за чутата дума.

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

В тази игра има две нива:



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

  • Второ ниво: Потребителят трябва да въведе думата, която се образува от посочените букви с плодовете в отворена кутия.

И
збор на ниво се осъществява от процедурата start.garden (Виж Приложение 2). В зависимост от действието на потребителя процедурата се обръща към процедурата garden или garden1 (Виж Приложение 2).
Особен технологичен момент в процедурата garden е използването на text-box костенурки за етикетите на дървото. Характерното при този тип костенурки в Comenius Logo е, че тяхното име съвпада с име на променлива и те могат да визуализират стойността на тази променлива в текстова кутия. Това е причината да бъдат използвани такъв тип костенурки в тази част на проекта.

Една, от създадените в процедурата garden text-box костенурки носи името на променливата, която съхранява правилната дума, докато имената на другите три съвпадат с променливи, чиято стойност са думи случайно подбрани от речника на проекта. Тук важен момент в разработката бе настройките на костенурките, тъй като те трябваше да изглеждат като етикети. Затова се прие те да съдържат по три реда, като размера се осредни на 15 символа на широчина. Разположението на текста става след преброяване на букви от думата, която трябваше да се визуализира в text-box костенурки. В зависимост от този брой на буквите, се определяше положението на съответната дума в етикета, като се оставяха пред нея необходимия брой празни интервали.


; textbox turtle with correct word

make "cw list [] first :sw

maketurtle "cw [st pu]

let "mar div ( 15 - count first :sw ) 2

ask "cw [setpos item 1 :label setboxmode "true~

setbox ( se [size [15 3] edit 0 title 0 bg 7 pp 4] "margin :mar )]

;

; textbox turtle with 1 wrong word



make "w1 list [] first first bf :s1234

maketurtle "w1 [st pu]

let "mar div ( 15 - count first bf :w1 ) 2

ask "w1 [setpos item 2 :label setboxmode "true ~

setbox ( se [size [15 3] edit 0 title 0 bg 7 pp 4] "margin :mar )]
Изборът за представяне на дърво върху екрана става по случаен начин от два графични файла. Също така по случаен начин се избира и представянето на ябълка или круша за плодове. След разположението на дървото и етикетите, се следят действията на потребителя. При щракване с мишката върху етикетът с вярна дума, тя светва в зелено и се преминава автоматично към избор на следваща дума с плодове. При щракване върху грешна дума, етикетът светва в червено, а този с правилната дума мига няколко пъти в зелено. След това, отново се преминава към следваща картина с плодове. За подсилване на ефекта от играта са добавени звукови файлове. Потребителя може да излезе с клавиша ESC. Тогава се появява резултата от играта с броя верни и грешни отговори. След това потребителят се връща в менюто за избор на ниво за игра и решава как да продължи. Може отново да повтори същото или да мине към следващото. Ако не желае да играе повече с клавиша ESC излиза от играта.

Процедурата garden.1 (Виж Приложение 2), която управява второто ниво, се различава от процедурата garden по това, че тук нямаме text-box костенурки, а единствено се отваря диалогова кутия за въвеждане на думата, която потребителя смята, че образуват плодовете. След попълване на съответната дума системата прави оценка за правилността, като ако е вярна показва само нейния превод, а в противен случай и вярната дума. За излизане от играта отново се използва клавиша ESC . След неговото натискане се извежда резултата от верни и грешни ходове по познатия графичен начин.

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

Следващите две игри - упражнения, които са за превод на дума, се реализират от една и съща процедура dictionarY.trans (Виж Приложение 2) с различен вход. В зависимост от него може да се иска от потредителя превод от английска дума на български или българска дума на английски. Като ресурсен материал се работи с всички думи от речника. На екрана се отпечатва съответната английска или българска дума и в диалогово поле се очаква потребителя да въведе своето предположение. Системата оценява неговата вярност и показва друг ресурсен материал, свързан с въпросната дума, било то картинка или звуков файл, ако той е налице. При излизане от играта се дава оценка за правилните и грешните отговори. Самото излизане става с клавиша ESC. За подсилване на ефекта е добавен звук с мелодия от песента “The ABC Song”. Процедурата, която реализира тези две части е dictionary.trans, със съответни входове. Ако входа е EB, това означава превод от английски на български (English – Bulgarian), ako e BE означава превод от български на английски (Bulgarian – English).

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

Играта Дума от тема се стартира от процедурата game.dictionary.subject (Виж Приложение 2). Като структура процедурата е аналогична на game.dictionary (Виж Приложение 2), в която потребителя се запознава с думите по теми. Тук тя изобразява на графичния екран, като отделни костенурки с лик разтворена книга различните теми. Потребителят със щракване определя, по коя тема ще играе. Зарежда се съответния екран с картинка и управлението се предава на процедурата game.dictionary.subject.elements.Тя е съставена по аналогия на процедурата game.dictionary.subject (Виж Приложение 2).





Разликата в двете процедури е, че костенурките, които се използват за визуализация на думите са скрити, а се създават нови костенурки, които да очакват отговора на потребителя. В тях той трябва да въведе необходимата информация чрез двойно щракване върху черните кутии, които се получават. С клавиша ESC потребителят излиза от картинката. Системата прави проверка и оценка, като във червено оцветява онези костенурки, в които неправилно е въведена думата на английски език, а в зелено правилните думи. Успоредно с това се визуализира и превода на думата. След напускане на темата потребителят се връща в менюто за избор на тема. Тук той може да продължи играта-упражнение с избор на друга тема или да я напусне с клавиша ESC. Системата дава оценка за броя на верните и грешно попълнени думи сумарно по познатия вече графичен начин.

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

Целта на тази игра е да се установи до каква степен потребителя може да разпознава произношението на буквата и да го отъждествява с нейния правопис в английския език. Като ресурсен материал се използват всичките думи, които са залегнали в проекта. Процедурата, която обработва играта се нарича game.abc.spel. (Виж Приложение 2) След въвеждане на дума се визуализира думата, която е вярна и картинка, ако има такава в ресурсния материал. Изходът от играта става с клавиша ESC. След това системата дава оценка за броя на правилните и грешни, въведени от потребителя думи.

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




Сподели с приятели:
1   2   3   4   5   6




©obuch.info 2024
отнасят до администрацията

    Начална страница