|
Клиенты для игры Все что связано с клиентами для игры. Jmc, MMC, ZMud etc... |
|
Опции темы | Опции просмотра |
|
17.06.2006, 13:13 | #1 |
Отличник форума
Регистрация: 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
__________________
Владение орфографией русского языка - это как кунг-фу, истинные мастера которого не применяют его без надобности. |