Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 24

Тема: Генератор лабиринтов

  1. #1
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,497
    Благодарностей: 668
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Генератор лабиринтов

    Представляю свою программу - "Генератор лабиринтов для ZX Spectrum". Прога для PC, см. файл.
    Написал на основе наших бдений: http://zx.pk.ru/showthread.php?t=1394&page=9

    Возможности программы:

    - генерация лабиринта размером от 3х3 до 128х128 клеток, количество клеток по горизонтали и вертикали может отличаться друг от друга;
    - из любой точки лабиринта в другую любую точку можно пройти только одним путем;
    - сгенерированный лабиринт показывается на экране;
    - готовый лабиринт выводится в файл labirint.txt в виде блоков defb для вставки в любые ассемблерные программы на ZX Spectrum;
    - лабиринт может состоять из различных элементов: коридоров, стен двух типов, залов, колонн в залах, врагов, аптечек. Названия элементов условные, в выходном файле не учитываются. Записываются только их шестнадцатеричные коды;
    - границы лабиринта всегда состоят из сплошных стен;
    - можно регулировать различные параметры генерации: правила построения коридоров, вероятности появления каждого элемента;
    - можно переопределять шестнадцатеричные коды для каждого элемента;
    - можно кодировать лабиринт по 1 клетке на байт или по 2 клетки на байт.
    Вложения Вложения
    Формально всё правильно, а по существу - издевательство (В.И.Ленин)

  2. Эти 3 пользователя(ей) поблагодарили Andrew771 за это полезное сообщение:
    hobot (03.11.2012), SaNchez (04.11.2012), TomCaT (26.08.2011)

  3. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  4. #2
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,497
    Благодарностей: 668
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если лабиринт закодирован по 2 клетки на байт, то вот процедурки для чтения и записи по нужному адресу и полубайту. В них длина лабиринта по горизонтали 128 клеток, ширина по вертикали произвольная. Длину легко можно поменять.

    Код:
    
    BEGLAB          EQU     ...                     ; адрес начала лабиринта
    
    
    ; получение значения клетки по логическим координатам
    ; входные параметры: B = вертикальная координата в лабиринте, C = горизонтальная координата в лабиринте
    ; выходной параметр: A = элемент лабиринта (биты 0-3)
    
    GETKL		LD	H,B			; расчет логического адреса клетки
    		LD	L,0
    		SRL	H
    		RR	L
    		LD	B,0
    		ADD	HL,BC
    
    		SRL	H			; расчет физического адреса клетки в памяти
    		RR	L
    		LD	BC,BEGLAB
    		JP	C,GETKL1		; если нечетный логический байт, то вторая половина физического байта
    
    		ADD	HL,BC			; достаем клетку лабиринта
    		LD	A,(HL)
    		RRCA
    		RRCA
    		RRCA
    		RRCA
    		AND	#0F
    		RET
    
    GETKL1		ADD	HL,BC
    		LD	A,(HL)
    		AND	#0F
    		RET
    
    
    
    ; занесение в клетку заданного значения по логическим координатам
    ; входные параметры: B = вертикальная координата в лабиринте, C = горизонтальная координата в лабиринте, A = элемент лабиринта (биты 0-3)
    ; выходных параметров нет
    
    PUTKL		LD	H,B			; расчет логического адреса клетки
    		LD	L,0
    		SRL	H
    		RR	L
    		LD	B,0
    		ADD	HL,BC
    
          		SRL	H			; расчет физического адреса клетки в памяти
    		RR	L
    		LD	BC,BEGLAB
    		JP	C,PUTKL1		; если нечетный логический байт, то вторая половина физического байта
    
    		ADD	HL,BC			; достаем клетку лабиринта
    		RLCA
    		RLCA
    		RLCA
    		RLCA
    		LD	C,A
    		LD	A,(HL)
    		AND	#0F
    		OR	C
    		LD	(HL),A
    		RET
    
    PUTKL1		ADD	HL,BC
    		LD	C,A
    		LD	A,(HL)
    		AND	#F0
    		OR	C
    		LD	(HL),A
    		RET
    Формально всё правильно, а по существу - издевательство (В.И.Ленин)

  5. #3
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,497
    Благодарностей: 668
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Maze generation for ZX Spectrum
    English version
    Вложения Вложения
    Формально всё правильно, а по существу - издевательство (В.И.Ленин)

  6. #4
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,363
    Благодарностей: 705
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Andrew771, под какое разрешение написана твоя программа?
    у меня окно в экран не лезет
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  7. #5
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,497
    Благодарностей: 668
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    Andrew771, под какое разрешение написана твоя программа?
    у меня окно в экран не лезет
    1280х1024. С трудом влезает в 1024х768.
    Формально всё правильно, а по существу - издевательство (В.И.Ленин)

  8. #6
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,363
    Благодарностей: 705
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Andrew771, ну да у меня 1024х768
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  9. #7
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,497
    Благодарностей: 668
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я вообще-то эти программы (3D-View и Генератор лабиринтов) писал для разработки ZXOOM, как инструменты. Так что про внешний вид не заморачивался сначала. А потом дошло, что их можно использовать и для других будущих игр.
    Формально всё правильно, а по существу - издевательство (В.И.Ленин)

  10. #8
    goblinish
    Гость

    По умолчанию

    Запустил программу, и оно повисло. надо старое написанное интро переписать.

  11. #9
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,497
    Благодарностей: 668
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goblinish Посмотреть сообщение
    Запустил программу, и оно повисло. надо старое написанное интро переписать.
    Что повисло? Лабиринт вывелся? Ассемблерный код выводится сразу в текстовый файл.
    Формально всё правильно, а по существу - издевательство (В.И.Ленин)

  12. #10
    goblinish
    Гость

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Что повисло? Лабиринт вывелся? Ассемблерный код выводится сразу в текстовый файл.
    сразу при запуске повисло всё.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Генератор плейлистов
    от SGO в разделе Творчество
    Ответов: 8
    Последнее: 24.10.2012, 08:14
  2. Генерация лабиринтов
    от TomCaT в разделе Программирование
    Ответов: 90
    Последнее: 26.06.2012, 08:59
  3. Генератор RND
    от Destr в разделе Программирование
    Ответов: 4
    Последнее: 19.10.2009, 20:16
  4. Ответов: 3
    Последнее: 04.02.2008, 19:06
  5. генератор тора
    от voodoogod в разделе Программирование
    Ответов: 1
    Последнее: 10.03.2005, 20:19

Ваши права

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