Конзолната игра на Team „Piglet“ – проект към Софтуерната академия на Телерик

Team Piglet In-game Logo

Pig Invaders

Pig Invaders е играта, която аз и моят отбор Team Piglet създадохме като част от обучението ни в Софтуерната академия на „Телерик“ по курса C# Част Втора. Ще споделя накратко как протече процесът по разработката й.

0. Отборът

Членовете на отбор „Прасчо“ бяха определени служебно от Академията. Състоеше се от пет души от различни възрастови групи и с различен опит в програмирането. От тях активно участие взехме трима – аз, Асен Радушев и Галя Тодорова.

1. Задача

Задачата ни беше да разработим конзолна игра. Параметрите на заданието могат да бъдат прочетени тук: ЗАДАНИЕ

2. Първа среща

Решихме да се видим на живо, за да обсъдим каква игра да създадем. Срещата се проведе в сградата на Софтуерната академия. Разбрахме се да направим Space Invaders игра. За комуникация щяхме да използваме Скайп и Google+ група.

3. Архитектура

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

Разделих логически проекта на няколко класа: Main, Events, Ships, Weapons и Settings. След което написах механиките за движение на кораба на играча, генериране на противникови кораби, стрелба. По-късно добавих и механика за попадение. Генерираните кораби реших да съхраняваме в лист от int масиви (List<int[]>). Всеки елемент от този масив щеше да съхранява друг масив, в който щеше да се съдържа информацията за характеристиките на всеки кораб. Тези характеристики включват визуален модел, хоризонтална и вертикална позиция, измерения на кораба по хоризонтала и вертикала – общо 5 елемента. При унищожаване на кораб се премахва съответният елемент от листа. Нулевият елемент е корабът на играча, останалите – противниковите.

Моделите на корабите реших да съхраняваме в матрица от символи. Това улесняваше написването на нови модели кораби.

Накрая написах и кода за поведението на противниците, който се базираше на .NET класа Random. Всеки противников кораб действаше самостоятелно от останалите. Възможните действия на един противников кораб в рамките на един цикъл бяха четири (две действия и две бездействия) – да промени или запази позицията си и да стреля или не.

4. Визуална част и озвучение

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

Интерфейс за избор на кораб

5. Други благинки

Съотборникът ми Галя имплементира пауза, scoring система, механика за съхраняване на резултатите във външен текстов файл и in-game меню. Благодарение на старанието й успяхме да отстраним и редица бъгове.

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

6. Защитата на проекта

… пред жури от Академията премина успешно и отборът ни получи максималните 11 точки!

Снимка от играта

7. Бъдещето на проекта

Единственото, което ме дразни в играта, е, че моделите треперят на екрана. Това е резултат от метода Console.Clear(); Възнамерявам по-нататък, когато имам повече време, да намеря разрешение на този дразнещ проблем. Освен това могат да бъдат добавени още много възможности – различни нива, босове, нови оръжия, power-ups и други.

8. Ресурси

Кодът

Играта

Документация

Презентационен файл

Отбор „English Test“ – какво създадохме и как

telerik-academy-logoЗдравейте!

На 6.09.2013 г. успешно приключи проектът на отбор „English Test“, който имаше за задача да състави примерни тестове и ръководство за подготовка по английски език за входния изпит на Софтуерната академия на „Телерик“ като част от задължителния курс „Споделяне на знания и работа в екип“. Освен че съм много доволен от крайния продукт, останах и приятно изненадан от удоволствието, което ми донесе съвместната работа с колеги от Академията. Имах щастието да общувам с амбицирани и отговорни хора, обединени от общата цел да създадат нещо качествено.

Екипът ни се състоеше от 9 души, избрани служебно от Академията и получили най-високи резултати на теста по английски от входния изпит, от които само един не взе активно участие в работата. Параметрите на задачата ни първоначално бяха тесни, но по предложение и на останалите два отбора („IQ Test“ и „IT Test“) преценихме, че можем да съставим ръководства за подготовка за всеки конкретен тест, а не само примерни тестове и линкове към външни ресурси, каквата беше първоначалната идея.

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

Моето участие се състоеше в работа по темата „Идиоми“. С течение на времето започнах да упражнявам известни организационни и представителни функции, които споделях с още двама колеги. Друга част от работата ми се състоеше във въвеждането на подготвените от колегите ми тестови въпроси в програма за тестове (Free Quiz Maker), както и в събиране и обработка на готови теми, написани от останалите.

За голяма радост на всички, в отбора ни имаше трима бивши и настоящи преподаватели по английски – Антоанета, Деница и Кремена, на които искам специално да благодаря за  непрестанно оказваната експертна помощ в областта на английския. Страхотни сте!

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

Разбира се, не на последно по важност място искам да благодаря и на Орлин, Пламена и Ярослав! 🙂

Тук не мога да не подчертая и отдадеността на колегата Йордан Банков от отбор „IQ Test“, който осъществяваше координацията между трите отбора и Академията.

Резултатите от работата на моя отбор, както и на останалитe отбори, можете да видите на следния адрес в секцията „Материали за подготовка“: http://academy.telerik.com/academy/entrance-exam

The free book „Fundamentals of Computer Programming with C#“ translated into English!

IntroProgrammingToday the programming-oriented Bulgarian literature has reached a new major milestone!

The free book „Fundamentals of Computer Programming with C#“ has finally been released in English. The combined work of over 20 authors serves as a great guide to beginners and will as well help experienced software engineers with practical advices and numerous examples. The book covers a wide area of topics starting with fundamental concepts such as Loops, Conditional Statements, Operators and Expressions and continues with Object-Oriented Programming, Data Structures and Algorithms to allow in-depth familiarization with the C# programming language and programming as a whole. The book contains 26 chapters.

Bonus materials include:
– Mind Maps;
– Presentations;
– Live Lectures Video Recordings;
– Problem solving guides;

The official site of the FREE Book: http://www.introprogramming.info/

You can download the book as PDF, DOCX or read it directly online.

As a Telerik Academy student (http://academy.telerik.com/) I highly recommend this book as it helped me make my first step into programming.

GitHub Repository Update

GitHub Logo

В GitHub хранилището ми наскоро добавих:

– част от домашните ми по C# Част 2;

– решения на неделните изпитни задачи по C# Част 1 на пролетния прием 2013/2014 (500 от 500 т.)

Personal GitHub Repository

Здравейте отново!

На този линк ще споделям периодично проектите, по които съм работил в Софтуерната академия на Телерик. Към момента там са качени домашните ми по C# Част Първа.

https://github.com/theexar/Telerik-Academy

Как да се подготвим за входния изпит в Софтуерната академия на „Телерик“

Telerik Academy

Здравейте!

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

І. Как да стигнем до самия изпит?

1. Необходимо е на първо място да си направите регистрация в сайта на академията и да попълните формуляр за кандидатстване на следния адрес
http://telerikacademy.com/SoftwareAcademy/Candidate . По-сериозно предизвикателство представлява съставянето на автобиография (curriculum vitae) и мотивационно писмо (cover letter). Те не са предмет на настоящата тема. Как по най-добър начин да ги напишете, потърсете в YouTube канала на
Telerik Academy http://www.youtube.com/user/TelerikAcademy с ключови думи „мотивационно писмо“ и „CV“.

2. Когато наближат датите за изпита, студентската система ще ви уведоми по email и на самата й страница. Ще Ви бъде дадена възможност да изберете ден и час от няколко възможни. Първите обявени дни и часове не са всичките! Редовно излизат нови дати за изпит, на които можете да се запишете. Ако не се чувствате подготвен, за да се явите на по-ранните дати, изчакайте – ще има нови. Все пак съобразявайте крайната дата на кампанията – горе долу няколко дни преди нея са и последните дати за входен изпит.

ІІ. Изпитът и как да се подготвим за него

1. Обща информация за протичането

Отидете най-късно 10 минути преди началото на изпита. Ще трябва да носите със себе си документ за самоличност, както и да знаете данните за достъп (име и парола) до собствения Ви профил в студентската система (този, от който сте подали документите си). Входният изпит за Софтуерната академия на Телерик е под формата на тест със затворени отговори. Всички въпроси са на английски! Компонентите са три – английски език, математико-логическа интелигентност и информационни технологии – общо 100 въпроса. Времето, с което разполагате, е 2 ч. и 30 минути. Можете да започнете от който компонент пожелаете, да превключвате между компонентите и въпросите в тях колкото пъти поискате. Отговорът, който сте подали, се съхранява веднага. Можете да редактирате отговорите си свободно и колкото пъти пожелаете. Това, че сте започнали с теста по английски, не означава, че трябва да го довършите и предадете, преди да започнете с другите. Напротив – можете да излезете от него по средата и да започнете някой друг, а по-късно пак да се върнете към него – въпросите ще са същите, а отговорите, които вече сте отбелязали, ще са съхранени.

Резултатите са достъпни веднага след официалния край на изпита.

2. Тест по английски – 45 въпроса

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

3. Тест за математико-логическа интелигентност – 25 въпроса

Тестът включва класически въпроси от тестовете за интелигентност. На изпита няма да Ви бъдат дадени езикови въпроси (въпроси за синоними, близкозначни думи и т.н.)! Тестът съдържа само такива въпроси от тестовете за интелигентност, които се отнасят до логиката, уменията ни да боравим с числа (четирите аритметични операции – събиране, изваждане, умножение, деление), триизмерни фигури. По-конкретно:

а) намиране на член в числова редица – дадена ви е числова редица, в която единият член е неизвестен (обикновено последният). Вашата задача е да откриете логиката, по която се формира всеки следващ член, и да установите кой следва да е неизвестният. При тези задачи много често в една числова редица всъщност се съдържат две – например четните членове се образуват по един начин, а нечетните – по друг. Например 1, 6, 2, 8, 3, 10, 4, ?, ? – неизвестните членове са 12 и 5. Може едната редица да се увеличава, а другата да намалява и т.н. Колкото повече задачи решите, толкова по-бързо ще откривате закономерностите.

б) намиране на неизвестно число в някаква фигура. Пример: имате три триъгълника – в ъглите на всеки от тях има числа, а в първите два по средата също има число. Вашата задача е да намерите кое число трябва да е по средата на третия триъгълник. Числото по средата може да е сборът на числата в ъглите. Други пример – квадрати. При същото условие като горното, може числото по средата да се формира като разликата между сбора на стойностите по диагонал. Възможно е числата да не се събират, делят, умножават или изваждат, а да се „долепват“ по някакъв ред и тогава да се извършват операции върху тях;
в) сгъване на куб. Дадени са ви страните на куб в двуизмерен вариант. Трябва да прецените как ще изглежда кубът, ако страните му бъдат сгънати.
г) намиране на някаква друга закономерност. Например дадени са Ви три квадрата, в които на различно място има по една черна точка. Трябва да установите по каква закономерност се движи точката и къде трябва да се намира при следващото й придвижване.

4. Тест по информационни технологии – 30 въпроса

Тестът по информационни технологии съдържа въпроси, които се покриват с конспекта за Националната олимпиада по информационни технологии. Най-добрият начин да се подготвите за него е като гледате клиповете в плейлиста, приложен в края на настоящата публикация. За Ваше удобство съм извадил 16 теста под формата на презентации заедно с верните отговори. Не е задължително да гледате целите клипове, но е хубаво поне 2-3 да изгледате от-до, защото има хубави обяснения по различните теми. Този тест не е лесен и е необходима целенасочена подготовка! Знания от обща култура няма да Ви бъдат достатъчни. Едва ли ще се справите добре, само защото цял живот сте ползвали компютър. Преди да кандидатствам се считах за Power User, но след като изгледах клиповете разбрах, че нищо не знам. Но научих страшно много.

ІІІ. Стратегия

За да бъдете приети, трябва вашият резултат от изпита да е над средния. За всяка кампания той е различен, но предполагам, че се колабае около 60 т. Важно е да знаете, че трябва да постигнете поне някакви резултати по всеки един от трите компонента. Ако имат 2-3 точки на единия, въпреки че сте блестящ на другите, няма да бъдете приети! Недопустимо е да не знаете английски. Колко минимално точки трябва да имате за всеки един компонент не мога да Ви кажа, но се стремете да можете да отговорите правилно на поне 8-10 въпроса от всеки от тестовете. Затова и подготовката Ви за изпита трябва да бъде насочена основно към това, което най-малко знаете. Ако имате добър английски, не си губете времето да учите специално за теста по английски, а наблегнете на другите два теста.

IV. Ресурси

Материали
В тази Google Drive папка съм качил следните материали:
01. English
– Примерен тест.
02. Mathematical logic
– изключително полезна книга с 25 теста за интелигентност, от които можете да подберете много математико-логически въпроси;
– текстов файл с линкове към други тестове и задачи.
03. Information technology
– Конспект за НОИТ за 2012-2013 г.;
– папка, съдържаща презентации с примерни тестове за НОИТ от подготвителните лекции на Телерик. Предстои качване на отговорите на тестовете (най-късно до 21 юли 2013).
На долния линк можете да намерите всички лекции за подготовка за НОИТ, проведени в Академията на Телерик.
http://www.youtube.com/watch?v=QR-NjY3zl4U&list=PLF4lVL1sPDSnhIGGGHpZUKfydc-Mr_Fqw

V. Допълнителни ресурси, предоставени от нашите колеги

1. Подготовка по английски
– граматика на Мърфи (от koko_9898) http://goo.gl/QtgwK
2. Подготовка по математико-логическа интелигентност
– IQ тест (от koko_9898) http://goo.gl/DrnHR
3. Подготовка по информационни технологии

Успех! Ако имате някакви въпроси или забележки към написания текст, както и ако искате да добавите допълнителни ресурси, пишете!

За мен

Здравейте!

Казвам се Емо и съм на 25 години. От 10-годишен се занимавам с компютри. Гимназиалното и университетското си образование посветих на икономиката и правото. Едва наскоро взех решение да навляза по-дълбоко в сферата на информационните технологии. От близък приятел разбрах за българската компания „Телерик“, която е водещ играч на световния пазар на софтуерни продукти за разработчици. Впоследствие научих и за безплатните курсове по програмиране, които фирмата организира, и реших да участвам в тях.

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

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

Интересувам се още от компютърни игри, планински туризъм, научна фантастика и футбол.

До нови срещи!