Форум программистов, компьютерный форум CyberForum.ru

Конструктор и классы. Предметная область: «Конь на шахматной доске» - C++

Восстановить пароль Регистрация
 
Stocky
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 30
11.03.2013, 23:50     Конструктор и классы. Предметная область: «Конь на шахматной доске» #1
Помогите написать прогу к этой задаче:
Предметная область: «Конь на шахматной доске». Данные класса: координаты коня. Функции класса: сравнение позиций двух коней, проверка, не находятся ли кони под боем друг друга, проверка, может ли конь пойти в указанную позицию.

Добавлено через 2 часа 49 минут
Ниодного морпеха нету способного решить эту задачу?
пичаль
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2013, 23:50     Конструктор и классы. Предметная область: «Конь на шахматной доске»
Посмотрите здесь:

C++ Динамика,С++,предметная область Аптека
C++ Числа на шахматной доске в С++
Числа на шахматной доске C++
C++ Числа на шахматной доске
C++ Расставить n ладей на шахматной доске n*n
Ход на шахматной доске C++
C++ Геометрическая прогрессия на шахматной доске
Предметная область – «Записная книжка» C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
12.03.2013, 08:43
  #2

Не по теме:

Цитата Сообщение от Stocky Посмотреть сообщение
Ниодного морпеха нету способного решить эту задачу?
Нет, нету, да и как правило, морпехи другие задачи решают.
Если только кому то делать нечего.
У всех свои дела и писать полностью решения никому не охота.
Выкладывайте свое, Вам помогут исправить.

anmartex
...
 Аватар для anmartex
1700 / 1193 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
12.03.2013, 10:44     Конструктор и классы. Предметная область: «Конь на шахматной доске» #3
C++
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
#include <iostream>
#include <cstdlib>
 
class TChessman
{
   public:
      static const int CWidht = 8;
      static const int CHeight = 8;
 
   protected:
      int x, y;
 
      TChessman(const TChessman&);
 
      bool InArea(int theX, int theY)
      {
         return ((0 <= theX) && (theX < CWidht)) &&
                ((0 <= theY) && (theY < CHeight));
      }
 
   public:
      TChessman(int theX, int theY): x(-1), y(-1)
      {
         if (InArea(theX, theY))
         {
            x = theX,
            y = theY;
         }
      }
 
      bool IsInit() const
      {
         return (x != -1) || (y != -1);
      }
 
      int GetX() const
      {
         return x;
      }
 
      int GetY() const
      {
         return y;
      }
 
      virtual bool IsCanMove(int, int) const = 0;
      virtual bool Intersection(const TChessman&) const = 0;
      virtual bool Move(int, int) = 0;
};
 
class TKnight: public TChessman
{
   public:
      TKnight(int theX, int theY): TChessman(theX, theY) { ; }
 
      virtual bool IsCanMove(int theX, int theY) const
      {
         if (IsInit() == false)
         {
            return false;
         }
 
         int len1 = abs(x - theX);
         int len2 = abs(y - theY);
 
         return ((len1 == 1) && (len2 == 2)) || ((len1 == 2) && (len2 == 1));
      }
 
      virtual bool Intersection(const TChessman& chessman) const
      {
         return IsCanMove(chessman.GetX(), chessman.GetY());
      }
 
      virtual bool Move(int theX, int theY)
      {
         bool isGo = IsCanMove(theX, theY);
 
         if (isGo)
         {
            x = theX;
            y = theY;
         }
 
         return isGo;
      };
};
 
int main()
{
   TKnight knight1(1, 1);
 
   if (knight1.Move(3, 2))
   {
      std::cout << "knight1 move in [" << knight1.GetX()
                << "," << knight1.GetY() << "]" << std::endl;
   }
   else
   {
      std::cout << "knight1 not move" << std::endl;
   }
 
   TKnight knight2(2, 4);
   if (knight1.Intersection(knight2))
   {
      std::cout << "knight1 intersects with knight2" << std::endl;
   }
   else
   {
      std::cout << "knight1 not intersects with knight2" << std::endl;
   }
 
   return 0;
}
Yandex
Объявления
12.03.2013, 10:44     Конструктор и классы. Предметная область: «Конь на шахматной доске»
Ответ Создать тему
Опции темы

Текущее время: 14:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru