Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Daleko ne profi

Шахматы: определить поля боя фигуры

30.10.2010, 00:23. Показов 2456. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для заданной шахматной фигуры стоящей на заданном поле шахматной доски определить все биты поля этой фигуры(те которые она может побить).Результат вывести в виде матрицы в которой все поля обозначены точками(.),поле с фигурой буквой О,а битые поля *
фигуры:король,слон,ферзь,ладья,конь,черн ая пешка,белая пешка.Пешки не могут стоять на 1 и 8 строке.

Помогите решить срочно надо!!!
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2010, 00:23
Ответы с готовыми решениями:

Шахматы: определить, бьёт ли ферзь коня, конь ферзя или фигуры не угрожают друг другу
Доброго времени суток. Помогите с задачей. Надо написать программу, которая будет определять бьёт ли ферзь коня, конь ферзя или фигуры не...

Шахматы, идентификация фигуры
Добра! пришла мне идея разработать умную шахматную доску, вот думаю каким образом можно идентифицировать фигуры на ней? Пока...

Построение квадратного поля для морского боя
Здравствуйте. Такой вопрос - Как сделать так чтобы поле для морского боя было не прямоугольное когда мы создаем массив 10*10 а квадратным? ...

9
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
30.10.2010, 00:33
Не многовато фигур для одной задачи?
0
Daleko ne profi
30.10.2010, 19:21
Вообще-то нет.Программа в принципе простая(не больше 75 строк) я только не знаю как оформить ее через case
0 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 6
01.02.2012, 11:35
Мне эта задачка тоже нужно.
Может кто написать?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
01.02.2012, 13:07
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
uses crt;
const n=8;
type mas=array[-1..n+2,-1..n+2] of char;
procedure Print(p:mas);
var i,j:integer;
begin
clrscr;
for i:=1 to n do
 begin
  for j:=1 to n do
  write(p[i,j]:2);
  writeln;
 end;
readln;
end;
var p:mas;
    i,j,x,y:integer;
    w:char;
begin
clrscr;
repeat
for i:=1 to n do
for j:=1 to n do
p[i,j]:='.';
clrscr;
writeln('Выберите фигуру или выход');
writeln('1-король');
writeln('2-ферзь');
writeln('3-ладья');
writeln('4-слон');
writeln('5-конь');
writeln('6-черная пешка');
writeln('7-белая пешка');
writeln('другое-выход');
readln(w);
case w of
'1'..'5':begin
         repeat
         write('Введите номер вертикали слева направо от 1 до 8 y=');
         readln(y);
         until y in [1..8];
         repeat
         write('Введите номер горизонталии снизу вверх от 1 до 8 x=');
         readln(x);
         until x in [1..8];
         end;
'6','7': begin
      repeat
      write('Введите номер вертикали слева направо от 1 до 8 y=');
      readln(y);
      until y in [1..8];
      repeat
      write('Введите номер горизонталии снизу вверх от 2 до 7 x=');
      readln(x);
      until x in [2..7];
      end;
end;
case w of
'1':begin
    for i:=x-1 to x+1 do
    for j:=y-1 to y+1 do
    if(i in [1..8])and(j in [1..8]) then p[n-i+1,j]:='*';
    p[n-x+1,y]:='O';
    Print(p);
    end;
'2':begin
    for i:=1 to n do
    for j:=1 to n do
    if (abs(x-i)=abs(y-j))or((i=x)or(j=y)) then p[n-i+1,j]:='*';
    p[n-x+1,y]:='O';
    Print(p);
    end;
'3':begin
    for i:=1 to n do
    for j:=1 to n do
    if (i=x)or(j=y) then p[n-i+1,j]:='*';
    p[n-x+1,y]:='O';
    Print(p);
    end;
'4':begin
    for i:=1 to n do
    for j:=1 to n do
    if abs(x-i)=abs(y-j) then p[n-i+1,j]:='*';
    p[n-x+1,y]:='O';
    Print(p);
    end;
'5':begin
    for i:=x-2 to x+2 do
    for j:=y-2 to y+2 do
    if ((i>0)and(i<9)and(j>0)and(j<9))
    and((abs(i-x)=1)and(abs(j-y)=2))or((abs(i-x)=2)and(abs(j-y)=1))
    then p[n-i+1,j]:='*';
    p[n-x+1,y]:='O';
    Print(p);
    end;
'6':begin
    if y in [2..7] then
     begin
      p[n-x+2,y-1]:='*';
      p[n-x+2,y+1]:='*';
     end
    else if y=1 then  p[n-x+2,y+1]:='*'
    else p[n-x+2,y-1]:='*';
    p[n-x+1,y]:='O';
    Print(p);
    end;
'7':begin
    if y in [2..7] then
     begin
      p[n-x,y-1]:='*';
      p[n-x,y+1]:='*';
     end
    else if y=1 then  p[n-x,y+1]:='*'
    else p[n-x,y-1]:='*';
    p[n-x+1,y]:='O';
    Print(p);
    end;
else exit;
end;
until not(w in ['1'..'7']);
end.
0
0 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 6
01.02.2012, 19:25
А нельзя ли без case это всё оформить?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
01.02.2012, 19:29
Цитата Сообщение от nikoes68 Посмотреть сообщение
А нельзя ли без case это всё оформить?
Можно, например через if else, так просили.

Добавлено через 2 минуты
Только я переделывать не буду, Ваша прихоть, Вам и флаг в руки.
0
0 / 0 / 0
Регистрация: 01.02.2012
Сообщений: 6
01.02.2012, 19:33
Цитата Сообщение от Puporev Посмотреть сообщение
Можно, например через if else, так просили.

Добавлено через 2 минуты
Только я переделывать не буду, Ваша прихоть, Вам и флаг в руки.
я просто спросил
спасибо за помощь
0
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
01.02.2012, 19:46
Puporev, в 75 строк не вписался, ТС будет недоволен...
0
01.02.2012, 19:53

Не по теме:

кот Бегемот, Забыл подсчитать по невнимательности. Для ТС могу лишние снизу убрать.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.02.2012, 19:53
Помогаю со студенческими работами здесь

Создать два поля для морского боя
Для практики создайте программу рисующую на экране два поля для морского боя. Первое - игрока, второе - противника. Второе поле должно...

Определить, возможно ли с помощью фигуры коня обойти все 64 клетки поля
иследование задачи математика Эйлера: возможно ли, с помощью фигуры коня обходить все 64 клетки поля, при этом побывав в каждой клетке...

Как разместить два игровых поля морского боя в ряд по горизонтали?
Два квадратика в рядочек) Привет, простенький вопрос. Делаю жалкие попытки написать консольный морской бой (знаю-знаю, ссылки уже...

Шахматы: подпрограммы хода каждой шахматной фигуры относительно чужого короля
Помогите плиз написать подпрограммы, которые включают в себя алгоритм хода каждой шахматной фигуры (пешка, ладья, слон, ферзь, конь)...

Определить поля(отметить символом +), на которые может пойти первая фигура, не попав под удар второй фигуры
Шахматную доску будем представлять в виде квадратного символьного массива размерность 8 на 8. Дано натуральные числа v1 и g1, которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru