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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Вариант онлайн - кроссворда...
 
 автор: Loobtuff   (01.12.2006 в 20:02)   письмо автору
 
 

Тутачки возникла необходимость написать скрипт классического онлайн - кроссворда...
Т. е. надо, что б пользователь имел возможность вводить в форму слова, ну и в конце сверяться с ответами. Как обычно это делают??? Какой инструмент языка PHP в данном случае уместен?
Как бы Вы поступили на моём месте? (Предполагается, что готовый кроссворд уже есть, например, с какого - нибудь журнала, и задача стоит реализовать его в "электронном" варианте, т.е. написать его скрипт!). Поделитесь, плис, своими идеями! Жду ответов!

   
 
 автор: cheops   (02.12.2006 в 02:22)   письмо автору
 
   для: Loobtuff   (01.12.2006 в 20:02)
 

Такие вещи удобнее на Flash писать, так как PHP серверный язык, а здесь потребуется не хилая клиентская часть.

   
 
 автор: targa   (02.12.2006 в 02:31)   письмо автору
 
   для: cheops   (02.12.2006 в 02:22)
 

У меня хотели сайт с кроссвордами заказать (в цене не сошлись :D)

Я тогда просматривал Интернет на эту тему.
Тоже пришел к выводу про флеш.
Но на сайтах с кроссвордами в основном видел реализацию на Java (не путать с JS).
Но потом нашел сайтик с детским кроссвордом про спасателей (Чип, Дейл, Гайка, Рокфор, Вжик).
Там сделано было на JS.
Судя по комментам в JS-скрипте он (скрипт) создан каким-то прибамбасом. Т.е. типа рисовуешь кроссворд, бац и тебе готов скрипт.

Так что можно не только на Флеше.

   
 
 автор: targa   (02.12.2006 в 04:40)   письмо автору
 
   для: targa   (02.12.2006 в 02:31)
 

Нашел ссылочку на тот детский кроссворд - http://www.cdrrhq.ru/quiz/crossword.html

   
 
 автор: Temnovit   (02.12.2006 в 03:09)   письмо автору
 
   для: Loobtuff   (01.12.2006 в 20:02)
 

Предлогаю хранить кроссворд в двумерном массиве, представив, что мы его чертим на клеточном листе. Пустые клетки - null, а содержимое кроссворда соответственно буквы.

Допустим есть такой кроссворд:

яма
--е--
--х--

Сначала задаем кроссворд в массиве


<?
 $crossword 
= array(  
                                        array(
'я''м''а'),
                                        array(
null'е'null),
                                        array(
null'х'null)
                                     );
?>


Потом выводим, стилизованную под кроссворд, форму - заполняйте пожалуйста.


<?
echo '<form action="'.$_SERVER['SCRIPT_NAME'].'" method="post">';

echo 
'<table>';
foreach(
$crossword as $i=>$row) {
  echo 
'<tr>';
  foreach(
$row as $j=>$letter) {
     if ( 
is_null($letter) ) 
        echo 
'<td bgcolor=black height=20 width=20>&nbsp';
     else
       echo 
'<td height=20 width=20 align=center>
                  <input type="text" size=2 maxsize=2 name="cw-'
.$i.'-'.$j.'" value="'.@$_POST['cw-'.$i.'-'.$j].'">';
     echo 
'</td>';
  }
  echo 
'</tr>';
}
echo 
'</table>';

echo 
'<input type="submit" value="Сверить результаты" name="do_submit">';
echo 
'</form>';
?>


И теперь, если нажата кнопка, проверяем правильность ввода.


<?
if ( isset ($_POST['do_submit']) ) {
  
$mistake false
  foreach (
$crossword as $i=>$row
    foreach(
$row as $j=>$letter
      if ( !
is_null(@$_POST['cw-'.$i.'-'.$j]) && @$_POST['cw-'.$i.'-'.$j] != $letter )
         
$mistake true;
  
  if (
$mistake)
     echo 
'Кроссворд решен неверно!';
  else 
     echo 
'Все правильно!';  
  
}
?>


вот и все :) Скрипт универсальный, нужно только поменять массив $crossword. Целиком он в приложенном файле. Интереская была задачка, спасибо :)

   
 
 автор: targa   (02.12.2006 в 03:46)   письмо автору
 
   для: Temnovit   (02.12.2006 в 03:09)
 

Temnovit, это конечно решение. Но если честно на тяп-ляп.

На кроссвордных сайтах можно:
- посмотреть подсказку
- проверка правильности введенного слова (тут уже таким массивом не обойдешься)
- помочь себе (сайт подставит слово которое Вы не знаете)
- просмотреть решение

И все это без перезагрузки страниц. Так что чисто серверные решения не годятся (о чем хеопс и указал). Тут уместны будут Flash, Java-апплеты, JavaScriptы, AJAX.

   
 
 автор: AlexSol   (02.12.2006 в 11:45)   письмо автору
 
   для: targa   (02.12.2006 в 03:46)
 

у меня есть на флеше два варианта.
http://puzzlepak.com/archive/main_cro_NEW.html - данные берет из внешнего файла и кроссворд генерирует сам. Если интересно могу расписать логику, чтобы перевести генерацию в скрипт php, а то в моем случае он генерит просто произвольно, а на php можно сделать максимально большой из указанного списка слов. если интересно, пишите на email.

   
 
 автор: Temnovit   (02.12.2006 в 16:55)   письмо автору
 
   для: targa   (02.12.2006 в 03:46)
 

Если нужна такая функциональность то вы абсолютно правы :)

   
 
 автор: Loobtuff   (02.12.2006 в 23:54)   письмо автору
 
   для: Temnovit   (02.12.2006 в 03:09)
 

Пока останавливаюсь на Вашем варианте... Получился весьма симпатичный кроссворд... но требуется значительная доработка. Щас думаю о подсказках и проверке, а также о максимально удобном вводе слов в форму, да и вообще неплохо бы, что б ячейки ввода букв максимально соответстваовали размерам межклеточных пустот...
Но а за подсказку большое спасибо!

   
 
 автор: ihoru   (02.12.2006 в 22:10)   письмо автору
 
   для: Loobtuff   (01.12.2006 в 20:02)
 

Передо мной точно такая же задача! :) Собираюсь скоро делать, уже есть некоторые мыслишки...

   
 
 автор: ......   (08.12.2006 в 14:34)
 
   для: Loobtuff   (01.12.2006 в 20:02)
 

www.puzzles.times.lv

   
Rambler's Top100
вверх

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