Спрограммировал уникальные шахматы 15 моделей.
Есть простенькая ошибка,как я прописал проверку шаха.
Шах ставится отлично,но есть недоразумение при снятии шаха,при защите короля
Вот вы программировали шахматы?
Как можно прописать попроще проверку шаха?
Я сделал алгоритм по своей логике,и это не идеально
На доске есть клетки $sh[120];
Доска 10х12
Как знающие люди прописывают обработку клеток?
Логически у меня всё работает,но метод несовершенен
Как говорил один программист ,нужна "матрица ходов",но её делать не умею
В моей обработке что то не так,защищаюсь от шаха конем,клетка перекрывает шах,и равна - 4,а код обрабатывает шах,и не видит коня,говорит клетка равна - 0
Это вариант 6,седня играл,и попал на свой алгоритм http://chess.liozenda.ru/
Код:
if($sh[$i]=='15' | $sh[$i]=='17') { // проверка белый ферзь влево есть ли шах
if($sh[$i-1]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='40' & $sh[$i-4]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='40' & $sh[$i-4]=='40' & $sh[$i-5]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='40' & $sh[$i-4]=='40' & $sh[$i-5]=='40' & $sh[$i-5]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='40' & $sh[$i-4]=='40' & $sh[$i-5]=='40' & $sh[$i-6]=='40' & $sh[$i-7]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='40' & $sh[$i-4]=='40' & $sh[$i-5]=='40' & $sh[$i-6]=='40' & $sh[$i-7]=='40' & $sh[$i-8]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='40' & $sh[$i-4]=='40' & $sh[$i-5]=='40' & $sh[$i-6]=='40' & $sh[$i-7]=='40' & $sh[$i-8]=='40' & $sh[$i-9]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='40' & $sh[$i-4]=='40' & $sh[$i-5]=='40' & $sh[$i-6]=='40' & $sh[$i-7]=='40' & $sh[$i-8]=='40' & $sh[$i-9]=='40' & $sh[$i-10]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i-1]=='40' & $sh[$i-2]=='40' & $sh[$i-3]=='40' & $sh[$i-4]=='40' & $sh[$i-5]=='40' & $sh[$i-6]=='40' & $sh[$i-7]=='40' & $sh[$i-8]=='40' & $sh[$i-9]=='40' & $sh[$i-10]=='40' & $sh[$i-11]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
} // конец белый ферзь влево
if($sh[$i]=='15' | $sh[$i]=='17') { // проверка белый ферзь вправо есть ли шах
if($sh[$i+1]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='40' & $sh[$i+4]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='40' & $sh[$i+4]=='40' & $sh[$i+5]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='40' & $sh[$i+4]=='40' & $sh[$i+5]=='40' & $sh[$i+5]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='40' & $sh[$i+4]=='40' & $sh[$i+5]=='40' & $sh[$i+6]=='40' & $sh[$i+7]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='40' & $sh[$i+4]=='40' & $sh[$i+5]=='40' & $sh[$i+6]=='40' & $sh[$i+7]=='40' & $sh[$i+8]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='40' & $sh[$i+4]=='40' & $sh[$i+5]=='40' & $sh[$i+6]=='40' & $sh[$i+7]=='40' & $sh[$i+8]=='40' & $sh[$i+9]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='40' & $sh[$i+4]=='40' & $sh[$i+5]=='40' & $sh[$i+6]=='40' & $sh[$i+7]=='40' & $sh[$i+8]=='40' & $sh[$i+9]=='40' & $sh[$i+10]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
if($sh[$i+1]=='40' & $sh[$i+2]=='40' & $sh[$i+3]=='40' & $sh[$i+4]=='40' & $sh[$i+5]=='40' & $sh[$i+6]=='40' & $sh[$i+7]=='40' & $sh[$i+8]=='40' & $sh[$i+9]=='40' & $sh[$i+10]=='40' & $sh[$i+11]=='6') { $proverka=true; echo '<br>Шах черному королю от ферзя + ['.$i.'], <font size=1><strong>( Возможно ошибка )</strong></font>'; }
} // конец белый ферзь вправо