RU

Апокалипсис 2 игра от Taunco

Дамир Белялов #654 13.01.2013 15:19 20 comments 14557 views

я доделал до конца апокалипсис и теперь хочу создать игру покруче!
помогите мне пожалуйста создать игру жанра Roguelike . Я вас очень прошу о помощи… В серафиме код совсем непонятный так что списать не удалось.

Дамир Белялов #654 24.01.2013 18:16 (13 years ago)

например? хочу сделать так:

### .@#
###
чё писать в коде и как задать движение игроку (@)?

Aleks Versus Moderator 25.01.2013 13:55 (13 years ago)

Тебе нужно разделить задачи. Должно быть как минимум две программы - одна генерирующая уровень, т.е. вписывающая объекты в координатную сетку. Вторая - выводящая объекты в зависимости от того, в каких координатах находится игрок. Генерировать уровень целиком намного эффективнее, поскольку это позволяет помещать на уровне движущиеся объекты. Ещё эффективнее создавать уровни из уже готовых блоков. Например таких:

Spoiler
-----
.....
.....
.....
-----

|...|
|...|
|...|
|...|
|...|

----|
....|
....|
....|
|...|

Это куски коридора, складываются и получается:

Spoiler
---------|
.........|
.........|
.........|
-----|...|
     |...|
     |...|
     |...|
     |...|
     |...|

Можно конечно генерировать уровень на лету, но мне кажется это сложнее.
С выводом всё намного проще. Если ты знаешь, в каких координатах находится герой (X,Y), на экран выводятся символы, например от X-3 до X+3 и Y-3 до Y+3.

Дамир Белялов #654 25.01.2013 14:06 (13 years ago)

а чё в коде? вот проблема! и чё за $object[<<x>><<y>>] ?

Aleks Versus Moderator 25.01.2013 14:08 (13 years ago)

Допустим окружение сгенерировано и находится в массиве $level[’<<X>>,<<Y>>’]. Тогда подпрограмма для вывода будет примерно такой.

Spoiler
killvar '$print'
j=y-3
:fory
if j<y+4:
	i=x-3
	:forx
	if i<x+4:
		$print+=$level['<<i>>,<<j>>']
		i+=1
		jump 'forx'
	end
	j+=1
	if j<y+3: $print+='<br>'
	jump 'fory'
end
*pl $print
Aleks Versus Moderator 25.01.2013 14:14 (13 years ago)

Какой ещё $objects? Где это было?

Положение героя, допустим, хранится в $hero[’X’] и $hero[’Y’]. В предыдущий код достаточно добавить условие, которое будет проверять находится ли герой в указанных координатах и выводить его символ или символ окружения в зависимости от результатов условия.

Добавлено: В коде наврал. Там должен быть перевод строки, щас добавлю.

Log in or Register to post comments.