-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6 from FinemechanicPub/dev
Update
- Loading branch information
Showing
20 changed files
with
235 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Система решения головоломок типа замощения плитками | ||
|
||
Основная процедура решения головоломки находится в модуле [solver.py](solver.py) и реализвана в виде функции-генератора `solutions`. | ||
|
||
Для получения решения функции передаются объект доски `board` и набор фигур `piece_set`. | ||
|
||
Объект доски типа [Board](board.py) хранит размеры доски и двоичную маску занятых ячеек. Маска представляет собой целое число, при этом установленный бит соответствует занятой ячейке доски, а погашенный - свободной. Битовая маска получается построчной разверткой ячеек доски сверху вниз и слева направо. Младший бит соответствует правому нижнему углу доски. Ячейки могут быть заняты блоками, создаваемыми вместе с игрой, или установленными игроком фигуарми. | ||
|
||
Набор фигур содержит все возможные маски всех фигур во всех доступных ориентациях. Маска фигуры представляет собой целое число, которое при совмещении с маской доски с помощью операции побитового **ИЛИ** отметит ячейки, в которые устанавливается фигура, как занятые. | ||
|
||
Набор фигур организован в ввиде списка элементов по числу доступных для установки фигур. Каждый элемент в свою очередь представляет собой список длиной равной количеству ячеек на доске. Для каждой позиции в наборе хранится список масок фигур, которые можно установить в данную позицию (без учета наложения на уже установленные фигуры). | ||
|
||
При такой схеме хранения могут быть заранее исключены из рассмотрения варианты установок фигур, при которых фигура выходит за границы доски или образует собой вместе с границей доски незаполняемую пустую область. | ||
|
||
Алгоритм решения устроен по принципу последовательного перебора с ранним возвратом. На каждом шаге проверяется возможность установить очередную ориентацию очередной фигуры в первую свободную ячейку доски. В случае успеха, фигура фиксируется на доске и перебор продолжается для следующей свободной ячейки. Если никакую фигуру установить невозможно происходит возврат: последняя установленная фигура снимается с доски и перебор продолжается так, как будто её установка была неудачной. | ||
|
||
Если после очередного шага алгоритма вся доска оказывается заполненной, список фигур с позициями их установки выдается в качестве решения. |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
{"name":"Polimino puzzle game","short_name":"Puzzle","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} | ||
{"name":"Polimino puzzle game","short_name":"Puzzle","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"purple","background_color":"white","display":"standalone"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,9 @@ | |
</script> | ||
|
||
<style src="vue3-tour/dist/vue3-tour.css"> | ||
</style> | ||
|
||
<style scoped> | ||
header{ | ||
display: flex; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
<script setup> | ||
import { computed } from 'vue'; | ||
const props = defineProps({ | ||
hasHint: Boolean, | ||
hasPieces: Boolean | ||
}) | ||
const options = { | ||
useKeyboardNavigation: true, | ||
highlight: true, | ||
labels: { | ||
buttonSkip: 'Пропустить', | ||
buttonPrevious: 'Назад', | ||
buttonNext: 'Вперед', | ||
buttonStop: 'Закончить' | ||
} | ||
} | ||
const steps = computed(() => [ | ||
{ | ||
target: '#board', | ||
header: { | ||
title: 'Доска', | ||
}, | ||
content: "Все ячейки доски нужно закрыть фигурами без наложения одной на другую.", | ||
}, | ||
{ | ||
target: '#palette', | ||
header: { | ||
title: 'Магазин фигур' | ||
}, | ||
content: "Здесь лежат все доступные фигуры. Фигура устанавливается на доску перетаскиванием.", | ||
params:{ | ||
highlight: props.hasPieces | ||
} | ||
}, | ||
{ | ||
target: 'div.palette-item, #palette', | ||
content: "Если навести курсор на фигуру, появятся кнопки вращения и переворота. Вращение и переворот доступны не для всех фигур.", | ||
params:{ | ||
highlight: props.hasPieces | ||
} | ||
}, | ||
{ | ||
target: 'div.square:nth-child(1)', | ||
content: "Чтобы удалить фигуру с доски обратно в магазин, щелкните по любой её клетке.", | ||
params: { | ||
highlight: false | ||
} | ||
}, | ||
{ | ||
target: '#hintbox', | ||
header: { | ||
title: 'Робот' | ||
}, | ||
content: "Робот умеет решать головоломки, он может подсказать хороший ход." | ||
}, | ||
{ | ||
target: '#robotmove', | ||
content: props.hasHint ? "Если нажать на эту кнопку, робот поставит подходящую фигуру на доску." : "Сейчас у робота нет подсказок, поэтому кнопка хода роботом 🆗 скрыта.", | ||
params: { | ||
highlight: props.hasHint | ||
} | ||
}, | ||
{ | ||
target: '#robotswitch', | ||
content: "С помощью этой кнопки подсказки робота можно включать и отключать." | ||
}, | ||
{ | ||
target: '#info', | ||
content: "Чтобы посмотреть инструкции ещё раз, нажмите кнопку ℹ️ снова." | ||
} | ||
] | ||
) | ||
</script> | ||
|
||
<template> | ||
<v-tour name="gameTour" :steps="steps" :options="options"></v-tour> | ||
</template> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,6 +16,7 @@ | |
<style scoped> | ||
.palette-item{ | ||
align-content: center; | ||
height: fit-content; | ||
} | ||
</style> | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.