Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> игра шашки 
V
    Опции темы
susanin
Дата 15.4.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



здравствуйте. поступила просьба от очень милых девушек написать им игру шашки на javascript ( в универе задали)....но мне самом никак не придумать, как отлавливать движение шашки? как определить что одна шашка перешагнула через другую? допустим есть таблица, в которой все ячейки имеют свое имя..в этих ячейках находятся шашки.(картинки)...у кого какие идеи будут? мне код не нужен...мне главное логику понять..а уж код то я и сам наверно смогу сделать smile 
PM MAIL   Вверх
ksnk
Дата 15.4.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Недопонимаю сути вопроса smile
Начинать нужно с реализации drag&drop. Для этого нужно поковырять соответствующий плагин любимого фреймворка.

После начала Drag'а вычисляются "возможные конечные клетки", в процессе вычисления получаем и список сожранных шашек противника... Лучше не увлекаться сразу просчитыванием комбинаций, пусть юзер "ест" по одной...

Просчитывать автоматически ответный ход - это сильный наворот. Не думаю, что оно нужно "милым девушкам".  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
susanin
Дата 15.4.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



ksnk, не! драга энд дропа не надо! достаточно один раз щелкнуть на шашке, чтобы ее активировать, а второй раз щелкнуть на клетке, в которую хотим перейти. ну естественно при этом еще надо проверить корректность выбранной ячейки для перехода
PM MAIL   Вверх
bars80080
Дата 16.4.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



Цитата(susanin @  15.4.2009,  23:41 Найти цитируемый пост)
достаточно один раз щелкнуть на шашке, чтобы ее активировать, а второй раз щелкнуть на клетке,

тогда причём здесь
Цитата(susanin @  15.4.2009,  21:41 Найти цитируемый пост)
как отлавливать движение шашки

движения как такового нет. лишь рассчёт - переместить или нет шашку
PM MAIL WWW   Вверх
susanin
Дата 16.4.2009, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



ну я под движением понимал не сам процесс... как обработать тот, момент, когда мы переступаем через шашку противника...я думал как нибудь смотреть на разницу по x и y между начальным значением и конечным...но это не то....надо как то определить, что шашка перескочила через одну клетку по диагонали, и если в этой клетке была шашка противника, то убрать ее, а если ее там не было, то отменить ход, так как он неправильный
PM MAIL   Вверх
bars80080
Дата 16.4.2009, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



координатная сетка и положение шашек заданное в двумерном массиве. это чистая математика

шашка один Xold, Yold, Xnew, Ynew, type Black
шашка два Xcurrent Ycurrent, type White

остаётся просчитать, чтобы разница между Xnew - Xold == 2 или -2, то же самое для Y, а также, чтобы Xcurrent и Ycurrent располагались в промежутке. плюс надо проверить тип и не выйдет ли шашка за границу доски
PM MAIL WWW   Вверх
susanin
Дата 16.4.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



bars80080, спасибо! кажется мысль пошла работать... smile  но тему с разрешения модераторов закрывать пока что не буду...мало ли еще вопросы появятся smile 
PM MAIL   Вверх
susanin
Дата 18.4.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



всем привет еще раз! вобще почти разобрался с этой игрой...осталось совсем немного..и тут у меня чего то не работает сравнение...надо проверить что в определенной ячейке таблицы находится определенное изображение...и в зависимости от этого уже будут дальнейшие решения...но при сравнении изображения у меня всегда выдается false... smile  вот код
Код

image=document.getElementById(cell).innerHTML;//здесь мы получаем содержимое ячейки...т.е. картинку (при выводе типа document.body.innerHTML+=image картинка выводится правильно)
......................................................
.......................................................далее идет код
......................................................
if(image=='<img src="white_ball.jpg"></img>') и вот здесь нам надо проверить что картинка, полученная ранее равна определенной картинк
{
..........................
.........................и снова код
..........................
}

почему сравнение всегда дает false? может я неправильно сравниваю?сама картинка в ячейку заносится как 
Код

content = '<img src="white_ball.jpg"></img>';
str+="<td background="+image+" width=50 align = center valign=middle id="+i+j+" onclick=Step("+i+j+")>"+content+"</td>";

PM MAIL   Вверх
Soah
Дата 18.4.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 13
Всего: 54



Поставь alert() и посмотри
Код

alert(document.getElementById(cell).innerHTML);


имхо, лучше так
Код

var image = document.getElementById(cell).getElementsByTagName('img')[0].src;

или
Код

var image = document.getElementById(cell).firstChild.src;

PM MAIL   Вверх
susanin
Дата 18.4.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



Цитата(Soah @  18.4.2009,  21:42 Найти цитируемый пост)
имхо, лучше так

но это путь получается...а мне надо именно содаржимое ячейки...а содержимое там картинка...
PM MAIL   Вверх
bars80080
Дата 18.4.2009, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



Цитата(susanin @  18.4.2009,  21:15 Найти цитируемый пост)
<img src="white_ball.jpg"></img>

может быть, коль браузер понимает, что это картинка, он преобразует её к каноническому виду <img src="white_ball.jpg" alt="" />?

имхо, лучше, как говорит Soah, сравнивать атрибуты .src, ведь они же тебе нужны?


п.с.
лучше не использовать в качестве имени переменной слово cell, хотя бы cell1

каждый раз заново отстраиваешь таблицу? наверно, всё же проще можно было
PM MAIL WWW   Вверх
Soah
Дата 18.4.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 13
Всего: 54



Код

var image = document.getElementById(cell).firstChild.src;

if (image == "путь")


Цитата(susanin @  18.4.2009,  22:00 Найти цитируемый пост)
мне надо именно содаржимое ячейки

почему?
PM MAIL   Вверх
bars80080
Дата 18.4.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



Цитата(susanin @  18.4.2009,  22:00 Найти цитируемый пост)
но это путь получается...а мне надо именно содаржимое ячейки...а содержимое там картинка... 

дык, разница в содержимом - только путь до картинки? а если ячейка пустая, то можно прежде проверить, не пустая ли она: 

Код

if(document.getElementById(cell).innerHTML)

PM MAIL WWW   Вверх
susanin
Дата 18.4.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 7



не....ячейка точно не пустая. у меня до этого все проверяется нормально! запара именно с тем, что не сравнивает....
вот у меня заносится содержимое 
Код

content = '<img src="white_ball.jpg"></img>';
str+="<td background="+image+" width=50 align = center valign=middle id="+i+j+" onclick=Step("+i+j+")>"+content+"</td>";

в ячейке есть картинка.... а потом надо проверить что в этой ячейке именно эта картинка!
вот я и пишу
Код

image=document.getElementById(cell).innerHTML;
if(image=='<img src="white_ball.jpg"></img>')
{
}

Цитата(bars80080 @  18.4.2009,  22:04 Найти цитируемый пост)
может быть, коль браузер понимает, что это картинка, он преобразует её к каноническому виду <img src="white_ball.jpg" alt="" />?

попробовал сравнить с <img src="white_ball.jpg" alt="" />...все равно false
PM MAIL   Вверх
Soah
Дата 18.4.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 18.2.2009

Репутация: 13
Всего: 54



susanin, 
Цитата(Soah @  18.4.2009,  21:42 Найти цитируемый пост)
Поставь alert() и посмотри


в IE6
Код

<IMG src="white_ball.jpg"></IMG>


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.