[Проект] Tetris Solver

  1. Tetris Solver

    Изкуствен интелект, който решава вариант на играта Tetris.

    Вход

    Наредена последователност от тетрис фигурки, кодирани стандартно (S, Z, T, O, I, J, L).

    Изход

    Начин за подреждане на фигурките, който дава максимално късна загуба (моментът, когато част от някоя фигурка стърчи над полето).

    Форматиран като последователност от позицията, на която да бъде пуснат най-левия край на всяка фирурка.

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

    Реализация

    Една възможна реализация включва Beam search, подходяща евристична функция, евентуална конкурентност.

  2. Не е лошо. Но за да е интересно на някого ще трябва да има някакъв визуализатор на случилото се решение. Нещо кат replay на намереното решение. Също така, забелязвам че никъде не говориш за въртене. Може би да покажеш конкретен пример за вход и изход.

    Също така, мислил ли си за решение на реалната игра? Решение за streaming входни данни. Където алгоритъма ти знае само за следващите няколко фигури. Следващите идват след всяка поставена. В нормалния играча не знае нищо повече от следващата фигура. В някои версии не знае дори и нея.

  3. Завъртане

    Изпуснал съм да спомена, завъртането също ще се вземе предвид естествено. Фигурите имат <=4 завъртания и като част от изхода ще се знае за всяка фигурка коя ротация трябва да се използва.

    Подпъхване

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

    Игра наживо

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

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

    Визуализация

    Съгласен съм да направя визуализация (с ebiten например), като фокуса все пак ще бъде върху основната логика.

Трябва да сте влезли в системата, за да може да отговаряте на теми.