Показать сообщение отдельно
Старый 17.06.2006, 13:13   #20
Devastator
Отличник форума
 
Регистрация: 18.10.2005
Адрес: Пермь
Сообщений: 273
По умолчанию

Ща стала актуальна тема казино в маде так вот
нашел статейку
Поговорим немного о совсем необязательных, но весьма приятных штуках, которые позволяет написать JS. Допустим у Вас много свободного времени, когда Вам нечем заняться. Можно ведь попробовать развлечь себя и других, ведя какую-нибудь из старых добрых игр =) Например, наперстки. Если мне не изменяет память, то правила такие: берутся 3 наперстка, под один кладется горошина, потом наперсти двигают, а игроки угадывают, под каким же лежит горошина. Сие можно делать руками, но это не наш путь. Напишем простой скриптик, используя генератор случайных чисел, но сначала триггеры.

#var startgame 0

#action {произносит: 'Поехали!'} {#if {$startgame != 1} {#scri start_thimble()}} {games}
#action {/^(\w+) произносит: '1'$/} {#if {$startgame == 1} {#scri check_thimble(1, "$0")}} {games}
#action {/^(\w+) произносит: '2'$/} {#if {$startgame == 1} {#scri check_thimble(2, "$0")}} {games}
#action {/^(\w+) произносит: '3'$/} {#if {$startgame == 1} {#scri check_thimble(3, "$0")}} {games}
#action {дает тебе %0 золотых.} {#scri get_gold(%0)} {games}

Триггеры все примитивные. Чтобы начать игру кто-то должен сказать "Поехали!", также группа триггеров "games" должна быть включена (#group enable games). Теперь сам скрипт.

var readygame = 0;
var thimble = 0;

function start_thimble() {
if (readygame <= 0) {
jmc.send("say Дня начала игры дайте мне 20 голда");
}
else {
readygame = readygame - 1;
jmc.SetVar("startgame", "1");
randomize_thimble();
}
}

function get_gold(num) {
num = parseInt(num);
if (num >= 20) {
num = num / 20;
num = parseInt(num);
readygame = readygame + num;
jmc.send("nod");
}
else {
jmc.send("say Not enough ");
}
}

function randomize_thimble() {
var a = 0;
a = Math.random();
a = a*100;
a = parseInt(a);
a = a%3;

if (a == 0) {
jmc.send("emo кладет горошину под первый наперсток.");
thimble = 0;
}
if (a == 1) {
jmc.send("emo кладет горошину под второй наперсток.");
thimble = 1;
}
if (a == 2) {
jmc.send("emo кладет горошину под третий наперсток.");
thimble = 2;
}

for (i = 0; i < 10; i++) {
a = Math.random();
a = a*1000;
a = parseInt(a);
a = a%2;

if (thimble == 0) {
if (a == 0) {
thimble = 1;
jmc.send("emo передвигает все наперстки на один.");
}
if (a == 1) {
thimble = 2;
jmc.send("emo меняет местами крайние наперстки.");
}
}
else if (thimble == 1) {
if (a == 0) {
thimble = 0;
jmc.send("emo хитрым движением передвигает средний и крайний наперстки.");
}
if (a == 1) {
thimble = 2;
jmc.send("emo передвигает средний и крайний наперстки.");
}
}
else {
if (a == 0) {
thimble = 1;
jmc.send("emo быстро шевелит руками, передвигая все наперстки на один.");
}
if (a == 1) {
thimble = 0;
jmc.send("emo меняет местами крайние наперстки.");
}
}
}

jmc.send("say Где же горошина?");
a = thimble + 1;
jmc.showme("Горошина:" + a + " наперсток");
}

function check_thimble(num, name) {
a = num - 1;
if (a == thimble) {
thimble = -1;
jmc.send("emo поднимает указанный наперсток... Вот она горошинка!");
jmc.send("say You win, " + name + "!");
a = Math.random();
a = a + 1;
count = 20 * a;
count = parseInt(count);
jmc.send("giv " + count + " gold " + name);
jmc.SetVar("startgame", "0");
}
else {
a = thimble;
thimble = -1;
jmc.SetVar("startgame", "0");
if (a == 0) {
jmc.send("emo поднимает указанный наперсток... Пусто \:\(");
jmc.send("emo поднимает первый наперсток... Удача была так близка \:\)");
jmc.send("say " + name + ", Вы проиграли! Она была под первым наперстком.");
}
if (a == 1) {
jmc.send("emo поднимает указанный наперсток... Пусто \:\(");
jmc.send("emo поднимает второй наперсток... Удача была так близка \:\)");
jmc.send("say " + name + ", Вы проиграли! Она была под вторым наперстком.");
}
if (a == 2) {
jmc.send("emo поднимает указанный наперсток... Пусто \:\(");
jmc.send("emo поднимает третий наперсток... Удача была так близка \:\)");
jmc.send("say " + name + ", Вы проиграли! Она была под третим наперстком.");
}
}
}

Начнем по порядку. readygame - вспомогательная переменная, в ней мы будем хранить количество оплаченных игр (зачем же давать играть на халяву?). thimble - переменная, которая хранит значение наперстка, под которым лежит горошина. thimble_start() начинает игру, если есть оплаченные игры, если их нету - она просит денег. get_gold() проверяет достаточно ли Вам дали денег, и если дали более 20, то, при условии, что хватит на пару игр, прибавляет эти самые игры. Мы подошли к самому интересному - к генератору - randomize_thimble() Записываем в переменную a случайное число в интервале от 0 до 1 с помощью стандартной функции языка Math.random(), далее у нас три варианта под какой наперсток положить, берем остаток от деления a на 3, т.е. получаем целое число от 0 до 2 - это и будет наш наперсток, куда мы положим горошину. Далее "мешаем" наперстки с помощью того же рандома. У нас есть всегда 2 варианта, куда можно подвинуть, проверяем куда нельзя и двигаем туда, куда можно (хорошая фраза получилась). Так мы поступаем 10 раз, скрипт показывает Вам, под каким наперстком лежит горошина. Ждем ответа от игроков просто say'ем (say 1 или say 2 или say 3). Вступает в работу функция check_thimble(), которая просто проверяет угадал игрок или нет. Если он угадал, ему выдается заслуженная награда в размере от 20 до 40 голда. Все честно На мой взгляд, это достаточно объемистый пример, но хорошо иллюстрирующий те или иные возможности языка.

Ps чесно взято с www.df2.ru
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности.
Devastator вне форума   Ответить с цитированием