начальный этап изучения js
всем привет, изучаю потихоньку javascript по самоучителю на данном сайте и дочитал до раздела "пишем на javascript", но задания даваемые в самоучителе особой пользы не дают, так как слишком простые
хотелось бы немного побольше практики, если не сложно могли бы вы дать парочку простых задач для практики? Буду оч признателен. После практики примусь за новый раздел:) |
Игра "Пятнашки" с таймером и кнопкой "Начать заново", и проверкой на "сходимость" игры.
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Чуть подучитесь - пишите чат - хороший способ познакомиться с аяксом... |
хорошо, попробую, подскажите еще хоть какие средства использовать, чтобы пятнашки сделать? массивы или объекты?
|
Wizout, это не камень в Ваш огород, но ср-во №1 - это мозг ;) По вопросу: думаю, придется и то и другое.
|
Wizout,
я на С++ когда-то разрабатывал, так использовал для этого массив. Да интересная задача, надо будет попробовать на JS такое сварганить |
|
решил вместо пятнашек попробовать сделать первую игру крестики нолики.
так вот нужна ваша помощь )) Сделал такой план что нужно реализовать: 1. игровое поле для игры в крестики нолики. 2. функция определяющая выигрыш. 3. выбор игры - 2 игрока за одним компом или игрок против компа. 4. Выбор - играть крестиками или ноликами. 5. Функция показывающая, чей сейчас ход. 6. функция ставящая крестики или нолики на поле что еще нужно добавить? |
СОВЕТ:
Нужно разбить процесс игры на части ЛОГИЧЕСКИ понятные человеку, но не понятные компьютеру, и описать эти части принимая за логические единицы. Чтобы язык воспринимал их как логические единицы нужно выделять их в функции. например функция СДЕЛАТЬ ХОД.. это логическая единица. внутри функции описываешь действия которые будут делать вид и работать ТАК, как будто человек делает ход (функция изменят какие-то цифры, положения крестиков.т.п.) и допустим среди этих не логических действий(изменения цифр) встречается логическое, например (ПРОВЕРИТЬ СТОИТ ЛИ ТУТ КРЕСТИК ИЛИ КЛЕТКА ПУСТА А ЕСЛИ НЕТ ТО ЧТО В НЕЙ СТОИТ), то это уже опять логическая единица и её снова нужно группировать в функцию, и вызывать где нужно. это общий подход))) то есть есть логические единицы, а есть не логические единицы) не логические это 2+4, и.т.п. а логические это "Сделать ход" "проверить пустоту поля" "Обьявить победу" так вот ОБЯЗАТЕЛЬНО ВСЕ, даже очень простые логические единицы, (например проверить пустое ли поле" выводи в функции) и потом ты сможешь вызывать их где надо относительно нужного тебе поля например) |
подскажите такую вещь, есть массив, он используется в качестве поля, как его вывести в элементе canvas в виде:
[][][] [][][] [][][] ? |
Цитата:
прежде чем подскажу это, не забывай разделять и саму архиитектуру приложения. то есть спроэктируй все сначала) мысленно логически отдели ОБОЛОЧКУ от ядра) ядро это прога которая считает КАК БУДЕТ РАБОТАТЬ ИГРА, а оболочка это прога которая РИСУЕТ КАРТИНКУ игры ИСХОДЯ ИЗ текущего состояния ядра)) как рисовать поле щас скажу) |
У тебя такой массив?
[[поле, поле, поле], [поле, поле, поле], [поле, поле, поле]] или такой [поле, поле, поле, поле, поле, поле, поле, поле, поле] |
Ты уже придумал как определять при каждом сделанном ходе ВЫПАЛА ЛИ ВЫИГРАШНАЯ КОМБИНАЦИЯ)?
Какие идеи есть? |
Цитата:
|
Цитата:
Цитата:
function winner() //функция определения выиграша { if(field[0]==field[1] && field[1]==field[2] && field[2]==0 || field[3]==field[4] && field[4]==field[5] && field[5]==0|| field[6]==field[7] && field[7]==field[8] && field[8]==0|| field[0]==field[4] && field[4]==field[8] && field[8]==0|| field[2]==field[4] && field[4]==field[6] && field[6]==0|| field[0]==field[3] && field[3]==field[6] && field[6]==0|| field[1]==field[4] && field[4]==field[7] && field[7]==0|| field[2]==field[5] && field[5]==field[8] && field[8]==0) alert("Вы выиграли!"); if(field[0]==field[1] && field[1]==field[2] && field[2]==1 || field[3]==field[4] && field[4]==field[5] && field[5]==1|| field[6]==field[7] && field[7]==field[8] && field[8]==1|| field[0]==field[4] && field[4]==field[8] && field[8]==1|| field[2]==field[4] && field[4]==field[6] && field[6]==1|| field[0]==field[3] && field[3]==field[6] && field[6]==1|| field[1]==field[4] && field[4]==field[7] && field[7]==1|| field[2]==field[5] && field[5]==field[8] && field[8]==1) alert("Вы выиграли!"); } |
Цитата:
|
Ну и жесть))))
А не проще пускать букву Ж от места где поставлен крестик или нолик и смотреть СКОЛЬКО КРЕСТИКОВ пересекает каждая палочка буквы Ж :) если хоть одна палочка пересекает 3 крестика включая текущий, то ход выиграшный)))) было бы у тебя поле 20 на 20 клеток какое бы ты условие в if написал бы))?) :haha: |
Цитата:
у меня не так много опыта, чтобы мог сразу нормальный код написать, а не говнокодить... поэтому тут и сижу, синтаксис js освоил, а чтобы что-то писать начать нужна практика, будет больше практики станет и код лучше |
Цитата:
п.с. сделай массив какой я показал, то есть массив массивов, матрица называется. |
Цитата:
|
набросал на скорую руку
var x = [ [1, 0, 1], [0, 1, 0], [0, 0, 1] ]; var z = check(); function check() { for(var i = 0; i < 3; i++) if(x[i][0] == x[i][1] && x[i][1] == x[i][2]) return true; for(var i = 0; i < 3; i++) if(x[0][i] == x[1][i] && x[1][i] == x[2][i]) return true; if(x[0][0] == x[1][1] && x[1][1] == x[2][2]) return true; if(x[0][2] == x[1][1] && x[1][1] == x[2][0]) return true; return false; } alert(z); |
Цитата:
|
Livaanderiamarum, мне кажется, для "скороручного" решения вполне нормально. И в крестиках-ноликах поле всегда 3x3...
А вообще, Wizout, если уж взялись делать крестики-нолики, то уж хотя бы искусственный интеллект им допишите... |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
там то я не стебался;) |
Цитата:
|
Цитата:
))) просто объяснял в чем разница прототипов и классов) и как устроено хранение и работа обектов на уровне ядра. как ссылки работают, операторы и.т.п. заем нужно __prototype__ обьяснил что prototype это как бы папочка из которой дети обьекта будут брать свойства если в них самих они не найдутся)) и что эти свойства В САМОГО папку не кладутся чтобы не засорять его. .и.т.п. многие такие вещи, о том как ссылки работают, как базы работают и.т.п. нашу переписку можно даже в вузах использовать как пособие) то есть я в нчаале намеренно обьясняю НЕПРАВИЛЬНО и человек говорит " а нахрена так?? " ии тут я ему говорю " так вот создателей это тоже бесило и они придумали такую штуку" и обьясняю штуку чтобы так не было". то есть практически НИ ГДЕ не обьясняется А ЗАЧЕМ нужны прототипы, а зачем поиск идентефикаторов происходит именно так, а зачем ровно работает именно так, а не иначе. А ЗАЧЕМ что-то работает так, а не иначе. а это нужно для понимания) |
Молодец, чё)
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
как устроено хранение и работа объектов на уровне ЯДРА ? Цитата:
Цитата:
![]()
Цитата:
Цитата:
простите ребят, ![]() |
гыы))
![]() |
ну что сказать в теории некоторые моменты он хорошо расписал как что работает =)) в книге про это не было написано, жду вот пока Livaanderiamarum освободится, чтобы побыстрее к практике уже перейти, еще бы мата поменьше в тексте и было бы совсем замечательно:p
|
Часовой пояс GMT +3, время: 06:12. |