Финальное задание по Javascript

Уважаемые студенты!

Сегодня мы закончили знакомство с Javascript. К этому языку программирования мы ещё вернёмся после того, как изучим основы PHP: для использования Ajax и различных Google API.

А пока домашнее задание:

При помощи Javascript, HTML и CSS (а главное – максимально активно используя jQuery) написать программу, играющую с пользователем в классические крестики-нолики.

Некое подобие технического задания:

  • перед началом игры пользователю необходимо представиться (ввести имя или никнейм, по которому программа в дальнейшем будет обращаться к пользователю);
  • перед началом игры случайным образом определяется, будет ли пользователь играть за крестики или за нолики;
  • игру всегда начинают крестики (не важно – играет на них компьютер или человек);
  • сложность AI (созданного вами “искусственного интеллекта”) может быть любой: похвально, если вы научите свою программу сводить любую партию вничью или выигрывать, если компьютер получает право первого хода. Но для зачёта достаточно, даже если компьютер будет делать ходы “наобум”.
  • необходимо воспроизвести все правила игры и определение победителя (с учётом ничьей);
  • в программе должна быть кнопка “Начать новую игру”;
  • после того, как компьютер сделает ход, нужно подсветить для пользователя клетку, заполненную компьютером и, если не наступил конец игры, оповестить его о переходе права хода к пользователю (Например, выводом сообщения “Теперь ваш ход, %username%”;
  • для ввода/вывода запрещается использовать alert() и prompt()
  • код программы должен быть корректно отформатирован и содержать комментарии в разумных количествах;
  • придерживайтесь “хороших практик” программирования: используйте семантически корректный HTML, отделите оформление и программный код от структуры файла, вынеся CSS и Javascript во внешний файл или секцию <head>;
  • постарайтесь при выполнении этого задания использовать знания, полученные в ходе курсов “Веб-технологии” и “Пользовательские интерфейсы”.

Работы разместите на своих серверах или на mk.ee/~%ваше_имя% и оставьте ссылку на свою работу в комментариях к этой записи.

Мотивационная часть

Кнут: на экзамен по веб-программированию допускаются только самостоятельно выполнившие это задание.

Пряник:  авторы наиболее интересных и функциональных программы (эффективность AI, процедура определение победителя, качество кода, использование средств jQuery, аккуратность интерфейса) получат весомый бонус на экзамене.

5 Comments »

  1. mihhailov says:

    http://tallinn.mk.ee/~viktor.mihhailov/tictac/XO.html вот мои крестики нолики, никакой притензии на эфективность, тестил возможности jQuery.Выиграть у AI “сложно”. Позже допишу коментарии, может код отрефакторю.

  2. Maksim says:

    AI не плох, но ходы у него строго запрограммированные. Как вариант не стандартного хода пользователь ставит например крестик справа в центр и следующий слева внизу и всегда ведётся на вилку.

    Также замечен баг, если имя введено кириллицей, то на втором ходе возможно ставить нолик за AI :)

  3. ivanov says:

    http://arangur.ee/wt/xo/
    Немного не успел доделать и программа имеет недостатки
    Н-р: не дописан алгоритм игры компьютера за крестики на первых ходах. Недостаток обновления – не запускается случайный выбор стороны игры. Как мне показалось, в определенной закономерности не правильно определяется выйгрышь- исправить не успел.
    В общем программа работает. Можно назвать ее “грязная версия” :(

  4. Вы прирождённый тестер, – обнаружение бага с кириллицей заслуживает уважения :)

RSS feed for comments on this post. / TrackBack URI

Leave a Reply

Блог переехал на cs.eek.ee

Уважаемые студенты!

Начиная с 12 мая этот блог переехал на cs.eek.ee. Сайт mainor.info больше не обновляется!

Инструкции по переезду найдёте на главной нового сайта: http://cs.eek.ee/

Кто не хочет переносить все свои посты, может просто сделать аккаунт на новом сайте и забыть про этот. ЛеПресс по веб-программированию начнём там заново.

Спасибо всем, до встречи на http://cs.eek.ee/ !

Захар

Практика в SEVEN Networks

Уважаемые выпускники и второкурсники!

Компания SEVEN Networks ищет интерна на 4 летних месяца на должность инженера по качеству (QA ENGINEER, “тестер”). Работа оплачиваемая с перспективой перехода на постоянную работу. Коллектив преимущественно русскоговорящий, фирма международная. От вас требуется разбираться в сетях, SQL, основах программирования и Линуксе.

Подробности и кандидирование по ссылки: http://www.cv.ee/too/seven-networks/qa-engineer-summer-intern-d220796.html

Стажировка в Студии Артемия Лебедева

Тем из вас, у кого есть друзья-родственники в Москве, готовые приютить вас на месяц,  может быть интересным предложение о стажировке в Студии Артемия Лебедева. Сейчас объявлен набор стажёров на период с 20 мая по 20 июня, но в принципе стажировка в Студии возможна круглый год. Просто напишите о себе в Студию, оно того точно стоит (почитайте отзывы)!

Как я стал жертвой кульных хацкеров

Прошу прощения у всех тех, кто сегодня получил от моего имени спам, отправленный с ящика zahhar@gmail.com. Просто игнорируйте то письмо.

Ящик был взломан достаточно тривиальным способом: в 2002 году, когда я его создавал, я по наивности ввёл в качестве ответа на вопрос для восстановления пароля что-то осмысленное (вроде “Какая девичья фамилия вашей матери – Иванова”), за что сегодня и поплатился.

Сейчас контроль над почтовым ящиком восстановлен, можете мне на него снова писать и я надеюсь такого досадного промаха больше не повторится. Позор на мои седины.

Пользуясь случаем, рекомендую всем не использовать в своих почтовых аккаунтах (да и где бы то ни было вообще) вопросов для восстанления в прицнипе. Вместо этого используйте восстановление через SMS на ваш номер телефона (многие сервисы, включая Google, предлагают такую возможность). Если вы всё-таки вынуждены использовать вопрос, то в качестве ответа вводите какую-то псевдослучайную комбинацию букв и цифы, не имеющую отношения ни к вам лично, ни к сути вопроса и не являющуюся “словарным” словом (например “Какая девичья фамилия вашей матери – !!!IT-123-is-456-a-789-good-987-day-654-TODAY!!!”).

Ещё раз прошу прощения. Да пребудет с вами сила

Новости о разном

Уважаемые студенты!
Несколько важных новостей:

1. Список предметов по выбору, которые я готов вам предложить, скорее всего будет опубликован на следующей неделе, после того как будет одобрен советом по учебной программе. Вам будет предложено 2-3 предмета объёмом 3-5EAP, из которых вы сможете выбрать наиболее интересный и полезный для вас. О сроках и порядке выбора сообщу отдельно. Предмет, который наберёт большее число голосов, будет включён в ваше расписание на осенний семестр. Соответственно, тем, кто выберет какой-то другой предмет, который не наберёт достаточно голосов, чтобы был смысл проводить его, придётся либо присоединиться к остальным слушателям популярного предмета, либо ждать следующего семестра (не рекомедую, если хотите закончить обучение в срок).

2. Я обновил список тем дипломных и курсовых работ, которые я предлагаю вам для изучения. Теперь он постоянно доступен на главной странице этого блога, вверху над списком категорий. Если кто ищет себе интересную тему – можете туда заглянуть.

3. Повторный экзамен по веб-технологиям для провалившихся или отсутствующих на этой неделе состоится, вероятно, в следующую пятницу 29 апреля в 10 часов утра. Подтверждение вы получите на эл.почту и в своём расписании. Это последняя возможность сдать эказмен по этому предмету в этом году! Следущая сдача будет возможна только весной 2012 года!

4. Для изучающих веб-программирование: обновлён пост с описанием того, что мы уже изучили и что вы должны знать и уметь к сегодняшнему дню.

Всем хороших выходных!

Практика для администратора ИКТ

На CV.ee появилось объявление о практике для администратора ИКТ. Рабочие задания вполне стандартные, период – 3 месяца.

CV и мотивационное письмо работодатель ожидает до 27 апреля.

Морской бой: игровое поле

Программно создать игровое поледля Морского боя, включая нумерацию строк и столбцов. Зполнять поле текущим состоянием массива. Позволять пользователю изменять состояние массива и сохранять его в переменной сессии. Позволять очистить массив.

Пример (левое поле “My Field”)

Необходимо предоставить ссылку на работающий скрипт + ссылку на исходный код скрипта (копия файла скрипта с расширением txt).

Вводная по веб-программированию на PHP

Уважаемые студенты, изучающие веб-программирование на PHP!
Проверьте себя, что вы умеете из нижеперечисленного, всё ли у вас есть для того, чтобы двигаться в изучении веб-программирования дальше?

Вы должны понимать следующие элементы PHP:

Кроме этого, вы должны уметь:

  • пользоваться следующими встроенными функциями “из головы”, не подсматривая в документацию: isset(), empty(), rand(), count(), print_r(), error_reporting(), echo(), die(), exit(), setcookie(), time(), strlen();
  • ориентироваться в документации на php.net и в случае необходимости быстро отыскивать там нужную вам встроенную функцию;
  • понимать синтаксис описания встроенных функций в официальной документации php.net, уметь читать примеры и модифицировать их для использования в своём коде;
  • интегрировать код на PHP внутрь HTML-документа, устанавливать ссылки на php-скрипты с параметрами в них и отправлять на обработку php-скрипту простейшие веб-формы.

Если вы не осиливаете офдок на английском, то воспользуйтесь упрощённым курсом на W3Schools, в крайнем случае обратитесь к частично переведённой на русский язык официальной документации или купите (скачайте) книгу по PHP 5.x на русском.

Внимание! Полной документации по PHP 5.х, качественно переведённой на русский язык нет! Не поддавайтесь соблазну изучать PHP по различным устаревшим курсам, пособиям, книгам и сайтам, где идёт речь о 3-й или 4-й версии PHP. Они безнадёжно устарели!

Запускать свои скрипты лучше всего на сервере cs.mk.ee (предварительно убедитесь, что у всех файлов установлены права доступа 755). Если вы желаете работать с PHP локально на своём компьютере, то вам нужно установить XAMPP или любой другой набор из Apache2, PHP 5.x и других полезных программ из этого списка. Подобные комплекты софта созданы и для других ОС – для Мака и Линукса.

Писать свой код в Windows лучше всего в одном из следующих бесплатных текстовых редакторов с подсветкой синтаксиса и поддержкой прямой работы с FTP-сервером (перечисляю свои личные предпочтения, но разумеется никто не запрещает вам использовать Geany, Eclipse или любой другой свободный или коммерческий продукт, с которым вы будете чувствовать себя комфортно):

Пять мест для практикантов в Swedbank

На этот раз практиканты на лето нужны в ИТ-дивизион крупнейшего местного банка – Swedbank. Всего 5 мест, срок отправки CV – до 30 апреля.

Дерзайте!

Практика для вебтехнологов в Eesti Energia

В Eesti Energia есть 4 места для практикантов-программистов (или wanna be) с возможностью последующего трудоустройства. Продолжительность практики от 1 до 3 месяцев. Специализация – системный анализ, тестирование и разработка приложений на PHP и C#, настройка MS Sharepoint.

Срок подачи заявок (CV и мотивационное письмо) – 15 апреля по мейлу praktika@energia.ee.
В письме обязательно указать позицию, на которую претендуете.

Подробности о практике,
Подробности о рабочих обязанностях практикантов

Удачи!