Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2011, 18:01   #1
Stwl3
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 11
По умолчанию Вопрос по Морскому бою

Я делаю морской бой, и я новичок)))
Поле противника состоит из 10*10 квадратиков в paintbox'e.
Подскажите каким образом сделать так чтобы, при выстреле (нажатии на paintbox) квадратик выстрела появлялся не там где курсор мыши, а четко по середине квадратика поля?
Здесь нужно вогнать квадратик в двумерный массив? Каким макаром?
Cogio ergo sum
Stwl3 вне форума Ответить с цитированием
Старый 03.05.2011, 10:01   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

напиши код, как сделал, точнее будут советы...
у тебя, по идее, клетки рисуются линиями или типа того, так вот у каждой клетки есть ширина и высота (по идее они ещё и равны , клетки квадратные), с учетом которых чертились лини, поэтому можно сделать примерно так:
Код:
tform1.pantbox1mousedown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer)
var cell_x, cell_y : word;
begin
cell_x := x div cellwidth ; // получим координату Х клетки по курсору и ширине клетки
cell_y := y div cellheight ; // аналогично У
рисуем кружок по центру клетки
paintbox1.canvas.ellipse(round((1/3+cell_x)*cellwidth), round((1/3+cell_y)*cellheight), round((2/3+cell_x)*cellwidth), round((2/3+cell_y)*cellheight)
end;
код не проверял, но, думаю, смысл понятен
phomm вне форума Ответить с цитированием
Старый 03.05.2011, 15:07   #3
Stwl3
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 11
По умолчанию

cellwidth и cellheight - что это? Это не из таблицы ли?
У меня квадратики нарисованы тупо canvas
Cogio ergo sum
Stwl3 вне форума Ответить с цитированием
Старый 03.05.2011, 17:09   #4
Stwl3
Пользователь
 
Регистрация: 13.12.2010
Сообщений: 11
По умолчанию

Вот часть кода рисующая одно поле


Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
x0:=0;
y0:=0;
with Paintbox1.Canvas do
begin
  for i := 1 to 10 do
    begin
    x0:=2;
    for j := 1 to 10 do
      begin
         Brush.Color:=clSkyBlue;
          rectangle(x0,y0,x0+25,y0+25);
           x0:=x0+25;
      end;
          y0:=y0+25;
end;

end;

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Cogio ergo sum

Последний раз редактировалось Serge_Bliznykov; 03.05.2011 в 20:05.
Stwl3 вне форума Ответить с цитированием
Старый 03.05.2011, 20:30   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

ну вот у Вас cellwidth и cellheight(это просто я так эти переменные назвал) и будут 25, единственно, что по Х Вы рисуете правее на 2 пикселя

тогда вам нужно весь код вписать, только заменить
Код:
cell_x := x div cellwidth ; // получим координату Х клетки по курсору и ширине клетки
cell_y := y div cellheight ; // аналогично У
на
Код:
cell_x := (x - 2) div 25 ; // получим координату Х клетки по курсору и ширине клетки
cell_y := y div 25 ; // аналогично У
Но ! я настоятельно рекомендую завести константу и назвать её как-то вроде SIZE и присвоить ей 25, т.е. const size = 25; и везде в коде вместо 25 писать size / тогда если захотите поменять размер клетки(допустим риснки корабликов влазить не будут) то Вы легко их подгоните меняя лишь число в 1 месте а не в 10, привыкайте программировать яснее и дальновиднее )
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Стратегия в морском бою Олександр17 Gamedev - cоздание игр: Unity, OpenGL, DirectX 13 28.11.2010 12:52
Вопрос по mySQL + Вопрос по RichEdit HTL Общие вопросы Delphi 4 01.01.2010 20:22
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
Вопрос по БД honor БД в Delphi 8 01.02.2008 15:08