Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: работа со строками

Сообщения:  [1-10]   [11-19] 

 
 автор: selma   (29.09.2010 в 10:54)   письмо автору
 
   для: sim5   (29.09.2010 в 10:48)
 

Еще раз спасибо, все что не нужно убрала

  Ответить  
 
 автор: sim5   (29.09.2010 в 10:48)   письмо автору
 
   для: Trianon   (29.09.2010 в 10:46)
 

Ничего он не сделал, это у меня так пример, начания header('Content-type: text/html; charset=utf-8');, а все в 1251... Думаю леди это поняла. ;-)

  Ответить  
 
 автор: sim5   (29.09.2010 в 10:47)   письмо автору
 
   для: selma   (29.09.2010 в 10:31)
 

>передаются и загадываются на латинице (поэтому даже iconv не требуется:)),

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

  Ответить  
 
 автор: Trianon   (29.09.2010 в 10:46)   письмо автору
 
   для: sim5   (29.09.2010 в 10:06)
 

зачем Вы человека накормили двойным iconv'ом?
Что он Вам сделал?

  Ответить  
 
 автор: selma   (29.09.2010 в 10:31)   письмо автору
 
   для: sim5   (29.09.2010 в 10:29)
 

я добавила проверку на существование букв в сессии, чтобы не дублировались, а буквы у меня передаются и загадываются на латинице (поэтому даже iconv не требуется:)), а потом транлитируются для пользователя
+ выводится алфавит, и если букву нажали, то эта буква из алфавита убирается, так что сейчас игра вполне закончена:)

  Ответить  
 
 автор: sim5   (29.09.2010 в 10:29)   письмо автору
 
   для: selma   (29.09.2010 в 10:16)
 

Добавьте перевод получаемых букв в нижний регистр.

  Ответить  
 
 автор: selma   (29.09.2010 в 10:16)   письмо автору
 
   для: sim5   (29.09.2010 в 10:06)
 

УРА! Теперь все работает, спасибо вам огромное!!! немного доработаю, и будет отлично. спасибо

  Ответить  
 
 автор: sim5   (29.09.2010 в 10:06)   письмо автору
 
   для: selma   (29.09.2010 в 09:56)
 

Правильно, не там надо проверять и не так. )
<?
$_SESSION
['word'] = "слово";
$_SESSION['word'] = iconv("UTF-8","windows-1251",$_SESSION['word']);
$max 10//число попыток
if(!isset($_SESSION['liter'])) $_SESSION['liter'] = array();
if(!isset(
$_SESSION['error'])) $_SESSION['error'] = $max;
$word = &$_SESSION['word'];
$liter = &$_SESSION['liter'];

$_GET['liter'] = isset($_GET['liter']) ? iconv("UTF-8","windows-1251",trim($_GET['liter'])) : "";

if(
$_SESSION['error']) {
  if(
$_GET['liter']) $liter[] = $_GET['liter'];
  if(
$_GET['liter'] && !stristr($word$_GET['liter'])) $_SESSION['error']--;
  for(
$i=0$k=0$i<strlen($word); $i++) {
    if(
in_array($word[$i], $liter)) {
      echo 
iconv("windows-1251","UTF-8",$word[$i]);
      
$k++;
    } else echo 
"*";
  }
  echo 
$k == strlen($word) ? iconv("windows-1251","UTF-8""<br>Угадали!") : ($liter ?
  
iconv("windows-1251","UTF-8""<br>Названы буквы: " implode(","$liter)) : null);
} else {
  echo 
iconv("windows-1251","UTF-8""<br>Приехали...");
  
$_SESSION['error'] = $max//заново
}

  Ответить  
 
 автор: selma   (29.09.2010 в 09:56)   письмо автору
 
   для: sim5   (29.09.2010 в 09:12)
 

не работает так: проверяем
echo "Попыток ".$_SESSION['error']." из 11";


при любой, даже угаданой букве Внимание! сразу показывает 5 попыток (слово "слово" состоит из 5 букв)

  Ответить  
 
 автор: sim5   (29.09.2010 в 09:12)   письмо автору
 
   для: selma   (29.09.2010 в 08:39)
 

Ну можно добавить в сессию счетчик, например, $_SESSION['error'], изначально равный ноль (при начале игры), который инкрементировать при неугадывании:
<?
//.....
if(in_array($word[$i], $liter)) { 
    echo 
iconv("windows-1251","UTF-8",$word[$i]); 
    
$k++; 
  } else {
    echo 
"*";
    if(
$_SESSION['error'] < $max$_SESSION['error']++;
}
//.....
//проверка $_SESSION['error'] и решение
//иначе при прерывании цикла (как сперва было предложено) 
//не все слово может быть выведено

  Ответить  

Сообщения:  [1-10]   [11-19] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования