powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Баловство, sokoban.
4 сообщений из 4, страница 1 из 1
Баловство, sokoban.
    #37299536
Onix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Раз пошла такая пианка, выкладываю 1й уровень сокобан(если кто понит) игрушка такая была.
...
Рейтинг: 0 / 0
Баловство, sokoban.
    #37300828
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под каше не запускается.
...
Рейтинг: 0 / 0
Баловство, sokoban.
    #37301450
Onix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,

Исправил, видимо ругалось на мнемонику /ATR , остатки мсм )) и N c=чтототам
каше к сожалению под рукой нет.
...
Рейтинг: 0 / 0
Баловство, sokoban.
    #37303248
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще # в числе каше не понимает, заменил на $zhex
В итоге текст программы для кашеSOKOBAN ;по мотивам статьи  http://habrahabr.ru/blogs/linux/120198/
 ;#Компьютерная игра Sokoban
 ;#Определим карту как массив
 S ^map(1,1)="####################"
 S ^map(1,2)="####################"
 S ^map(1,3)="#####___############"
 S ^map(1,4)="#####=__############"
 S ^map(1,5)="#####__=############"
 S ^map(1,6)="###__=_=_###########"
 S ^map(1,7)="###_#_##_###########"
 S ^map(1,8)="#___#_##_######__oo#"
 S ^map(1,9)="#_=__=___________oo#"
 S ^map(1,10)="#####_###_#_###__oo#"
 S ^map(1,11)="#####_____##########"
 S ^map(1,12)="####################"
 S ^map(1,13)="####################"
 S ^map(1,14)="####################"
 S ^map(1,15)="####################"
 S ^map(1,16)="####################"
 S ^map(1,17)="####################"
 S ^map(1,18)="####################"
 S ^map(1,19)="####################"
 S ^map(1,20)="####################"
 K map
 M map=^map(1)
 ;#И зададим начальные координаты грузчика
 ;#установим счетчик цикла (а за одно размер игровой карты)
 S x=9,y=11,LIMIT=20,NL=1,B=""
 ;#Очистим экран, выключим ехо на екране если каще ЕСНО не помнимает закоментировать
 W # U 0:(/ECHO=0)
 ;#За одно выведем всякую полезную информацию
 W /CUP(22,2),"W-up,S-down,Q|A-left,E|D-right,X-exit"  ; ",N-level+1"
 ;W /CUP(23,2),"blue-wall, green-hero, magenta and @ - chest, o - place for chest"
 ;#И перейдем к главному циклу
 F  Q:B="x"  D SKBLOOP
 Q
 ;
SKBLOOP ;
 ;#Выведем карту на экран
 ;Скрыть курсор Esc[?25l
 ;Показать курсор Esc[?25h
 W $c(27),"[?25l"
 F my=1:1:LIMIT F mx=1:1:LIMIT D
 .  N c S c=$E(map(my),mx)
 .  W /CUP(my,mx) D ATR(07)
 .  I c="#" D ATR(44) ;стена синий
 .  I c="=" D ATR(55) ;ящики магента
 .  I c="@" D ATR(66) ;ящики на месте
 .  I c="_" S c=" "   ;пробельный знак
 .  W c D ATR(07)
 W $c(27),"[?25h"
 ;
 ;#И наконец - героя (чтобы курсор моргал в том месте, где он стоит)
 W /CUP(y,x) D ATR(22) W "X",/CUP(y,x) D ATR(07)
 ;#И прочитаем один символ
 S B="" R B#1 ;
 ;#Сбросим переменные, в которые будем сохранять относительное перемещение грузчика
 S nx=0,ny=0
 ;#Пришло время узнать, в какую сторону пользователь хочет переместить грузчика
 I "wW"[B S ny=-1
 I "sS"[B S ny=+1
 I "aAqQ"[B S nx=-1
 I "dDeE"[B S nx=+1
 I "xX"[B S B="x"
 ;#Найдем координату клетки, на которую грузчик хочет перейти И сразу - следующую за ней
 S rx=x+nx,ry=y+ny,r2x=x+nx+nx,r2y=y+ny+ny
 ;
 ;#Если в этой клетке пусто, то, можно смело менять координаты
 I $E(map(ry),rx)="_" S x=x+nx,y=y+ny
 ;#По местам для сундуков тоже можно ходить
 I $E(map(ry),rx)="o" S x=x+nx,y=y+ny
 ;#Ага, а что если ящик?Если за ящиком пусто, то можно двигать
 I $E(map(ry),rx)="=",$E(map(r2y),r2x)="_" S $e(map(r2y),r2x)="=",$E(map(ry),rx)="_",x=x+nx,y=y+ny
 ;#Если место для ящика свободно - тоже можно двигать
 I $E(map(ry),rx)="=",$E(map(r2y),r2x)="o" S $e(map(r2y),r2x)="@",$E(map(ry),rx)="_",x=x+nx,y=y+ny
 ;#Столкнулись с ящиком, который стоит на месте,Если за ним пусто - значит, сдвинем ящик
 I $E(map(ry),rx)="@",$E(map(r2y),r2x)="_" S $e(map(r2y),r2x)="=",$E(map(ry),rx)="o",x=x+nx,y=y+ny
 ;#Если за ним другое место - то тоже сдвинем
 I $E(map(ry),rx)="@",$E(map(r2y),r2x)="o" S $e(map(r2y),r2x)="@",$E(map(ry),rx)="o",x=x+nx,y=y+ny
 ;
 ;#Возвращаемся к выводу на экран и опросу клавиатуры
 Q
 ;
ATR(n) ; Set symbol attributes using one byte
 s n=$zhex(n_"h")
 W $c(27,91),(6-(n\128#2)),";",(2-(n\8#2)),";",(n#8+30),";",(n\16#8+40)_"m"
 Q
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Баловство, sokoban.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]