Как сделать шахматную доску в паскаль

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

namespace WindowsFormsApplication1
public partial class Form1 : Form
Graphics Graph;
Pen MyPen;
int a, b;
SolidBrush bla,whe;

public Form1()
InitializeComponent();
Graph = CreateGraphics();
MyPen = new Pen(Color.Black);
bla = new SolidBrush(Color.Black);
whe = new SolidBrush(Color.White);
>

private void Form1_Paint(object sender, PaintEventArgs e)
int w = Width / 8, h = Height / 8,x=0,y=0,k=1;
for (int i = 0; i

Можно попробовать перебором.
Доска 8*8 = 64 клетки. На ней нужно разместить 12 коней: 64*12 + 63*11 + . + 53*1 = 4706 возможных вариантов(расстановка без повторений).
далее понадобится либо 2 массива 8*8 либо 1 массив 8*8*2, где в первом будут храниться положения коней, а во втором - флаги для клеток - они под ударом.
Остается только задать функцию, которая для местоположения коня возвращает координаты клеток, по которым он может ударить.
Здесь тоже довольно просто:
например конь находится в (4,4) - 8 возможных ходов: (4 +- 2, 4 +-1) и (4 +-1, 4 +-2). Остается только проверять, чтоб конь не находился близко к краю, где количество его возможных ходов уменьшается, т.е.
(1,1) - влево и вверх он уже не пойдет( (1+2,1 + 1), (1+1,1+2) всего 2 хода).
И после проверки ходов коней во 2й массив(вначале он заполнен нулями) записываются единички в те клетки, куда могут сходить кони.
Если весь массив заполнен единичками => задача решена.

Теперь остается только перебор вариантов расположения коней:

// ща подумаю и отпишусь

так вот. рассмотрим на меньшем числе комбинаций. 3 коня разместить в 8 клетках
11100000 - начало. первую справа двигаем
11010000 затем вторую справа
10110000 затем 3я справа пробегает все свободные клетки и возвращается на место
01110000
00111000
00110100
00110010
00110001
( 10110000) теперь предпоследнюю справа двигаем вправо
10011000 - далее последняя опять пробегает все свободные и возвращается на место
01011000
00111000
00011100
00011010
00011001
(10011000) опять предпоследнюю справа двигаем
10010100 последняя опять пробегает все пустые клетки.
.
до тех пор, пока предпоследняя не пробежит все значения и не вернется на место. потом первую справа двигает..
11001000.
.
00000111 - это конец.
все это походит на рекурсию.
и так продолжается до тех пор, пока 1я не пробежит все клетки.
конечно варианты будут повторяться. но это не так страшно)

Для шахматной доски будет кортеж из 64 мест.
и там точно так же проходит процесс - сдвигаем первую справа, затем вторую, . до тех пор, пока не дойдем до последней(она пробежит все клетки.) потом предпоследнюю, опять последняя все пробежит.
короче движемся справа налево, затем слева направо до тех пор, пока первая не пройдет все клетки.
Вычислять эти варианты в ходе выполнения программы. долго получится. Лучше заранее их найти и записать в файл(т.е. отдельная прога для этого).

Теперь, чтобы это расставить в массиве 8*8 делаем следующее:
берем позицию для элемента - допустим с. строка в матрице это с делим нацело на 8, а столбец - остаток от деления с на 8.


Ну чтож. алгоритм думаю объяснил, остается только пожелать удачи, в добрый путь))))

ПАСКАЛЬ Даны координаты двух различных полей шахматной доски х1, y1, x2, y2 (целые числа, лежащие в диапазоне 1 - 8).


var x1, x2, y1, y2 : integer ;

readln(x1, y1, x2, y2) ;

if ((abs(x1 - x2)< ; = 1)and(abs(y1 - y2)< ; = 1))then writeln('YES')else


Задания по паскалю Даны координаты двух различных полей шахматной доски х1, y1, x2, y2 (целые числа, лежащие в диапазоне 1 - 8)?

Задания по паскалю Даны координаты двух различных полей шахматной доски х1, y1, x2, y2 (целые числа, лежащие в диапазоне 1 - 8).


Шахматная доска состоит 8 столбцов и 8 строк?

Шахматная доска состоит 8 столбцов и 8 строк.

Какое минимальное количество бит потребуется для кодирования координат одного шахматного поля?


Помогите, пожалуйста, написать программу в паскале к задаче?

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

Даны три целых числа : A, B, C.

Проверить истинность высказывания : "Число B находится между числами A и C".


Написать программу на Pacal задачи : 1?

Написать программу на Pacal задачи : 1.

Дано два ненулевых числа проверить истинность высказывания "числа имеют разные знаки".

2. Дано два целых числа проверить истинность высказывания " оба числа четные".


Шахматная доска состоит 8 столбцов и 8 строк?

Шахматная доска состоит 8 столбцов и 8 строк.

Какое минимальное количество бит потребуется для кодирование координат одного шахматного поля.


Шахматная доска состоит 8 столбцов и 8 строк?

Шахматная доска состоит 8 столбцов и 8 строк.

Какое минимальное количество бит потребуется для кодирования координат одного шахматного поля?


Проверить истинность высказывания : "Данные числа x, y являются координатами точки, лежащей во второй координатной четверти"?

Проверить истинность высказывания : "Данные числа x, y являются координатами точки, лежащей во второй координатной четверти".


Шахматная доска состоит 8 столбцов и 8 строк?

Шахматная доска состоит 8 столбцов и 8 строк.

Какое минимальное количество бит потребуется для кодирования координат одного шахматного поля?


На шахматной доске в клетке (x1, y1) находится шахматный конь?

На шахматной доске в клетке (x1, y1) находится шахматный конь.

Определите, бьёт ли конь поле (x2, y2).

На вход программе даются четыре целых числа x1, y1, x2, y2 (1<=x1, y1, x2, y2<=8) — координаты двух клеток на шахматной доске рамера 8x8.

Требуется вывести 1, если поле находится под боем коня, или 0, если нет.


Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8?

Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8.

По введенным координатам двух полей выясните являються эти поля одного цвета.


Не уверен верно ли я понял задание void sqr(int m, int n) < int b = 0 ; for (int i = m ; i.


1)4445601 2)427816 3)159824аcd 4)___.


Для того, чтобы узнать, не встречалось ли 20 - е число раньше, надо помнить, какие числа были до этого. Так что без массива с меньшим размером, чем 19, не обойтись (на самом деле это так, только если в каждом элементе массива хранить только одно чис..


А г в б помоему так но это не точно.


Var a : array[ - 50. 50] of longint ; i : longint ; Begin for i : = - 50 to 50 do if (i>7) then write(i, ' ') ; writeln ; End.


РАК = 1101010 Пытаемся расшифровать 1101010. Начинается с 11. , на 11 начинается только код Р. Оканчивается на . 0, что совпадает только с кодом буквы К. Остается 01, что расшифровывается однозначно как А. Декодируется однозначно. ЛАК = 011010..


16384бит равняеться 2048 байт 2048 байт равняеться 2 Кбайтам.


Если срочно, то вот так : begin Writeln('Температура апреля : ') ; var a : = ArrRandom(30, - 10, 10) ; a. Println ; var sr : = a. Where(x - >x> = 0). Average ; Writeln('Средняя температура для дней, когда >0 = ', sr : 4 : 1) ; var k : = a. Where(..

Читайте также: