решил вместо пятнашек попробовать сделать первую игру крестики нолики.
так вот нужна ваша помощь )) Сделал такой план что нужно реализовать: 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: |
Часовой пояс GMT +3, время: 20:45. |