![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MFC - Шашечная партия |
|
MFC - Шашечная партия
|
Новый участник Сообщения: 21 |
решено
|
|
Отправлено: 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 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
|