Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2009, 22:21   #1
isus
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 41
По умолчанию Алгоритм для Шашек

В шашечном эндшпиле остались белая дамка и две черных шашки, их позиция исходное данное.
Ход белых. Сможет ли дамка вырубить одну или сразу обе шашки?
хтонить помогите с алгоритмом.....как ето делается объясните на "пальцах"?
isus вне форума Ответить с цитированием
Старый 30.09.2009, 23:36   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Ну вот смотри,игравое поле-это двумерный массив(например,угловая [0][0](в С++)).Соответ. если в этой клетке дамка,записываем значение 1,если черная шашка,пишим 2,если пустая 0. Движение идет по диагоналям этой матрицы.Рекомендую сначала написать алгоритм для проверки на одной ли диагонали находиться шашка с дамкой(только надо быть внимательным,т.к. если они в углу их есть нельзя).Съел одну,опять запускаешь функцию проверки для второй шашки.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 30.09.2009, 23:56   #3
isus
Пользователь
 
Регистрация: 07.06.2009
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Скарам Посмотреть сообщение
Ну вот смотри,игравое поле-это двумерный массив(например,угловая [0][0](в С++)).Соответ. если в этой клетке дамка,записываем значение 1,если черная шашка,пишим 2,если пустая 0. Движение идет по диагоналям этой матрицы.Рекомендую сначала написать алгоритм для проверки на одной ли диагонали находиться шашка с дамкой(только надо быть внимательным,т.к. если они в углу их есть нельзя).Съел одну,опять запускаешь функцию проверки для второй шашки.
это я давно понял, я непойму как написать алгоритм проверки стоит ля дамка с шашкой на одной диагонали....если можешь подскожи
isus вне форума Ответить с цитированием
Старый 01.10.2009, 00:01   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

тебе на каком языке надо написать?..
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 01.10.2009, 03:12   #5
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Плохо

Цитата:
Сообщение от Скарам Посмотреть сообщение
тебе на каком языке надо написать?..
Вопрос : Зачем в подписи ставить ссыль на эксплойт с троянами ?
Изображения
Тип файла: jpg td.JPG (50.2 Кб, 176 просмотров)
Lime вне форума Ответить с цитированием
Старый 01.10.2009, 09:14   #6
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Цитата:
Зачем в подписи ставить ссыль на эксплойт с троянами ?
там нет трояна,просто эту страницу нельзя закрыть,у самого стоит Касперский Интернет Секъюрити 2009,он не ругается.так же и НОД Антивирус.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 01.10.2009, 13:30   #7
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Восклицание

Цитата:
Сообщение от Скарам Посмотреть сообщение
там нет трояна,просто эту страницу нельзя закрыть,у самого стоит Касперский Интернет Секъюрити 2009,он не ругается.так же и НОД Антивирус.
Как ни странно у меня тоже есть такой скриптик , только вот мой антивирус никогда не ругался на него. В отличии от твоего.
Lime вне форума Ответить с цитированием
Старый 01.10.2009, 14:50   #8
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Стрелка

Цитата:
Сообщение от isus Посмотреть сообщение
это я давно понял, я непойму как написать алгоритм проверки стоит ля дамка с шашкой на одной диагонали....если можешь подскожи
Алгоритм простой
Есть координаты шашки и дамки.

Самое влоб что можно сделать - делаеш 4 цикла в 4 стороны от координат дамки и в каждом цикле проверяеш не совпадает ли текущая координата с координатой шашки.

Картинка отсюда

Поправочка я нарисовал черную дамку
Изображения
Тип файла: gif chess2.GIF (3.3 Кб, 199 просмотров)

Последний раз редактировалось Lime; 01.10.2009 в 16:10. Причина: уточнил ...
Lime вне форума Ответить с цитированием
Старый 01.10.2009, 15:51   #9
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

господи матрицы,циклы,нули,двойки,единицы вы чего?
вот что я накодила:
Код:
program shashki;
{  вариант на паскале  думаю что реализовать на другом ЯП не составит труда 
дописать 1)проверку ввода  1 <d.x,d.y,s.x,s.y,s1.x,s.y  < 8 (для русских шашек промежуток [1..10]])
                       2)положение шашек на белой или на черной   if (d.x mod 2)<>(d.y mod 2) then на черной
                           и так для каждой  шашки 
                           вот и весь алгоритм!!!
                          with the best Wishes
                                     Одиночество в сети!    
 p.s что не понятно спрашивайте   }
uses
 crt;
  type  Point = record
            x:word;
            y:word;
            end;
 var  d,s1,s2:Point;
begin
 Writeln('input DaMka position x[1..8]');
 Readln(d.x);
  Writeln('input damka position y[1..8]');
 Readln(d.y);
 Writeln('input WaWka1 position x[1..8]');
 Readln(s1.x);
  Writeln('input WaWka1 position y[1.8]');
 Readln(s1.y);
  Writeln('input WaWka2 position x[1..8]');
 Readln(s2.x);
  Writeln('input WaWka2 position y');
 Readln(s2.y);
  if  if (abs(s1.x-d.x)=abs(s1.y-d.y)) and((s1.x<>8) or(s1.y<>8) or(s1.x<>1) or(s1.y<>1))  then
  begin
  writeln('DaMka can eat WaWka1 ');
  d.x:=s1.x+1;
  d.y:=s1.y+1;
  if  if (abs(s2.x-d.x)=abs(s2.y-d.y)) and((s2.x<>8) or(s2.y<>8) or(s2.x<>1) or(s2.y<>1)) then
  writeln('and DaMka can eat WaWka2 ');
  end
  else if
    if (abs(s2.x-d.x)=abs(s2.y-d.y)) and((s2.x<>8) or(s2.y<>8) or(s2.x<>1) or(s2.y<>1)) then
  begin
  writeln('DaMka  can eat WaWka2 ');
  d.x:=s2.x+1;
  d.y:=s2.y+1;
  if (abs(s1.x-d.x)=abs(s1.y-d.y)) and((s1.x<>8) or(s1.y<>8) or(s1.x<>1) or(s1.y<>1)) then
  writeln('and DaMka  can eat WaWka1 ');
  end
  else
  Writeln('i can not eat WaWka1 and WaWka2');
  writeln('KoopDuHaTbI:');
  writeln('DaMKa: [',d.x,',',d.y,']');
  writeln('WaWka1: [',s1.x,',',s1.y,']');
  writeln('WaWka2: [',s2.x,',',s2.y,']');
  readln;

 end.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 01.10.2009, 16:08   #10
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Радость

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
господи матрицы,циклы,нули,двойки,единицы вы чего?
Мы кодить пытаемся, рационально в данном случае или нет не важно.
Матрица - шашечная доска [10,10]
0-пусто
1- дамка
2- шашка

вообще 2 цикла по диагоналям и проверка наличия на них шашки с условием что онная не нахожится на последней позиции диагонали.

Помоему как алгоритм - куда ещё понятнее ...

а Ваша пачка кода...
{Без обид просто лень смотреть , тем более топикстартеру полезнее написать самому на нужном ему ЯП}
Lime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм для задачи. MoxFalder Помощь студентам 5 19.01.2011 14:04
Delphi7, алгоритм для tsrtinglist Tirendus Помощь студентам 4 19.06.2009 14:03
алгоритм для бенчмарка CraZZy RabbIt Общие вопросы Delphi 9 02.03.2009 22:01
Алгоритм для Pascal Trojan-PSW.Win32 Помощь студентам 6 29.01.2008 10:17