Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
65 / 0 / 3
Регистрация: 06.11.2010
Сообщений: 177
1

Игра "морской бой" - как закрасить определенные клеточки

04.01.2012, 00:08. Показов 4712. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делаю морской бой, у меня на форме два картинки игрового поля(клеточки 10х10).
Возможно ли закрасить определенные клеточки?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2012, 00:08
Ответы с готовыми решениями:

Игра Морской бой
Дан двумерный массив целых чисел a a из n n строк и m m столбцов. Требуется определить...

Игра Морской Бой
#include <conio.h> #include <stdlib.h> #include <iostream.h> #include <dos.h>Kletka ...

Головоломка «Морской бой». Разместите в таблице полную флотилию для игры в «Морской бой». Корабли не должны касаться дру
с++ Головоломка «Морской бой». Разместите в таблице полную флотилию для игры в «Морской бой»....

Игра морской бой + VS 2019
Можете посмотреть компилируется и работает ли у вас игра МОРСКОЙ БОЙ Почему спрашиваю, я запускаю...

Игры Игра «Морской бой» "Написать программу графической реализации игры против компьютера в односторонний морской бой (б
Игра «Морской бой» "Написать программу графической реализации игры против компьютера в...

5
LK
Заблокирован
04.01.2012, 00:17 2
Wlad445, два картинки и клеточки 10х10 - это что ? можно, конечно, посмотреть вашу предыдущую тему и что-нибудь выдумать , но полезнее вам научиться конкретно описывать задачу .
0
65 / 0 / 3
Регистрация: 06.11.2010
Сообщений: 177
04.01.2012, 00:21  [ТС] 3
[IMG]http://s017.***********/i434/1201/09/dfe9cd4983f9.jpg#https://www.cyberforum.ru/bkank.png[/IMG]
0
LK
Заблокирован
04.01.2012, 00:25 4
Wlad445, вы меня не поняли - то, что на картинке - я бы вам посоветовал распечатать и закрашивать карандашом, на форме клеточки у вас из какого компонента ?

И для для вложений используйте встроенные возможности форума: кнопка Расширенный режим->Управление вложениями внизу окна редактирования сообщения.
Правила
2.11. Картинки загружайте на форум, во избежание их удаления или потери на сторонних ресурсах.
0
65 / 0 / 3
Регистрация: 06.11.2010
Сообщений: 177
04.01.2012, 00:46  [ТС] 5
Клеточки компонент DrawGrid
0
LK
Заблокирован
04.01.2012, 01:07 6
Для закрашивания ячеек нужно всего лишь 2 строчки в обработчике события OnSelectCell:
C++
1
2
DrawGrid1->Canvas->Brush->Color = clBlack;
DrawGrid1->Canvas->FillRect(DrawGrid1->CellRect(ACol, ARow));
Массив Panel
TDrawGrid - таблица рисунков
Используется для отображения в строках и столбцах нетекстовых данных.

TDrawGrid отображает произвольные данные в табличном формате. Напишите OnDrawCell обработчик, чтобы заполнить ячейки сетки. >Напишите OnDrawCell обработчик, чтобы рисовать содержание всех ячеек в сетке. Рисуйте в ячейке, используя методы свойства Canvas. Параметр Rect указывает местоположение ячейки на холсте.Col и Row указывают столбец и индексы строки ячейки, которая должна быть перерисована. Параметр State указывает, имеет ли ячейка фокус ввода, выбрана ли ячейка, и является ли ячейка фиксированной.

Если OnDrawCell обработчик не назначен, все ячейки в draw grid будут казаться пустыми. Если DefaultDrawing свойство - true, draw grid paints цвет фона ячейки перед OnDrawCell событием, и рисует прямоугольник вокруг выбранной ячейки после того, как OnDrawCell обработчик заканчивает рисовать содержание ячейки. Если DefaultDrawing свойство - false, OnDrawCell обработчик должен красить фон ячейки и обеспечивать всю визуальную индикацию относительно выбора и фокуса.

CellRect метод возвращает координаты экрана указанной ячейки, в то время как MouseToCell метод возвращает столбец и строку ячейки в указанных аппаратных координатах устройства. Свойство Selection указывает границы в настоящее время выбранных ячеек.

TopRow свойство определяет, какая строка является в настоящее время наверху сетки. LeftCol свойство определяет первый видимый столбец слева. VisibleColCount и VisibleRowCount - номер столбцов и строк, видимых в сетке.

Вы можете изменить ширину или высоту столбца или строки с ColWidths и RowHeights свойствами. Установите ширину линий координатной сетки с GridLineWidth свойством. Добавьте полосы прокрутки к сетке со свойством ScrollBars.

Вы можете выбрать зафиксировать или нет прокрутку столбцов и строк с FixedCols и FixedRows свойствами. Установить цвет на зафиксированные столбцы и строки можно FixedColor свойством.

Options, DefaultColWidth, и DefaultRowHeight свойства также затрагивают вид и поведение сетки.

Если ячейки сетки содержат текстовые строки, лучше использовать TStringGrid.

Если сетка отображает значения полей DataSet, используйте лучше TDBGrid.

Смотрим прилагающийся пример:

Следующий код использует bitmaps в image list component , чтобы рисовать содержание каждой ячейки в draw grid.

It draws a focus rectangle around the cell that has focus

C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, long Col, long Row, TRect &Rect, TGridDrawState State)
{
long index = Row * DrawGrid1->ColCount + Col;
DrawGrid1->Canvas->Brush->Color = clBackground;
DrawGrid1->Canvas->FillRect(Rect);
ImageList1->Draw(DrawGrid1->Canvas,Rect.Left,Rect.Top,index);
if (State.Contains(gdFocused)) DrawGrid1->Canvas->DrawFocusRect(Rect);
}
Кроме того, в библиотеке компонентов RXLib есть компонента TRxDrawGrid
там к ней есть и русский help:

Компонента TRxDrawGrid, являясь наследником TDrawGrid, наследует все свойства и методы этой компоненты, и имеет некоторые дополнительные возможности.

Так, при редактировании текста в строке редактирования ячейки таблицы, событие OnSetEditText вызывается не при каждом изменении содержимого строки ввода, а только при выходе из режима редактирования. Во время заполнения текста в строке редактирования вызываются события OnAcceptEditKey и OnEditChange, позволяющие разрешить или запретить ввод определенных символов в строку редактирования.

В 32-разрядной реализации компоненты Вы можете указать стиль строки редактирования для каждой ячейки (например, задав выпадающий список для редактора или определив событие на нажатие кнопки справа от строки редактора) с помощью события OnGetEditStyle.

Кроме того, для доступа к строке редактирования в ячейке таблицы свойство InplaceEditor вынесено в секцию public, и имеется ряд дополнительных полезных событий.

Компонента имеет дополнительные методы DrawStr, DrawMultiline, DrawPicture и DrawMasked для рисования в ячейках таблицы (grid) текста, картинок и "прозрачных" битовых изображений.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//---------------------------------------------------------------------// DrawGrid - от него произошел компонент StringGrid,
// обладающий большими возможностями !
// компонент DrawGrid имеет канву Canvas, на которой различными методами
// можно размещать изображения, в тч есть метод CellRect, который
// возвращает область канвы, отведенную под заданную ячейку, он определен так
// Windows::TRect __fastcall CellRect(int ACol, int ARow); в котором
// ACol, ARow - индексы столбца и строки, начинающиеся с 0, на пересечении
// которых расположена ячейка, те эта функция возвращпет область канвы, на
// которой можно рисмовать изображение
 
// поместить изображение можно например, так:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
TImage* BitMap = new TImage(this);
BitMap->Picture->LoadFromFile("c:\img.bmp");
DrawGrid1->Canvas->CopyRect(DrawGrid1->CellRect(2,3),
BitMap->Canvas,Rect(0,0,BitMap->Height, BitMap->Width));
delete BitMap;
}
//---------------------------------------------------------------------// здесь мы из файла img.bmp считываем изображение и копируем его методом
// CopyRect в ячейку (2,3) таблицы DrawGrid1
Поищите Архангельского, там неплохо все описано.

Добавлено через 7 минут
Морской бой, как расставить корабли?

Вот мне интересно - сам искать по форуму не пробовал ?
1
04.01.2012, 01:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2012, 01:07
Помогаю со студенческими работами здесь

Игра морской бой - как расставлять корабли
Решил написать игру чтоб опыта набраться. Вот возникла проблема: в верху формы расположены 4...

Игра морской бой - как расположить кораблики?
Приветствую! Пишу игру "Морской бой" на PHP, столкнулся с тем, что не знаю, как изначально...

Игра морской бой: никак не придумаю как лучше реализовать корабли в игре
Пишу игру "Морской бой" на c# и никак не решу как лучше реализовать в программе корабли.

игра морской бой
помогите пожалуйста сделать так чтобы в моей игре"морской бой" при потоплении корабля,клетки вокруг...

Игра Морской бой
Нужно создать игру морской бой, в которой на одном компьютере будет играть два человека...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru