Имя пользователя:
Пароль:
 

Название темы: Шашечная партия
Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
class Chess
{
public:
	void Chess::SetCoordinates (int x, int y, int color, CPaintDC & dc)
	{
		itsX1 = x - 25;
		itsX2 = x + 25;
		itsY1 = y - 25;
		itsY2 = y + 25;
		itsColor = color;
		Paint (itsColor, dc);
	}
	
      ...
}
Chess:: здесь лишнее (возможно на это и ругается)

Создание кисти - довольно трудоёмкий процесс, я бы рекомендовал держать 2 кисти одновременно (чёрную и белую) на всю отрисовку:
Код: Выделить весь код
class CChildView { CBrush brBlack, brWhite; ... };

CChildView::fPen(...)
{
  ...

  // кисти реально хранятся всё время существования CChildView
  // делаем индексированный массив и индекс, который будет постоянно меняться
  // операцией xor.
  CBrush* brush_set[2] = {&brBlack, &brWhite};
  unsigned brush_n = 0;
  // но можно было бы сделать хитрее: посчитать сколько будет
  // addr_xor = reinterpret_cast<unsigned>(&brBlack) ^ reinterpret_cast<unsigned>(&brWhite);
  // а потом в цикле addr_brush ^= addr_xor
  // это бы съэкономило около 30 байт памяти и 4 тактов процессора, но запутало бы код.

  CRect  draw_area(31, 31, 31+8*50, 31+8*50);  // диапазон доски, полезно иметь вообще
  CRect  rect; // клетка, которую будем в цикле перемещать

  for(rect.bottom=draw_area.top; rect.bottom<draw_area.bottom; brush_n^=1)
  {
    rect.top = rect.bottom;
    rect.bottom += 50;

    for(rect.right=draw_area.left; rect.right<draw_area.right;  brush_n^=1)
    {
      rect.left = rect.right;
      rect.right += 50;
      dc.FillRect (rect, brush_set[brush_n]);
    }
  }

  ...
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:13, 07-05-2009 | #5

Название темы: Шашечная партия