10.01.2012, 19:24
|
Интересующийся
|
|
Регистрация: 21.12.2011
Сообщений: 26
|
|
решил вместо пятнашек попробовать сделать первую игру крестики нолики.
так вот нужна ваша помощь ))
Сделал такой план что нужно реализовать:
1. игровое поле для игры в крестики нолики.
2. функция определяющая выигрыш.
3. выбор игры - 2 игрока за одним компом или игрок против компа.
4. Выбор - играть крестиками или ноликами.
5. Функция показывающая, чей сейчас ход.
6. функция ставящая крестики или нолики на поле
что еще нужно добавить?
Последний раз редактировалось Wizout, 10.01.2012 в 19:27.
|
|
10.01.2012, 19:47
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
СОВЕТ:
Нужно разбить процесс игры на части ЛОГИЧЕСКИ понятные человеку, но не понятные компьютеру, и описать эти части принимая за логические единицы. Чтобы язык воспринимал их как логические единицы нужно выделять их в функции. например функция СДЕЛАТЬ ХОД.. это логическая единица. внутри функции описываешь действия которые будут делать вид и работать ТАК, как будто человек делает ход (функция изменят какие-то цифры, положения крестиков.т.п.) и допустим среди этих не логических действий(изменения цифр) встречается логическое, например (ПРОВЕРИТЬ СТОИТ ЛИ ТУТ КРЕСТИК ИЛИ КЛЕТКА ПУСТА А ЕСЛИ НЕТ ТО ЧТО В НЕЙ СТОИТ), то это уже опять логическая единица и её снова нужно группировать в функцию, и вызывать где нужно.
это общий подход)))
то есть есть логические единицы, а есть не логические единицы)
не логические это 2+4, и.т.п. а логические это "Сделать ход" "проверить пустоту поля" "Обьявить победу"
так вот ОБЯЗАТЕЛЬНО ВСЕ, даже очень простые логические единицы, (например проверить пустое ли поле" выводи в функции) и потом ты сможешь вызывать их где надо относительно нужного тебе поля например)
Последний раз редактировалось Livanderiaamarum, 10.01.2012 в 19:49.
|
|
10.01.2012, 21:26
|
Интересующийся
|
|
Регистрация: 21.12.2011
Сообщений: 26
|
|
подскажите такую вещь, есть массив, он используется в качестве поля, как его вывести в элементе canvas в виде:
[][][]
[][][]
[][][]
?
|
|
10.01.2012, 21:39
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
Сообщение от Wizout
|
подскажите такую вещь, есть массив, он используется в качестве поля, как его вывести в элементе canvas в виде:
[][][]
[][][]
[][][]
?
|
прежде чем подскажу это, не забывай разделять и саму архиитектуру приложения. то есть спроэктируй все сначала)
мысленно логически отдели ОБОЛОЧКУ от ядра)
ядро это прога которая считает КАК БУДЕТ РАБОТАТЬ ИГРА, а оболочка это прога которая РИСУЕТ КАРТИНКУ игры ИСХОДЯ ИЗ текущего состояния ядра))
как рисовать поле щас скажу)
|
|
10.01.2012, 21:42
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
У тебя такой массив?
[[поле, поле, поле],
[поле, поле, поле],
[поле, поле, поле]]
или такой
[поле, поле, поле, поле, поле, поле, поле, поле, поле]
|
|
10.01.2012, 21:47
|
|
Профессор
|
|
Регистрация: 10.12.2011
Сообщений: 290
|
|
Ты уже придумал как определять при каждом сделанном ходе ВЫПАЛА ЛИ ВЫИГРАШНАЯ КОМБИНАЦИЯ)?
Какие идеи есть?
|
|
10.01.2012, 21:48
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
Сообщение от Wizout
|
вывести в элементе canvas
|
зачем тебе она для крестиков-ноликов?
|
|
10.01.2012, 21:51
|
Интересующийся
|
|
Регистрация: 21.12.2011
Сообщений: 26
|
|
Сообщение от Livanderiaamarum
|
У тебя такой массив?
[[поле, поле, поле],
[поле, поле, поле],
[поле, поле, поле]]
или такой
[поле, поле, поле, поле, поле, поле, поле, поле, поле]
|
второй
Сообщение от Livanderiaamarum
|
Ты уже придумал как определять при каждом сделанном ходе ВЫПАЛА ЛИ ВЫИГРАШНАЯ КОМБИНАЦИЯ)?
Какие идеи есть?
|
определять наверное выигрышную позицию пока такой набросок:
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("Вы выиграли!");
}
|
|
10.01.2012, 21:52
|
Интересующийся
|
|
Регистрация: 21.12.2011
Сообщений: 26
|
|
Сообщение от dmitriymar
|
зачем тебе она для крестиков-ноликов?
|
чтобы с canvas больше практики было
|
|
10.01.2012, 21:54
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Ну и жесть))))
А не проще пускать букву Ж от места где поставлен крестик или нолик и смотреть СКОЛЬКО КРЕСТИКОВ пересекает каждая палочка буквы Ж если хоть одна палочка пересекает 3 крестика включая текущий, то ход выиграшный))))
было бы у тебя поле 20 на 20 клеток какое бы ты условие в if написал бы))?)
|
|
|
|