RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2426292 views

Использовать статичные картинки - это одно. Создать полноценную графическую игру - другое.

Движки для стратегий есть. Например, Stratagus.

act ‘Выбрать камень’: $player_atack=‘камень’ & ‘Вы выбрали камень’
act ‘Выбрать ножницы’: $player_atack=‘ножницы’ & ‘Вы выбрали ножницы’
act ‘Выбрать бумагу’: $player_atack=‘бумагу’ & ‘Вы выбрали бумагу’
act ‘Ход противника’:
$enemy_atack[0]=‘камень’
$enemy_atack[1]=‘ножницы’
$enemy_atack[2]=‘бумагу’
$result_enemy=$enemy_atack[rand(0,2)]
‘Противник поставил <<$result_enemy>>’
if $result_enemy=$player_atack: ‘Ничья’
if ($result_enemy=‘ножницы’ and $player_atack=‘бумагу’) or ($result_enemy=‘бумагу’ and $player_atack=‘камень’) or($result_enemy=‘камень’ and $player_atack=‘ножницы’): ‘Вы проиграли’
if ($result_enemy=‘бумагу’ and $player_atack=‘ножницы’) or ($result_enemy=‘камень’ and $player_atack=‘бумагу’) or($result_enemy=‘ножницы’ and $player_atack=‘камень’): ‘Вы выиграли’
end

Подскажите на примере, как сделать так, чтобы игра шла до определенного количества побед/поражений? Не знаю как правильно переменные прописать и где)

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

Mergan:

Подскажите на примере, как сделать так, чтобы игра шла до определенного количества побед/поражений?

Выкладываю пример.

snail:

Выкладываю пример.

Большое спасибо)

Как реализовать прочтение письма из инвентаря бесконечное количество раз в любой момент?

Rioka:

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

Предположим, мы хотим, чтобы при выборе предмета «Деньги» появлялась картинка из файла money.png, и всё время играла музыка из файла story.mid. Если бы программу писал я, я сделал бы так:

# Начало
$onobjsel = 'onobjsel'
$counter = 'counter'
addobj 'Деньги'
$music = 'story.mid'
--- Начало ---------------------------------

# counter
if no isplay($music): play $music
--- counter ---------------------------------

# onobjsel
if $selobj = 'Деньги':
	view 'money.png'
	unsel
end
--- onobjsel ---------------------------------

Если что-то неправильно, пусть меня поправят.

Я хочу, чтобы числовая переменная, имела свой аналог в текстовом виде. Короче, я написал так:

Spoiler
$здоровье[10]="Здоров"
$здоровье[9]="Слегка ранен"
$здоровье[8]="Слегка ранен"
$здоровье[7]="Глубокая рана"
$здоровье[6]="Глубокая рана"
$здоровье[5]="Серьезное ранение"

и чтобы потом, вместо <<$здоровье>> были написаны не цифры, а текст. Например, если у персонажа здоровье 7 и переменная соответственно равна 7, то было написано “Глубокая рана”. Но почему-то у меня эта конструкция не работает, хотя вроде как должна. Как надо сделать, чтобы получилось то, что я хочу?

здоровье=7
$здоровье[7]=“Глубокая рана”
$урон=$здоровье[здоровье]
msg ‘<<$урон>>’

Вы меня, судя по всему, не поняли, так как и я вас тоже нет. Мне надо, чтобы вместо чисел отображался текст, чтобы за каждое число, отвечал какой-то свой текст. Кто-то уже задавал этот вопрос, ему ответили, но как всегда трудно найти среди сотен страниц. Надо еще поискать.

Можете посмотреть код? У меня получается что шанс разбудить хозяйку 100%, а должен быть 50 на 50.

if sha=0:
if afk=1:
act "Пробраться в дом и взять еду":
chance=rand(1,2)
end
end
if chance=1:
pl "Вы взяли еду"
addobj "Еда"
eda=1
else
pl "Пол заскрипел, вы разбудили хозяйку, которая выгнала вас из дома"
sha=1
end
end
end

Благодарю :)

RomaDova,
я тоже тебя не понял.

почему-то у меня эта конструкция не работает

Выложи, пожалуйста, код неработающей конструкции.

SneakBug8,
проверку переменной chance и остальное (взять еду либо разбудить хозяйку) нужно переместить внутрь действия “Пробраться в дом и взять еду”.

if sha=0:
	if afk=1:
		act "Пробраться в дом и взять еду":
			chance=rand(1,2)
			if chance=1:
				pl "Вы взяли еду"
				addobj "Еда"
				eda=1
			else
				pl "Пол заскрипел, вы разбудили хозяйку, которая выгнала вас из дома"
				sha=1
			end
		end
	end
end

snail:

RomaDova,
я тоже тебя не понял.

почему-то у меня эта конструкция не работает

Выложи, пожалуйста, код неработающей конструкции.

SneakBug8,
проверку переменной chance и остальное (взять еду либо разбудить хозяйку) нужно переместить внутрь действия “Пробраться в дом и взять еду”.

if sha=0:
	if afk=1:
		act "Пробраться в дом и взять еду":
			chance=rand(1,2)
			if chance=1:
				pl "Вы взяли еду"
				addobj "Еда"
				eda=1
			else
				pl "Пол заскрипел, вы разбудили хозяйку, которая выгнала вас из дома"
				sha=1
			end
		end
	end
end

Thanks. А какой командой можно остановить все звуки в игре?

Так, я это и сделал.

Spoiler

Сначала каждому числу дается свое текстовое пояснение

$здоровье[10]="Здоров" 
$здоровье[9]="Слегка ранен" 
$здоровье[8]="Слегка ранен" 
$здоровье[7]="Глубокая рана" 
$здоровье[6]="Глубокая рана" 
$здоровье[5]="Серьезное ранение"

… и т.д.
В игре будет возможность проверить свое здоровье и если оно полное, то бишь переменная “здоровье” равна 10, то будет написано “Здоров”, если упадет до 5 например, то текстовое значение сменится на “Серьезное ранение”, но это по замыслу. В итоге, у меня постоянно отображается “Мертв”, так как это слово присвоено к $здоровье[0], вне зависимости от того, какой на самом деле уровень здоровья. Конечно все можно было бы сделать так

if здоровье=10:
 msg "Здоров"
end

и т.д., но в некоторых случаях, эта штука слишком громоздкая, а я не люблю огроменные строки кода с незнакомыми операторами - в этой куче трудно найти ошибку. Если на то пошло, там вообще трудно что-то найти.

Log in or Register to post comments.