Понедельник, 16.12.2024, 17:54
Приветствую Вас Гость | RSS

 
 

Анти случайный математический сайт: всё Бесплатно 18+ kenokeno.ucoz.ru

Anti chaotically math site all FREE against losses против проигрышей 18+

 
Карта мира Пирамида Жизни Визуальная математика Всеобуч CoronaVirus

карта статистики посетителей & исследования и конкурсы бесплатные & ВКонтакте & Математический Блог & КеноКено & КЕНО ЮТЮБ KENO mini YOUTUBE

БЕЗ рекламы БЕЗ партнёрских БЕЗ рефералов NO advertising NO partners NO referrals pas de publicite pas de partenaires pas de references

Ссылки внутри страниц открываются в новой вкладке Links inside pages open in a new tab of browser

КЕНО ЮТЮБ KENO mini YOUTUBE КЕНО ЮТЮБ KENO mini YOUTUBE КЕНО ЮТЮБ KENO mini YOUTUBE КЕНО ЮТЮБ KENO mini YOUTUBE КЕНО ЮТЮБ KENO mini YOUTUBE КЕНО ЮТЮБ KENO mini YOUTUBE КЕНО ЮТЮБ KENO mini YOUTUBE КЕНО ЮТЮБ KENO mini YOUTUBE КЕНО ЮТЮБ KENO mini YOUTUBE

Просвещение России содержит гигантский пробел:
интегралы в любом виде в младшей школе не изучаются

даже словами отличными от слова "интеграл": "сбор"
в то время как интеграл в жизни ежесекундно: и одежда
и продукты и выбор в магазине и транспортная задача

ведь понимая интегральную суть человек сравнивает
без расчётов в уме и делает оптимальный выбор

ключевые 27

свои чужие другие
актив пассив экономия
лидер ведомый жертва
жизнь машина язык
цель время контроль
услуга товар качество
экспорт эксплуатация технология
интеграл логарифм производная
элита антиэлита приоритет

 

keywords 27

ours aliens others
active passive saving
leader slave victim
life machine language
target time control
service goods quality
export exploitation technology
integral logarithm derivative
elite antielite priority

 

 

Россия видит мир из будущего

Russia looks world from future

Rossiya vidit mir iz buduschego

IQ бесплатно Яндекс.Метрика

всегда пишу только про себя и никогда никому ничего не рекомендую

i always write only about myself and anything to anyone never recommend

мен әрқашан тек өзіме жазамын және ешқашан ешкімге ештеңе ұсынбаймын

завжди пишу тільки про себе і ніколи нікому нічого не рекомендую

web.archive.org/web/20230602154543///kenokeno.ucoz.ru/publ/

ich schreibe immer nur über mich selbst und empfehle niemandem etwas

j'écris toujours seulement sur moi-même et je ne recommande

mi ĉiam skribas nur pri mi mem kaj neniam rekomendas ion al iu

siempre escribo solo para mí y nunca recomiendo nada a nadie

web.archive.org/web/20230602152617///kenokeno.ucoz.ru/load/

 

Главная | Регистрация | Вход

 
Главная » 2022 » Декабрь » 22 » Лабиринт MazeLab
12:24
Лабиринт MazeLab

Лабиринт MazeLab

Игра в лабиринт QB64 автоматизирована мной и сама играет 
несколько вариантов: ходы по списку MazeCode 
или ходы случайные MazeStep или ходы оптимальные MazeLab 
и вдобавок MazeRnd синтезирует случайные лабиринты 

MAZErnd.bas = случайные 
MAZElab.bas = правильно 
MAZEkino.bas = смена 
MAZEcode.bas = коды
MAZEstep.bas = ходы

MazeBall & DAV & Danilin Solve of Labyrinth = https://qb64phoenix.com/forum/showthread.php?tid=3063 

Новейшая программа MazeLab решает лабиринты 
задавая следующий ход зависящий от хода предыдущего 
и от вида препятствия пещеры: стена или угол  

Если препятствие без угла тогда выбор направления случайный 
перпендикулярно и начальное направление случайное 
и из тупика выходит обратно плюс есть время и контроль 

 

  

Кодировка направления дальновидная 0 > / 1 < / 2 V / 3 ^ 
для выбора случайного направления вида 2 + Int(Rnd * 2)
показывает вероятность выигрыша 2 в степени свободных ходов 
и вероятность 1/64 реально трудная 

Причём случайные ходы могли создать ходов шифр не подряд 

Создан внутренний массив и каждое перемещение до стены 
проверяют 4 * 4 = 16 условий и встроена мини карта массива 
плюс возможно настроить ходы назад если стена 

Программировал буквально 1 день введя контрольные точки 

Начальный лабиринт 7-й уменьшается до 1-го и далее 10-й 

Ранние версии программы добавлю в тему позже 
где давно у меня шар оставляет следы на поле 

Возможно создавать свои лабиринты и решать задав номер 
и наверняка возможны случайные лабиринты пещеры 

Весело смотреть как программа заходит не в ту дверь 
сразу или на крайних очевидных ходах 
и лабиринты из книг ещё не проверял 

На другие языки проще перевести мой алгоритм массива с мини картой 

В принципе реально проверять массив 
если проходили угол 3-жды значит тупик стартовать заново 

Версия MazeRnd синтезирует случайный лабиринт каждый раз 
и в принципе легко настроить повторение лабиринта несколько раз
если вместо обнуления массивов добавлять в конец и не учитывать 

Версия для Эксцель Excel программируется легко наверняка 

Принципы похожи на XONIX

https://qb64phoenix.com/forum/showthread.php?tid=519
XONIX https://kenokeno.ucoz.ru/blog/xonix/2022-10-14-90

 

 

Автоматизация лабиринта MazeRND

Реально шарик летает безцельно 
и звезда пересекается случайно 

Автор программы зашифровал лабиринт в строку 

'x is wall & b is ball & y is star
If puzzle=11 Then
    puz$="": grid=8
    puz$=puz$+"xxxxxxxx"
    puz$=puz$+"x   xb x"
    puz$=puz$+"x   yx x"
    puz$=puz$+"x  xx  x"
    puz$=puz$+"x      x"
    puz$=puz$+"x      x"
    puz$=puz$+"x      x"
    puz$=puz$+"xxxxxxxx"
End If

Стартуем переменные и строим стенки пустого лабирита 
где delta - направление движения 0 > / 1 < / 2 V / 3 ^ 

Dim d(22, 22), m(22, 22): m$="": all=0: Randomize Timer
delta=Int(Rnd*4): puz$="": grid=Int(Rnd*7)+8: f=grid 

For a=1 To f: m(1, a)=1: m(f, a)=1: Next
For a=2 To f-1: m(a, 1)=1: m(a, f)=1:
    For b=2 To f-1: m(a,b)=0
Next: Next

Заполняем 20% стен и ставится звезда и шарик 
и суммируется строка puz$

or i=1 To .2*f^2 : m(Rnd*f, Rnd*f)=1: Next

m(Rnd*(f-3)+2, Rnd*(f-3)+2)=2 ' y
m(Rnd*(f-3)+2, Rnd*(f-3)+2)=3 ' b

For a=1 To f: For b=1 To f ': Print m(a,b);
    If m(a,b)=1 Then m$=m$+"x"
        If m(a,b)=0 Then m$=m$+" "
        If m(a,b)=2 Then m$=m$+"y"
        If m(a,b)=3 Then m$=m$+"b"
Next: Next: puz$=m$

Чтобы дальше разобрать puz$ в малый лабиринт слева 

Locate 5, 1: For ii=1 To grid-0: For jj=1 To grid  
    If Mid$(puz$, (ii-1)*grid+jj, 1)="b" Then yy=ii+1: xx=jj: jj=jj+1: ky=yy: kx=xx
        If Mid$(puz$, (ii-1)*grid+jj, 1)="x" Then d(ii,jj)=1 Else d(ii,jj)=0
Next: Print: Next: 'ky=cY: kx=cX 

Locate 4, 1: For qqq=1 To grid-0: For www=1 To grid
    l$=Mid$(Str$(d(qqq, www)), 2, 1)
    If l$="1" Then Print l$; Else Print " "; 
    Next: Print
Next: Locate 3+cY, cX: Print "@"

Новый путь выбирают 16 условий и здесь 1 пример 

For x=cX+1 To grid+1
'if come to wall... -> | izm x+  cst y
    If pdata$(cY, x)="x" Then
    ballx=ballx+x2  
    ay=cY-1: by=cY+1: kx=x-1 
    If d(ay, kx)=0 Then If d(by, kx)=0 Then delta=2+Int(Rnd*2)
    If d(ay, kx)=1 Then If d(by, kx)=0 Then delta=2 ' V
    If d(ay, kx)=0 Then If d(by, kx)=1 Then delta=3 ' ^
    If d(ay, kx)=1 Then If d(by, kx)=1 Then delta=1 ' <
    _Display: GoTo moved 
    End If
End If

То бишь автоматизация включается когда шарик у стены 

На другие языки реально перенести мой малый лабиринт 
без оформления графики 

Практически игра Змейка в лабиринте 

Далее версия кодов ходов и вспомнилась автоматизированная 
мной игра 1980-х где персонаж собирает призы избегая врагов 

Коды ходов задаются с целью избежать повтора хода 
чтобы назад казалось бы не ходить 
однако шарик в углу поворачивает не туда и летит назад 

ok$ = "": no = Int(Rnd*4): no$ = Str$(no)
sum = 66 + puzzle*8: damax = sum 
For jj = 1 To damax: ch = Int(Rnd*2)
    If no = 0 And ch = 0 Then da = 2
    If no = 0 And ch = 1 Then da = 3
    If no = 1 And ch = 0 Then da = 2
    If no = 1 And ch = 1 Then da = 3
...
    da$ = Str$(da): ok$ = ok$ + Mid$(da$, 2, 1)
    no$ = da$: no = da
Next

Чтобы смотрелось веселее начальные уровни 7 и 8 
выигрываются подставив внезапно правильные шифры 

If puzzle = 7 Then ok$ = "203121302031202203121302031202203121302031202203121302"
If puzzle = 8 Then ok$ = "021213121303031202021213121303031202021213121303031202"

и далее уровни простые 6 5 4 3 2 1 и далее уровень 10 трудный 
зато версия MazeKINO меняет авторские уровни случайно 
puzzle = 1 + Int(Rnd*10)

Считываем текущий код хода 

delta = Val(Mid$(ok$, damax - sum, 1))

без контроля при достижении стенки 
и счётчик ходов показывает 2 в степени вариантов поворотов

Даже трудный уровень решают 66000 ... 78000 ходов 
 

 

MazeLab

Maze game is automated by me and plays
several options itself: moves according to MazeCode list
or random moves MazeStep or optimal moves MazeLab
and in addition MazeRnd synthesizes random mazes

Newest DAV & Danilin MazeLab program solves mazes 
by setting next move depending on move of previous one 
and depending on type of obstacle in cave: a wall or a corner  

If obstacle has no angle then choice of direction is random
perpendicular and initial direction is random
and comes out of dead end back plus there is time and control 

Forward-looking direction encoding 0 > / 1 < / 2 V / 3 ^ 
to choose a random direction of form 2 + Int(Rnd * 2)
shows probability of winning 1/2 ^ of free moves
and probability 1/64 is really difficult 

Former version of random moves could create 
a cipher of moves not in a row 

An internal array has been created and each movement to wall
is checked by 4 * 4 = 16 conditions and a mini array map is built in 
plus it is possible to set up moves back if wall 

I programmed literally for 1 day by entering control points 

Initial 7th maze is reduced to 1st and then 10th 
puzzle = 5 ... puzzle = puzzle - 1 ... 
If puzzle < puzzlemax Then ... puzzle = 10

I will add early versions of program to topic later 
Where has ball been leaving traces on field for a long time 

It is possible to create your own mazes and solve them by setting a number
 and for sure random cave mazes are possible 

It's fun to watch program walk through wrong door 
immediately or on most obvious moves 
And I haven't checked mazes from books yet 

It is easier to translate my algorithm with array & minimap into other languages 

In principle it is realistic to check array 
if you passed corner of 3rd in row 
it means a dead end to start again

MazeRnd version synthesizes a random maze every time
and, in principle, it is easy to set up repetition of maze several times
if instead of zeroing arrays add to end and do not take into account
 

  

Excel version is easy to program for sure

Principles are similar to XONIX
https://qb64phoenix.com/forum/showthread.php?tid=519
XONIX https://kenokeno.ucoz.ru/blog/xonix/2022-10-14-90
 


Automation of MazeRND maze

In reality ball flies aimlessly
and star intersects randomly 

author of program encrypted maze into a string

'x is wall & b is ball & y is star
If puzzle=11 Then
    puz$="": grid=8
    puz$=puz$+"xxxxxxxx"
    puz$=puz$+"x   xb x"
    puz$=puz$+"x   yx x"
    puz$=puz$+"x  xx  x"
    puz$=puz$+"x      x"
    puz$=puz$+"x      x"
    puz$=puz$+"x      x"
    puz$=puz$+"xxxxxxxx"
End If

We start variables and build walls of an empty maze
where delta is direction of movement 0 > / 1 < / 2 V / 3 ^

Dim d(22, 22), m(22, 22): m$="": all=0: Randomize Timer
delta=Int(Rnd*4): puz$="": grid=Int(Rnd*7)+8: f=grid 

For a=1 To f: m(1, a)=1: m(f, a)=1: Next
For a=2 To f-1: m(a, 1)=1: m(a, f)=1:
    For b=2 To f-1: m(a,b)=0
Next: Next

We fill 20% of walls and put a star and a ball
and add up string puz$

For i=1 To .2*f^2 : m(Rnd*f, Rnd*f)=1: Next

m(Rnd*(f-3)+2, Rnd*(f-3)+2)=2 ' y
m(Rnd*(f-3)+2, Rnd*(f-3)+2)=3 ' b

For a=1 To f: For b=1 To f ': Print m(a,b);
    If m(a,b)=1 Then m$=m$+"x"
        If m(a,b)=0 Then m$=m$+" "
        If m(a,b)=2 Then m$=m$+"y"
        If m(a,b)=3 Then m$=m$+"b"
Next: Next: puz$=m$

To further disassemble puz$ into small maze on left

Locate 5, 1: For ii=1 To grid-0: For jj=1 To grid  
    If Mid$(puz$, (ii-1)*grid+jj, 1)="b" Then yy=ii+1: xx=jj: jj=jj+1: ky=yy: kx=xx
        If Mid$(puz$, (ii-1)*grid+jj, 1)="x" Then d(ii,jj)=1 Else d(ii,jj)=0
Next: Print: Next: 'ky=cY: kx=cX 

Locate 4, 1: For qqq=1 To grid-0: For www=1 To grid
    l$=Mid$(Str$(d(qqq, www)), 2, 1)
    If l$="1" Then Print l$; Else Print " "; 
    Next: Print
Next: Locate 3+cY, cX: Print "@"

New way is chosen by 16 conditions and here is 1 example

For x=cX+1 To grid+1
'if come to wall... -> | izm x+  cst y
    If pdata$(cY, x)="x" Then
    ballx=ballx+x2                
    ay=cY-1: by=cY+1: kx=x-1 
    If d(ay, kx)=0 Then If d(by, kx)=0 Then delta=2+Int(Rnd*2)
    If d(ay, kx)=1 Then If d(by, kx)=0 Then delta=2 ' V
    If d(ay, kx)=0 Then If d(by, kx)=1 Then delta=3 ' ^
    If d(ay, kx)=1 Then If d(by, kx)=1 Then delta=1 ' <
    _Display: GoTo moved 
    End If
End If

That is automation turns on when ball is against wall 

It's really possible to transfer my small maze to other languages
without graphics design 

It's practically a Snake game in a Maze 

Next version of move codes and automated one came to mind 
I'm a 1980s game where a character collects prizes while avoiding enemies


Move codes are set in order to avoid repeating move
so that it would seem not to go back
but ball in corner turns wrong way and flies back

ok$ = "": no = Int(Rnd*4): no$ = Str$(no)
sum = 66 + puzzle*8: damax = sum 
For jj = 1 To damax: ch = Int(Rnd*2)
    If no = 0 And ch = 0 Then da = 2
    If no = 0 And ch = 1 Then da = 3
    If no = 1 And ch = 0 Then da = 2
    If no = 1 And ch = 1 Then da = 3
...
    da$ = Str$(da): ok$ = ok$ + Mid$(da$, 2, 1)
    no$ = da$: no = da
Next

To make it look more fun initial levels 7 and 8 
they are won by suddenly substituting correct ciphers

If puzzle = 7 Then ok$ = "203121302031202203121302031202203121302031202203121302"
If puzzle = 8 Then ok$ = "021213121303031202021213121303031202021213121303031202"

And then levels are simple 6 5 4 3 2 1 and then level 10 is difficult
but MazeKINO version changes author's levels randomly
puzzle = 1 + Int(Rnd*10)

Reading current step code 

delta = Val(Mid$(ok$, damax-sum, 1))

without control when wall
is reached and stroke counter shows 2 to degree of turn options

Even a difficult level is solved with 66000 ... 78000 moves

 

 

Просмотров: 118 | Добавил: DANILIN | Рейтинг: 0.0/0
Всего комментариев: 0

Форма входа

Поиск

Календарь

«  Декабрь 2022  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
262728293031

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0
Карта мира


Данный сайт: личный дневник, созданный в развлекательных целях.
Данный сайт средством массовой информации не является.
Данный сайт азартные игры не пропагандирует и игры не организует.
Данный сайт ставки не принимает и выигрыши не выплачивает.
Данный сайт никакие платные услуги не предоставляет.
Данный сайт никакие персональные данные не собирает.

Сайт и автор за упущенную выгоду ответственность не несёт.
Сайт и автор за возможные убытки ответственность не несёт.

Файлы имеют цель: приоритет открытий, изобретений, формул и творчества
и тексты выражают субъективные оценочные суждения без упоминания имён.

На сайте никакие иностранные агенты не упоминаются.
На сайте никакие запрещённые организации не упоминаются.

Все тексты юридической силы не имеют и служить доказательством в суде не могут.
Все формулы возможно вывести самостоятельно и ответ автора сайта не нужен.
Тексты возможно озвучить через синтезатор речи и слушать.
18+ web.archive.org/web/20230602152617///kenokeno.ucoz.ru/load/?page2


This site: personal diary created for entertainment purposes.
This site is not a media outlet.
This site promote does not and gambling not organize.
This site bets does not accept and winnings does not pay out.
This site any paid does services not provide.
This site any personal data does not collect.

Site and author for lost profits are not responsible.
Site and author for possible losses are not responsible.

Files have a target: priority of discoveries, inventions, formulas, and creativity
and texts express subjective value judgments without mentioning any names.

On this site none foreign agents don't mentioned.
On this site none prohibited organizations don't mentioned.

All texts have no legal force and as evidence in court cannot serve.
All formulas can be deduced independently & response of site author is not required.
Texts can be voiced through a synthesizer and listened to.
18+ web.archive.org/web/20230602154543///kenokeno.ucoz.ru/publ/?page2


Бесплатный конструктор сайтов - uCozЯндекс.Метрика