|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MFC - Шашечная партия |
|
MFC - Шашечная партия
|
Новый участник Сообщения: 21 |
Профиль | Отправить PM | Цитировать
решено
|
|
Отправлено: 01:23, 02-05-2009 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Ея бы посоветовал сделать не так:
1. хранить не координаты фигур, а доску 8x8 с элементами: белый, чёрный или пустой. 2. отрисовывать шашки копированием картинки. В рисовании поможет ImageList из 2-х картинок. Доску так же можно отображать картинкой. Если дома есть шахматная доска и шашки, можно сфоткать картинки хоть на сотовый телефон. Функция floodFill на мой взгляд вообще сомнительна для применения. Она выполняет заливку кистью, а не цветом. Вместо неё лучше использовать заливку региона (FillRgn), а регион отрисовать нужной формы |
Отправлено: 06:54, 04-05-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать может в синтаксисе? а можно файлы *.h и список ошибок?
|
Отправлено: 07:24, 05-05-2009 | #3 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать а ошибки, которые компилятор выдаёт?
|
Отправлено: 11:57, 05-05-2009 | #4 |
Ветеран Сообщения: 1180
|
Профиль | Отправить 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); } ... } Создание кисти - довольно трудоёмкий процесс, я бы рекомендовал держать 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 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать попробуй в файле CChess.h после #pragma once вставить #include <mfc.h>
Возможно не собирает из-за того, что cchess.h ни на что не ссылается, поэтому компилится первым, но содержит void SetCoordinates (int x, int y, int color, CPaintDC & dc), причём CPaintDC на этот момент неизвестен. Цитата .::.DIMA.::.:
|
|
Отправлено: 07:17, 08-05-2009 | #6 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать а, значит afx.h. короче тот, который у них самый главный, в котором всё описано
|
Отправлено: 06:56, 12-05-2009 | #7 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Цитата pva:
|
|
Отправлено: 06:54, 13-05-2009 | #8 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать попробуй собрать другим компилятором, может ошибки перефразирует на более понятном языке. А если всё-же соберёт (как у меня получилось) - то проблема скорее всего в компиляторе и его библиотеках. Возможно к слишком новому компилятору забыли подточить слишком старую библиотеку. Такое было с билдером 4, когда не собирался пример кода STL из его же хелпа.
|
Отправлено: 07:15, 14-05-2009 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
|