Как да си създадем конзолната игра „Balloons Pops“ на езика C#?

В края на месец Февруари тази година се записах за безплатния курс по програмиране Качествен програмен код, организиран от Академията на Телерик. Целта на курса беше да те запознае с принципите за изграждане на висококачествен програмен код в процеса на разработка на софтуер. Той е свободноизбираем в няколко български университета, но може да се запише от всички студенти, изучаващи компютърни науки или сходни, ИТ специалности. В началото ни раздадоха входящи проекти. На мен се падна да пресъдзам конзолно играта „Balloons Pops“.

Условия на играта

Играта „Balloons Pops“ трябва да е интерактивна и конзолно ориентирана. Идеята и е да се пукнат всички балони. Те са произволно зададени като матрица с размер 10 на 5 (5 реда и 10 колони). Всяка клетка на матрицата държи балон с определени цвят. Както се вижда от фигурата, която съм качил, цветовете могат да бъдат 4 на брой. Когато балон на определена позиция бъде пукнат, всички негови съседни балони от същия цвят също се пукат. Важно тук е да се отбележи, че това са балони съседни по ред и колона спрямо избрания от нас за пукане балон. Друго важно уточнение е, че след като даден балон се пукне и над него има все още балони, те изпадат с една позиция надолу и запълват празната клетка, оставена от пукнатия балон. Отново на фигурата това може да се види. Играта стартира с произволно генерирана матрица от балони в четирите различни на брой цвята [1…4]. В началото се пита за позицията на даден балон, като играча трябва да избере съответно ред и колона, за да го дефинира. Следва продължително пукане на балони от еднакъв цвят в едни и същи ред и колона. Играта приключва, когато и последният балон бъде спукан. Друо важно уточнение е, че когато играта приключи, трябва автоматично да се стартира нова такава. Ако се въведат невалидни координати на балон, то трябва да се изпише съобщение за грешка.
За да се стартира нова игра по всяко време, играчът трябва да въведе командата ‘restart’.
Програмата трябва да имплементира и локално табло „scoreboard“, което да държи най-добрите резултати и името на играча, успял да ги постигне. Естествено при първоначално стартиране на играта таблото с резултатите е празно. Друго важно уточнение е, че това табло държи петте най-добри резултати, подредени във възходящ ред по броя на ходовете, необходими на даден играч, да пукне всички балони. Когато даден играч пукне всички балони, неговият резултат може да се добави в таблото с резултатите, само ако броя на ходовете, които той е направил, е по-малък отколкото някои от другите постижения, които стоят в таблото с най-добрите резултати. Когато резутата на даден играч влезе в таблото с резутатите, играчът трябва да въведе името си или някакъв прякор. Играчът може да поиска да принтира таблото с резултатите по всяко време на играта, когато въведе командата ‘top’. Освен това той може да иска да спре програта като въведе командата ‘exit’.

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

Някои допълнения към играта

При стартиране на програмата се изписва съобщението „Welcome to “Balloons Pops” game. Please try to pop the balloons. Use ‘top’ to view the top scoreboard, ‘restart’ to start a new game and ‘exit’ to quit the game.“. Веднага след входното съобщение се принтира и произволно генериратана матрица с балони в различни цветове (цифрите от 1 до 4). Извежда се и съобщение за въвеждане на ред и колона от играча: „Enter a row and column:“.

Invalid move or command!

При грешно въведена команда, ти се изписва съобщението: „Invalid move or command!“.

The scoreboard is empty.

Ако се опиташ да извикаш таблото с най-добрите резултати, когато няма записи в него, ти се изписва съобщението: „The scoreboard is empty.“.

Illegal move: cannot pop missing ballon

Ако се опиташ да пукнеш празна клетка, ти се изписва следното съобщение: „Illegal move: cannot pop missing ballon!“.

Good bye!

Когато въведеш командата „exit“, ти се изписва съобщението: „Good bye!“.

Други изисквания за реализиране на играта

  • Позволени езици за програмиране: C#, Java, C++ и PHP.
  • Препоръчителни IDEs: Visual Studio 2010, Eclipse 3.x.
  • Програта ни трябва да е конзолно базирана. Не е необходимо имплементирането на GUI или Web базиран UI.
  • Документация не се изисква.

Примерна демонстрация на играта

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





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

И така нататък мога да си продължа с играта…

Поглед върху кода

За реализацията на кода съм разделил отделните компоненти на програмата в девет различни .cs файлове. Използвах http://ideone.com/, за да ви представя отделните части на кода си!

Какво е ideone?
Ideone е online компилатор и debugging tool, който ти позволява да си компилираш и стартираш кода онлайн на повече от 40 езика за програмиране.

Как да използваш ideone?
Избираш програмен език и копираш твоя ‘source code’ и входни данни в текстовата кутийка. След това избираш дали да стартираш (run) кода си  и дали да изпълниш твоята програма. Имаш и опцията да направиш кода си видим само за теб (private). Накрая натискаш върху ‘submit ‘ бутона и гледаш как програмата ти се изпълнява.

Моята имплементация на играта „Balloons Pops“?

– код (Source code) на играта: BalloonsPops.rar

– изпълним файл на играта: BalloonsPops.exe

  • BallonColours.cs – тук съм описал цветовете на балоните
  • BallonsPopsTest.cs – създал съм тестов клас, за да тествам цялата функционалност
  • ConfigurateEmptyLinesOfMessages.cs – тук съм конфифурирал празните редове на съобщенията и как да излизат на конзолата
  • FillGameBoard.cs – тук съм създал клас за създаване и попълване на таблото с балоните и произолното им оцветяване
  • GameInitialization.cs – тук съм инициализирал играта
  • GameMessages.cs – в този файл съм описал възможните съобщения, които играта може да генерира
  • Move.cs – създал съм ООП клас за редовете и колоните
  • Player.cs – създал съм ООП клас с информация за играча
  • ScoreboardInitialization.cs -това е клас за инициализиране на таблото с най-добрите резултати

Заключение

Надявам се темата да ви е интересна и полезна. Ако все още нямате знанията да направите подобна игра, можете да се запишете в някой от безплатните курсове на Академията на Телерик. Освен това може да прочетете някоя от книгите на Светлин Наков на адрес: http://www.introprogramming.info/ или да си ги купите от някоя книжарница.

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

Starcraft 2 vs. Diablo 3

Създадох тази анкета с цел лично проучване

В последните дни всеки около мен се побърка по новото Diablo III, а до скоро същите тези хора ми надуваха главата със StarCraft II. Аз лично изтествах и двете от любителска гледна точка. Моят личен фаворит е StarCraft II, но ми е интересно какво мислят другите, които са фенове на поредицата. Да ме извинят Blizzard Entertainment, но в момента нямам финансите да си позволя Diablo III и за това с малко walkaround успях да я инсталирам и да я тествам. За сега не бих си я взел, но това се дължи на факта, че съм малко разочарован. Изглежда ми доста изсмукана и определено очаквах повече от нея. Странно ми е как екипа, разработил Dialbo и Dialbo II, не участва в третата част. Колкото до StarCraft II, определено ми грабна окото и нямам търпение да излезе продължението StarCraft II Heart of the Swarm. По мое лично мнение това дългоочаквано продължение трябваше да излезе доста по-рано, но си заслужаваше чакането.

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

Все пак да не каже някой, че само изисквам без да давам – и аз си оставих моя вот в името на каузата. Поздрави и до нови срещи …
 

ZoomIt – Инструмент за работа с работния плот на компютъра.

 

Наскоро попаднах на интересен инструмент за работа с работния плот на компютъра. Това е ZoomIt. Той работи с всички версии на Windows и освен това можеш лесно да рисуваш върху „tablet PCs“. Много е удобен за работа с видео презентации и се използва изключително лесно.

Представяне

 ZoomIt (Sysinternals Screen Magnifier) е инструмент, с помощта на който лесно можеш да приближаваш и отдалечаваш (или иначе казано zoom-ваш) работния си плот. Разработен е от Mark Russinovich и вече съществува стаблилна версия – 4.2. Това е и сайта на производителя Sysinternals – www.sysinternals.comРаботи се много лесно с помощта на скрол бутона на мишката или с определени клавиши от клавиатурата (по подразбиране това са стрелките нагоре/надолу). Естествено клавишната комбинация може да се променя по твой избор. Инструментът ти дава и опция за рисуване с цветен маркер по десктопа. ZoomIt ти предоставя и възможност да пишеш на произволно място по десктопа и дори да си създаваш кутийка, в която да вмъкваш текст. Можеш лесно да нагласяш дебелината и цвета на линията. ZoomIt поддържа и горещи клавиши или иначе казано – бърза работа с определени клавиши от клавиатурата.

Демонстрация

След като за първи път стартираш ZoomIt , ти се появява прозорец, който описва поведението му. В този конфигурационен панел, ти можеш лесно да конфигурираш желаните от теб настройки и да започнеш работа с него.
В „Zoom“ секцията ти се обяснява как можеш да zoom-ваш с помощта на скрол бутона на мишката или с помощта на клавишната комбинация „Ctrl + 1“. За да излезеш от този режим, просто натискаш „Escape“ бутона на клавиатурата ти или десен бутон на мишката. В „LiveZoom“ секцията ти се казва, че тази опция се поддържа от Windows Vista или по нова версия на Windows. Windows ъпдейти ти се показват докато zoom-ваш. В „Draw“ секцията ти се обяснява опцията за рисуване с цветен маркер върху десктопа ти. Лесно можеш да навигираш между различните цветове за рисуване. В „Type“ селцията ти се казва, че когато си в режим на рисуване, лесно можеш да започнеш да пишеш и произволен текст, просто като натиснеш ‘t’ клавиша. В „Break“ секцията можеш да си нагласяш таймер, който да ти отброява определен интервал от време. Много е удобен, ако нямаш инсталиран такъв на компютъра си, а искаш да си засечеш някакво време.

Свали и използвай

След всичките приказки и демонстрации, доиде време и да дам линк за сваляне и да ви споделя и размера на този инструмент 🙂

Download ZoomIt
(267 KB)

Моята първа публикация

Добре дошли в моят блог!

Той е подходящ за начинаещи програмисти и ентусиасти.

Ще се опитвам да споделям ценна и полезна информация за всеки желаещ.

С радост ще приемам всякаква критика и ще се опитвам да оправдавам очакванията ви.

Не се колебайте да задавате въпросите си към мен и да ме насочвате към интересни теми.

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

Добавил съм и всички контакти с мен, които смятам за нужни.

Поздрави и до нови срещи 🙂