[Console Game] Вдъхновение за игра от задача от домашното
Здравейте!
Решавайки 5 задача от домашното за многомерни масиви, речници и множества( ЛИНК ), реших да направя конзолна игра, горе-долу със същата идея.Все пак първият ни Teamwork ще е точно на тази тема и реших, че това ще ми бъде една добра тренировка.
https://github.com/bobekas/ConsoleGame/blob/master/ConsoleGame.cs
Ще съм благодарен ако искажете мнение и препоръки относно структурата и оптимизацията на кода.
Благодаря за съветите!
Мисля, че изпълних всичките препоръки.
Сега се чудя как мога да движа играча само когато съм натиснал даден клавиш, а не когато съм го задържал и защо когато направя картата по-голяма и се движа понякога се получава лек flicker на всички символи(дали това е от бавното изписване на текст върху конзолата или мога да си оптимизирам кода по някъкав начин) ?
Можеш да използваш GetKeyState - https://msdn.microsoft.com/en-us/library/ms646301%28v=VS.85%29.aspx , и да направиш нещо като if (keyIsPressed && doAction == true){ doAction = false; do stuff }. По този начин би трябвало да изпълнява action само веднъж per key press. Имай предвид, че трябва да се импортне от User32.dll . Засега друг начин не съм открила, може и да има.
Колкото до flicker-a на първия ред - получава се заради Console.Clear(); Махни го и ползвай само Console.SetCursorPosition(), когато искаш нещо на екрана да се смени как изглежда (трябва обаче, когато player се движи, да зачистиш старата му позиция). Няма нужда да преначертаваш целия екран наново всеки път - със Console.SetCursorPosition() можеш да промениш само местата, които искаш да преначертаеш.
Ето и един туториал за конзолни игри, който много ми хареса - http://broadcast.oreilly.com/2010/08/understanding-c-text-mode-games.html
Ако искаш да задълбаеш, почети за event handling. :)