С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Zubofon
1

Прорисовать шахматное поле в builder c++

10.01.2014, 21:05. Показов 1492. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Нужно прорисовать шахматное поле(8x8 клеток) в форме(builder c++),
причем так, чтобы с каждой клеткой можно было отдельно взаимодействовать.
Заранее спасибо
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2014, 21:05
Ответы с готовыми решениями:

Прорисовать поле и указать заряды в модели заряженной частицы в магнитном поле
Как прорисовать поле и указать заряды в модели заряженной частицы в однородном магнитном поле?uses...

шахматное поле
На экране нарисовать с помощью символа ‘-’ шахматное поле. При этом использовать функцию, в которой...

Шахматное поле
Всем привет. Пишу программу которая создает шахматное поле, но не могу найти где ошибка, помогите,...

Шахматное поле
Надо сделать, что то на подобия шахомтного поля. ....... private void pictureBox1_Click(object...

3
Эксперт С++
8483 / 6150 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.01.2014, 02:04 2
Краткое руководство по работе с классом TCanvas для начинающих
0
91 / 91 / 22
Регистрация: 02.07.2013
Сообщений: 332
11.01.2014, 15:18 3
Zubofon, а чем StringGrid не подходит? В нём только рисовать фигурки останется...
0
случайный прохожий
3032 / 2064 / 626
Регистрация: 20.07.2013
Сообщений: 5,569
11.01.2014, 17:04 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const dif = 25;
UINT difX, difY, sizeX, sizeY;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  // ClientWidth = 850;
  // ClientHeight = 850;
  // BorderStyle = bsSingle;
  sizeX = (ClientWidth-2*dif)/8, sizeY = (ClientHeight-2*dif)/8;  // размеры клеток
}
//---------------------------------------------------------------------------
void cell (char ch, UINT num)  // выбор клетки
{
  Form1->OnPaint(Form1);
 
  TColor color = clBlue;
  Form1->Canvas->Brush->Color = color;
  Form1->Canvas->Pen->Color = color;
  ch -= 'a';
  difX = dif+ch%8*sizeX;
  difY = dif+(8-num%9)*sizeY;
  Form1->Canvas->Rectangle(difX, difY, difX+sizeX, difY+sizeY);
// вызов функции, к примеру,
// cell('f', 4);
// закрашивает соответствующую ячейку цветом, заданным выше (в данном случае - синий)
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
  TColor color;
  for (int i = 0; i < 64; i++)  // рисуем "доску"
  {
    (i%2==0 && i/8%2==0) || (i%2==1 && i/8%2==1) ? color = clSilver : color = clGray;
    Canvas->Brush->Color = color;
    Canvas->Pen->Color = color;
    // смещения
    difX = dif+i%8*sizeX;
    difY = dif+i/8*sizeY;
    Canvas->Rectangle(difX, difY, difX+sizeX, difY+sizeY);
  }
 
  Canvas->Brush->Color = Color;
  for (int i = 1; i <= 8; i++)  // "рисуем" буквы и цифры
  {
    Canvas->TextOutA(dif+(i-0.5)*sizeX, dif/2, char('a'-1+i));
    Canvas->TextOutA(dif+(i-0.5)*sizeX, ClientHeight-dif, char('a'-1+i));
 
    Canvas->TextOutA(dif/2, dif+(i-0.5)*sizeY, char('8'+1-i));
    Canvas->TextOutA(ClientWidth-dif*3/4, dif+(i-0.5)*sizeY, char('8'+1-i));
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  if (X>dif && Y>dif && X<ClientWidth-dif && Y<ClientHeight-dif)
  {
    Form1->OnPaint(Form1);
 
    TColor color;
    switch (Button)
    {
      case mbLeft:
        color = clRed;
        break;
      case mbRight:
        color = clGreen;
        break;
      case mbMiddle:
        color = clYellow;
        break;
    }
    Canvas->Brush->Color = color;
    Canvas->Pen->Color = color;
// рисование эллипсов разных цветов в зависимости от "кликнутой" кнопки мыши в клетке, по которой кликнули
    Canvas->Ellipse(dif+((X-dif)/sizeX+0.1)*sizeX, dif+((Y-dif)/sizeY+0.2)*sizeY, dif+((X-dif)/sizeX+0.9)*sizeX, dif+((Y-dif)/sizeY+0.8)*sizeY);
  }
}
//---------------------------------------------------------------------------
P.S.: дополнительно можешь глянуть Крестики нолики.
Миниатюры
Прорисовать шахматное поле в builder c++  
1
11.01.2014, 17:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2014, 17:04
Помогаю со студенческими работами здесь

Шахматное поле в PictureBox
Здравствуйте! Подскажите пожалуйста решение проблемы... Мне необходимо нарисовать программно...

Работа с графикой: шахматное поле
Нарисуйте шахматное поле. Заранее спасибо!!!)))

GeForce GTX 465 - шахматное поле по всему экрану
Посетило меня несчастье, виню видуху: началось все с обновления драйверов до последней версии....

Как запихнуть шахматное поле состоящее из картинок в двумерный массив
Как запихнуть шахматное поле состоящее из картинок в двумерный массив. Картинка генерируется с...


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

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