Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 4
1

Delphi. Ход конем

24.02.2013, 16:28. Показов 1882. Ответов 2
Метки нет (Все метки)

Здравствуйте.

Есть задача:

Шахматную доску будем представлять символьной матрицей размера 8x8. Даны натуральные числа n, причём 1<=n<=8 и m, причём 1<=m<=8. Эти числа номера вертикали и горизонтали, определяющие местоположения коня. Соответствующий элемент матрицы надо положить равным символу К. Поля находящиеся под угрозой коня, надо положить равными символу *, а остальные - символу 0.
Вот то, что получилось на настоящий момент:

Код
var
  i,j:integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
with StringGrid1 do begin
      for i:=0 to 7 do
        for j:=0 to 7 do
          Cells[i,j]:='0';

    i:=StrToInt(Edit1.Text)-1;
    j:=StrToInt(Edit2.Text)-1;


if (i<2) then

 Cells[i,j]:='K';
     Cells[i+1,j+2]:='*';
     Cells[i+2,j+1]:='*';
     Cells[i+2,j-1]:='*';
     Cells[i+1,j-2]:='*';

if (i>2) then

 Cells[i,j]:='K';
     Cells[i-1,j-2]:='*';
     Cells[i-2,j-1]:='*';
     Cells[i-2,j+1]:='*';
     Cells[i-1,j+2]:='*';

if (j<2) then
 Cells[i,j]:='K';
     Cells[i-1,j-2]:='*';
     Cells[i-2,j-1]:='*';
     Cells[i+2,j-1]:='*';
     Cells[i+1,j-2]:='*';

if (j>2) then
 Cells[i,j]:='K';
    Cells[i+1,j+2]:='*';
    Cells[i+2,j+1]:='*';
    Cells[i-2,j+1]:='*';
    Cells[i-1,j+2]:='*';


  end;
end;
Есть пара вопросов:

1. Если i или j такое, что i-1, j-1, i-2, j-2 будут отрицательными, то в итоге будет ошибка и решаться не будет.

2. Координаты по j идут сверху вниз, а надо снизу вверх. Т.е. если мы пишем j=2, то это будет не вторая клетка снизу, а седьмая (или вторая сверху).

Помогите, пожалуйста, разобраться.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2013, 16:28
Ответы с готовыми решениями:

Ход конем: приложение зависает
Уважаемые форумчане помогите решить проблему с зависанием ввожу в Стрингрид единичку(первый ход)...

Разработать игру Ход конем
поле состоит из ста квадратов.цель игры-расставить на игровом поле числа от 1 до 100 так чтобы...

Обход конем шахматной доски
Здравствуйте, мне нужно написать программу для обхода конем шахматной доски, при этом конь должен...

СИ++ ход конем
Добрый вечер. Я начинающий в Си++, даже очень. Т.к. лекций в универе по си++ теперь(раньше были по...

__________________
2
http://1248.site
130 / 118 / 20
Регистрация: 15.05.2012
Сообщений: 340
Записей в блоге: 10
24.02.2013, 17:39 2
Лучший ответ Сообщение было отмечено BLG как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j,ki,kj:integer;
begin
  ki:=StrToInt(Edit1.Text)-1;
  kj:=StrToInt(Edit2.Text)-1;
 
  with StringGrid1 do 
  //begin
      for i:=0 to 7 do
        for j:=0 to 7 do
          if (ki=i)and(kj=j) then Cells[i,j]:='K'
          else if Abs(ki-i)*Abs(kj-j)=2 then Cells[i,j]:='*'
          else Cells[i,j]:='0';
  //end;
end;
2
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 4
25.02.2013, 11:58  [ТС] 3
Спасибо!

Только добавил (kj=7-j) и Abs(kj-(7-j)), чтобы отсчитывал снизу доски.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2013, 11:58

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Ход конем
Вам дана строка, содержащая координату клетки на шахматном поле (например, “A2”). Напишите функцию...

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

Ход конем
Совсем недавно Вася занялся программированием и решил реализовать собственную программу для игры в...

Ход конем
Как переделать программу, чтобы можно было самому ходить конем по шахматной доске? Пример программы...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.