Генерация подземелий в QBasic с удовольствием

Материал из Клуб любителей рогаликов
Перейти к: навигация, поиск

Я был удивлен, что генерация произвольных темниц легко достигается многократной устанавкой "L" произвольных размеров, каждый с произвольной 90 градусной ориентацией, повсюду на карта. Вот результаты.

Этот метод не гарантирует, что все области - проходимы. Вы получаете много каверн, которые могут быть хорошими или плохими в зависимости от игры...

#####################################################################
#####################################################################
################### ####### ######### ####### ########## # ##########
################### ### ### ########  ####### ### ###### # ##########
########  ######### ### ##   ### ###    ##### ### ###### # ### ######
########      ##    ##  #         ##       ##         #     #  ######
########  ##         #       ###  #            ## ## ### ##   #     #
#####     ##        #                    #  #                 # #####
####     ####  # #  #          #            ###   ## ## #     # #####
######   #                  #  #        ##   #     #    ## #  # #####
####      ##   # ## #  #    #  #       #### #   #             # #####
#####  #  ###  # #                      ### ##  #  ##  #####  #######
#####     ###### #      #      #     #   ##     #  ##  ###     ######
#####         ##       ####     #      #####        ######   #  #####
#####  # ############ ##### #  ## #  # ########### ###########  #####
#####  ############## ########### # ########################## ######
###### ########################## ############################ ######
#####################################################################
#####################################################################

#####################################################################
####### #################### ################################ #######
####### ################ ### ###  ############### ########### #######
####### ############# ## ### ###  ## #### # ##### #### ###### #######
####### ########  ### ## ### ###  ## ###    ### # #### ## ### #######
###     #######   #                          #                    ###
#####  # ###          # ##   ##    # # #                  ##    #####
###                 #     #   ##   #         #              ##   ####
##     # #### #        #   ## #      #       ##     ##  # #      ####
##     # #### #  ##      # ##     ##     # #         #    #  ########
###### #                 # ## #  ###  #  #                #  ########
#######    ####            ##         #                  ##     #####
###########       #### #              #####  ###                  ###
#####    ##      #####     ###                 ##     ####  #   #####
######## ## ##   ######  # ###  ##  ####### #  ###    ####  # # #####
######## ##### # ######  # #### ##  ####### #  ###### ##### #########
######## ####### ################## ####### #  ############ #########
########################################### #########################
#####################################################################

#####################################################################
#####################################################################
######################### #####  ####################################
########################  #####  #############  #####################
####### ###############   #####  ######### ###  # ###################
#####     ### ###### ##    #     # # ## ## ###  # ### ###############
##### # #  #     ###                    #          #     ## ## ######
##### # #         ## ##       ###                    # ####### ######
##### #          ### ##       ###                    #  ######   ####
#####     ###    ##            ####         #  #     ##  ## ### #####
####### #      # ##        #  ## ##     ##  # #      ##    #    #####
####          ## ##        #                #                      ##
######                #     ###           ### ##     ##          ####
######     # #####                  ###   ####     #              ###
###### ##### ##### #### ### ### #   ### ###### ### ######   #  ######
###### ##### ##### #### ### ### ## #### ###### ##########   #  ######
###### ########### ############ ############## ########### ## #######
################## ############ ############## ########### ## #######
#####################################################################
RANDOMIZE TIMER

DIM a(70, 20)

begin:

CLEAR
CLS

FOR l = 1 TO 150
x = INT(RND * 59) + 6
y = INT(RND * 9) + 6
d = INT(RND * 4)
a(x, y) = 1
SELECT CASE d
CASE 0
FOR i = 1 TO INT(RND * 5)
a(x + i, y) = 1
a(x, y - i) = 1
NEXT i
CASE 1
FOR i = 1 TO INT(RND * 5)
a(x + i, y) = 1
a(x, y + i) = 1
NEXT i
CASE 2
FOR i = 1 TO INT(RND * 5)
a(x - i, y) = 1
a(x, y - i) = 1
NEXT i
CASE 3
FOR i = 1 TO INT(RND * 5)
a(x - i, y) = 1
a(x, y + i) = 1
NEXT i
END SELECT
NEXT l

FOR row = 1 TO 19
FOR col = 1 TO 69
IF a(col, row) = 0 THEN
PRINT "#";
ELSE
PRINT " ";
END IF
NEXT col
PRINT
NEXT row

WHILE INKEY$ = ""
WEND

GOTO begin



Автор: R.Alan Monroe.
Источник: неизвестен.
Перевел: Дмитрий О. Бужинский, 28.02.2006.