Open RadoRado opened 10 years ago
Опитах нещо като undo да направя като пази последните 5 състояния на канваса, обаче нещо не работи и не може да ме върне. Някакви идеи? От друга страна не знам точно как да процедирам с точките, защото лесно мога да махна последната, но ако имам изчертан триъгълник и искам да се върна една стъпка назад, когато имам само 2 точки няма откъде да им взема координатите.
Всички точки ги пазиш в стек.
Когато събереш 3 точки - pop-ваш и чертаеш, създаваш триъгълник и го връщаш обратно в стека.
Когато натиснеш Undo - махаш целият триъгълник от стека и го clear-ваш.
Ако искаш да махнеш само последната точка, трябва да пазиш всяка фигура, която чертаеш, да има стек, в който тя си пази точките в поредност.
И ще имаш следните функции:
compose 3 points -> triangle
decompose triangle -> 3 points
Ако искаш цялостен Undo / Redo, това се прави с Command Pattern - http://en.wikipedia.org/wiki/Command_pattern
Виж това - http://gamedevelopment.tutsplus.com/tutorials/let-your-players-undo-their-in-game-mistakes-with-the-command-pattern--gamedev-1391 - ще ти помогне
Евалата за кода! Много добре е написан. :+1:
Има само 1 bug:
Тук е добра идея, ако някой иска да зареди нещо върху друга рисунка, най-малкото да го пита дали иска да го направи без да е save-нал, а след това да махне старата картинка и да сложи новата.
Това е :+1: