![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| aMiGo! |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 6.4.2003 Где: Тула Репутация: нет Всего: нет |
Привет всем!
Есть задача: написать приложение похожее на Windows Miner Вот кусок задания, в который я никак не вьеду, если не трудно, то разъясните плиз ху есть ху! (основной причиной моего непонимания является последний абзац)
?? Какие еще стандартные классы от которых удобно наследоваться и самим отработать все действия пользователя! --------------------
With the best regards, Anton |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Вроде заказчик хочет компонент COM/ActiveX, с "событиями" и "свойствами", определяющими работу именно самого минного поля, в отрыве от GUI-компонента (Grid, Button и пр.).
Если весь код игры поместить в COM-компонент и кинуть события и методы в COM-интерфейс, то можно будет юзать этот компонент и в Делфях, и в любых Сях, с минимальными затратами времени (необходимыми для прикрутки окна, кнопок и пр. графических "радостей" к COM-объекту). -------------------- ![]() |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Не, я так понимаю, что не надо кнопки и сетку использовать. То есть сделать поле наследником какого-то оконного класса (CWnd) и
Можно же было, на окно кнопок набросать и обрабатывать нажатия на них. Я не считаю, что это хорошо. Ресурсов будет жрать неоправдано. |
|||
|
||||
| aMiGo! |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 6.4.2003 Где: Тула Репутация: нет Всего: нет |
Можно плиз по подробнее, как это все реализовать на С++ Builder.
Вот даю полное задание, для дальнейших соображений
--------------------
With the best regards, Anton |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Думаю, надо создать класс ячейки и класс поля, содержащего эти ячейки. class TCell; class TField : TPicture { CCell* cells; struct { unsigned col; unsigned row; } size; ................................. }; И пиши методы для работы с полем и обработчики событий. Но не надо реализовывать в событие OnClick реакцию на нажатие кнопки полность. Надо вызвать метод ячейки, на которой кликнули (TCell::Select). И т.д. |
|||
|
||||
| aMiGo! |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 6.4.2003 Где: Тула Репутация: нет Всего: нет |
Я уже начал писать.. вот зацени плиз RAN чо у меня вышло..
--------------------
With the best regards, Anton |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Пока рано что-то серьёзное говорить, напиши побольше. Точно не понятно следующее:
Что этот delete должен делать? Теперь, закрой лучше все переменные классов и напиши методы для работы с ними. В твоём случае это просто необходимо. Во-первых, изменение uRowCount должно вызывать изменение uCellsCount, а во-вторых, это вообще недопустимо по логике твоего класса (у тебя память выделена уже под uCellsCount ячеек). Кстати вместо uCellsCount можно использовать метод getCellsCount() { return uRowCount * uColCount; }. В деструкторах не надо обнулять поля, всё равно объект удаляется. И ещё, не надо писать CellStatus = (TCellStatus)0;, используй только значения из enum (обязательно придерутся). Не совсем понимаю смысл id ячейки, также думаю можно обойтись и без X, Y. Что будет в cellDigit, цифры? Тогда зачем в TVisibleStatus vsDigit'ы? Короче, пиши дальше. Не забудь показать конструктор ячейки, его здесь нет. Я думаю направление правильное. Цикл минирования поля понравился. |
|||
|
||||
| aMiGo! |
|
||||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 6.4.2003 Где: Тула Репутация: нет Всего: нет |
Да, это лишнее - уже убрал.
Я знаю, замучил я тебя RAN, но все же можно разъяснить какие именно методы?
Эту фичу я спутал с "блуждающими указателями"
Огромное спасибо за совет, буду знать
А я собственно не понял, чо может быть в конструкторе клетки..,рисование самого объекта?
Да, я тут подумал, это нафиг не нужно.. (идея была такова: по идешнику можно найти любую клетку)
Пока в разработке, это всеволишь наброски --------------------
With the best regards, Anton |
||||||||||||||
|
|||||||||||||||
| RAN |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Тут правда, неоправдано используется unsigned для хранения кол-ва бомб в соседних ячейках, хотя число это от 0 до 8. И алгоритм определения этого числа можно поискать. Вот другой способ подсчёта бомб в соседних ячейках:
А так, всё проверено. Работает правильно. Продолжай. P.S. Обрати внимание на хранение данных в TCell** Cell; Я хранил так: Cell[ряд][столбец], но метод getCell(столбец, ряд). Блин, я там сам напутал с рядами и столбцами при использовании Cell. Вот исправил. Надеюсь ты увидишь это сообщение раньше, чем столкнёшся с этим жучком. Уставший уже был. Это сообщение отредактировал(а) RAN - 8.9.2003, 18:17 |
||||
|
|||||
| aMiGo! |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 6.4.2003 Где: Тула Репутация: нет Всего: нет |
Вау!
Огромнейшее спасибо тебе RAN! пока буду разбираться, если будут вопросы, обязательно к тебе обращусь. --------------------
With the best regards, Anton |
|||
|
||||
| aMiGo! |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 6.4.2003 Где: Тула Репутация: нет Всего: нет |
Твои надежды не оправдались, я уже сам исправил. Спасибо. --------------------
With the best regards, Anton |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |