| |
|
|
| | Скачал в интернете старючую игру "виселица", решил переделать ее без явы скриптов и попроще
что то типа
http://softtime.ru/forum/read.php?id_forum=1&id_theme=44705&page=1
Если можно то подскажите как? | |
| |
|
|
| |
|
|
| |
для: chexov
(29.10.2007 в 11:49)
| | | алгоритм виселицы? | |
| |
|
|
| |
|
|
| |
для: KPETuH
(29.10.2007 в 11:55)
| | | вот пример http://wap.2yxa.ru/games/hang.php думаю тут алгоритм налицо:) | |
| |
|
|
| |
|
|
| |
для: chexov
(29.10.2007 в 12:00)
| | | есть варианты? | |
| |
|
|
| |
|
|
| |
для: chexov
(29.10.2007 в 14:59)
| | | уважаемые знатоки, подскажите что нибудь | |
| |
|
|
| |
|
|
| |
для: chexov
(29.10.2007 в 11:49)
| | | Заготовте заранее нужное количество картинок, словарь. Составте алфавит ссылками, в параметрах передавайте букву.
Итак:
1. из словаря берем слово, сохраняем его куда-нибудь (например, в сессию), если там, куда его сохраняем, его еще нет.
составляем слово из "-" такой же длины, запоминаем туда же
записываем количество минусов (в начале 0) (неправильных попыток)
2. если есть $_GET['char'] проверяем, есть ли в слове такая буква (если в параметре будете передавать латинские буквы, нужно составить словарик-массив соответствий: 'a' => 'a', 'b' => 'б', 'v' => 'в'и т.д.). Проверить, есть ли буква можно с помощью strpos(), заменить примерно так: пока ($pos = strpos(.....)) !== false, слово_из_минусов[$pos] = буква)
3. в зависимости от количества минусов, выводим нужную картинку, слово из "-" с отгаданными буквами. Поздравления в случае выйгрыша, проигрыша... | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(30.10.2007 в 05:36)
| | | я алгоритм тоде очень хорошо понимаю, но че то не хватает мозгов:( | |
| |
|
|
| |
|
|
| |
для: chexov
(29.10.2007 в 11:49)
| | |
<?php
$words = array("республика", "форум", "винда");
session_start();
if ( empty($_SESSION['secret']) ) {
$_SESSION['try'] = 6; // количество попыток
$_SESSION['true'] = 0; // количество угаданных букв
$_SESSION['secret'] = $words[array_rand($words, 1)];
$_SESSION['text'] = str_repeat("_ ", strlen($_SESSION['secret']));
$abc = "а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я";
$_SESSION['abc'] = explode(" ", $abc);
}
if ( (!empty($_GET['char']) || @$_GET['char'] === "0") && $_SESSION['try'] > 0 ) {
$pos = strpos($_SESSION['secret'], $_SESSION['abc'][$_GET['char']]);
if ( $pos !== false ) {
$_SESSION['text'][$pos*2] = $_SESSION['secret'][$pos];
print "символ угадан!<br/>";
$_SESSION['true']++;
} else {
print "символ неугадан!<br/>";
$_SESSION['try']--;
}
unset($_SESSION['abc'][$_GET['char']]);
if ( $_SESSION['try'] === 0 ) {
print "Вы проиграли.<br/><a href='?'>заново</a>";
session_destroy();
exit;
}
if ( $_SESSION['true'] === strlen($_SESSION['secret']) ) {
print "Вы выиграли.<br/><a href='?'>заново</a>";
session_destroy();
exit;
}
}
print "У вас ".$_SESSION['try']." попыток<br/>";
print $_SESSION['secret']."<br/>".$_SESSION['text']."<br/>";
foreach ( $_SESSION['abc'] as $key => $char )
print '<a href="?char='.$key.'">'.$char.'</a> ';
|
| |
| |
|
|
| |
|
|
| |
для: Саня
(30.10.2007 в 11:57)
| | | Попробуйте "молоко" отгадать ;) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(30.10.2007 в 13:01)
| | | Предложенный код специально рассчитан на слова без повторяющихся букв. Желающие могут переделать скрипт под себя. | |
| |
|
|
| |
|
|
| |
для: Саня
(30.10.2007 в 14:09)
| | | Уж прямо-таки "специально" ? =) | |
| |
|
|
| |
|
|
| |
для: Саня
(30.10.2007 в 11:57)
| | | $words = array("республика", "форум", "винда");
если это база слов то чтранно но выводит больше количество букв чем каждое из слов:( | |
| |
|
|
| |
|
|
| |
для: chexov
(30.10.2007 в 13:54)
| | | Если я правильно прочитал мысли, то замените
str_repeat("_ ", str...
на
str_repeat("_", str...
и
$_SESSION['text'][$pos*2] = $_SESS...
на
$_SESSION['text'][$pos] = $_SESS...
|
| |
| |
|
|
| |
|
|
| |
для: Саня
(30.10.2007 в 14:09)
| | | вот результат:(
<?
символ неугадан!
У вас 5 попыток
форум
_ _ _ _ _ _ _ _ _ _
а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я
?>
|
| |
| |
|
|
| |
|
|
| |
для: chexov
(30.10.2007 в 14:58)
| | | В PHP Expert Editor'e запускаете? У меня в нем почему-то такая же ерунда была. | |
| |
|
|
| |
|
|
| |
для: chexov
(30.10.2007 в 14:58)
| | | Функция str_repeat() вообще странно ведёт себя на денвере. На нормальной связке Apache+PHP отлично работает. | |
| |
|
|
| |
|
|
| |
для: Саня
(30.10.2007 в 15:54)
| | | у меня не денвер у меня как раз такая связка...что же делать? | |
| |
|
|
| |
|
|
| |
для: chexov
(30.10.2007 в 16:06)
| | | а еще глюки с кодировкой и когда угадаешь слово не выводит вы выиграли:( | |
| |
|
|
| |
|
|
| |
для: chexov
(31.10.2007 в 06:52)
| | | в PHPed'е проверил код все работает нормально :) | |
| |
|
|
| |
|
|
| |
для: KPETuH
(31.10.2007 в 08:14)
| | | я проверил на хостинге - не работает как надо:( | |
| |
|
|
| |
|
|
| |
для: chexov
(31.10.2007 в 11:42)
| | | я сделал так:
<?php
header ("Content-type:text/vnd.wap.wml;");
$file_parole = 'word.dat'; //словарь слов
$alfabeto = array ('А' => 'a','Б' => 'b','В' => 'c','Г' => 'd','Д' => 'e',
'Е' => 'f','Ж' => 'g','З' => 'h','И' => 'i','Й' => 'j','К' => 'k','Л' => 'l',
'М' => 'm','Н' => 'n','О' => 'o','П' => 'p','Р' => 'q','С' => 'r','Т' => 's',
'У' => 't','Ф' => 'u','Х' => 'v','Ц' => 'w','Ч' => 'x','Ш' => 'y','Щ' => 'z',
'Ь' => '1','Ъ' => '2','Ы' => '3','Э' => '4','Ю' => '5','Я' => '6');
$paperino = session_name ("found");
session_register ("regfound");
//выбор слова из файла
function ScegliParola ($file_parole) {
$content = file ($file_parole);
$numero_parole = (count ($content)-1);
$posizione_parola = rand (0, ($numero_parole));
$linea = $content[$posizione_parola];
$parola = rtrim ($linea);
return ($parola);
}
// изменяет все неугаданные буквы на _
function CalcolaIndovinata ($parola, $escludi, $alfabeto) {
$alfabeto = array_flip ($alfabeto);
$escluse = strtr ($escludi, $alfabeto);
$escluse = '['.$escluse.']';
$escluse = ereg_replace ($escluse, '', '[АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯ]');
$indovinata = ereg_replace ($escluse, '_', $parola);
return $indovinata;
}
// вставляет выбранную букву в слово
function TrovaLettera ($lettera, $parola, $scelte, $alfabeto) {
$alfabeto = array_flip ($alfabeto);
$lettera = strtr ($lettera, $alfabeto);
$scelte.= $lettera;
if (ereg ($lettera, $parola)) {
$controllo = true;
}
else {
$controllo = false;
}
$risposta = array ($scelte, $controllo);
return $risposta;
}
if ((isset($letter) and isset($regfound))) {
$variab = explode ('/', $regfound);
$indovina = $variab[0];
$scelte = $variab[1];
$tentativi = $variab[2];
$checklet = TrovaLettera ($letter, $indovina, $scelte, $alfabeto);
$scelte = $checklet[0];
if (!$checklet[1]) {
$tentativi = $tentativi +1;
}
$indovinata = CalcolaIndovinata ($indovina, $scelte, $alfabeto);
}
else {
$tentativi=0;
$scelte = ('_');
$indovina = ScegliParola ($file_parole);
$indovinata = CalcolaIndovinata ($indovina, $scelte, $alfabeto);
}
$regfound = ($indovina.'/'.$scelte.'/'.$tentativi);
echo "<?xml version=\"1.0\"?>
<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">
<wml><head><meta http-equiv=\"Cache-Control\" content=\"no-cache\" forua=\"true\"/></head><card title=\"Угадайка!\">";
print "<p align=\"center\">
Игра - угадай слово!<br/>";
print iconv("windows-1251","utf-8","Ошибок $tentativi").' из 6<br/>';
$caratteri = preg_split('//', $indovinata, -1, PREG_SPLIT_NO_EMPTY);
foreach ($caratteri as $lettalf) {
$lettalf = strtr ($lettalf, $alfabeto);
if ($lettalf==' ') {
print '';
}
else {
$all = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6');
$addd = array ('а','б','в','г','д','е','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ъ','э','ы','ю','я');
print iconv("windows-1251","utf-8",str_replace ($all,$addd,$lettalf));
}
print (' ');
}
print ('<br/><br/>');
if ($indovina!=$indovinata)
{
if ($tentativi>=6)
{
print iconv("windows-1251","utf-8","Вы не угадали задуманое слово.<br/>Слово было: ".strtolower($indovina).""); session_destroy();
}
else {
$scelt = preg_split('//', $scelte, -1, PREG_SPLIT_NO_EMPTY);
print ('');
foreach ($alfabeto as $lettalf) {
$contrl = false;
foreach ($scelt as $letter) {
if (!strcasecmp ($lettalf, $letter))
{
$contrl = true;
}
}
if ($contrl)
{
print $lettalf;
}
else {
$al = array ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6');
$add = array ('а ','б ','в ','г ','д ','е ','ж ','з ','и ','й ','к ','л ','м ','н ','о ','п ','р ','с ','т ','у ','ф ','х ','ц ','ч ','ш ','щ ','ь ','ъ ','э ','ы ','ю ','я ');
print '<a href="index.php?letter='.$lettalf.'&'.SID.'">'.iconv("windows-1251","utf-8",str_replace ($al,$add,$lettalf)).'</a>';
}
if ($lettalf=='k' or $lettalf=='v'){print ('<br/>');}
}
}
}
else
{
print iconv("windows-1251","utf-8","Поздравляю! Вы угадали слово!");
session_destroy();
}
echo iconv("windows-1251","utf-8","<br/><br/><small><a href=\"index.php\">Еще поиграть!</a></small>");
print "</p>";
print "</card></wml>";
?>
|
все работает на ура, но только при угаданой букве эта буква не убирается из алфавита, помогите сделать чтобы она убиралась | |
| |
|
|
| |
|
|
| |
для: Саня
(30.10.2007 в 15:54)
| | | подскажите как убирать нажатую букву из алфавита....пожалуйста | |
| |
|
|
| |
|
|
| |
для: chexov
(01.11.2007 в 01:32)
| | | подскажите кто нибудь как убирать нажатую букву из алфавита.. | |
| |
|
|
| |
|
|
| |
для: Саня
(30.10.2007 в 15:54)
| | | Да все в порядке с str_repeat(). Просто Вы в UTF-8, небось, сохранили. | |
| |
|
|
| |
|
|
| |
для: Unkind
(02.11.2007 в 13:06)
| | | Сейчас уже вопрос не в этом, а в том: как в предложенном мною коде сделать так чтобы при нажатие на букву, буква изчезала из алфавита не зависимо от того угадана она или нет | |
| |
|
|
| |
|
|
| |
для: Unkind
(02.11.2007 в 13:06)
| | | Кстати вы правы:) сделал виндовс 1251 и все стало на свои места:) спасибо Сане и Unkind за помощь:) | |
| |
|
|
|