:: Меню ::

Головна
Передмова
СЕРЕДОВИЩЕ РОЗРОБКИ C++ BUILDER
Початок роботи
Перший проект
ПРАКТИКУМ ПРОГРАМУВАННЯ
Графіка
Мультимедіа
Бази даних
Компонент програміста
Консольне застосування
Довідкова система
Створення настановного диска
Приклади програм
C++ Builder — короткий довідник
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
Миостимуляторы и Пояса для похудения оптом Это пояс, выделяющий тепло, который активно сжигает жир в районе талии и ягодиц. Миостимуляторы оптом. Специальные приборы, позволяющие накачать мышцы и привести их в тонус, а также ликвидировать целлюлит.

:: Лічильники ::

=

 

 

 

 

 

Гра



Під час гри програма сприймає натиснення кнопок миші і, відповідно до правил гри, відкриває клітки або ставить в клітки прапорці.

Основну роботу виконує функція обробки події Onmousedown (її текст приведений в лістингу 10.6). Функція отримує координати точки форми, в якій гравець клацнув кнопкою миші, а також інформацію про те, яка кнопка була натиснута. Спочатку функція перетворить координати точки, в якій гравець натиснув кнопку миші, в координати клітки ігрового поля. Потім вона вносить необхідні зміни до масиву Pole і, якщо натиснута права кнопка, викликає функцію Flag яка малює в клітці прапорець. Якщо натиснута ліва кнопка в клітці, в якій немає міни, то ця клітка відкривається, і на екрані з'являється її вміст. Якщо натиснута ліва кнопка в клітці, в якій є міна, то викликається функція showpole яка показує всі міни, у тому числі і ті, які гравець не встиг знайти.

 Лістинг 10.6. Обробка події Onmousedown на поверхні ігрового поля ;

// натиснення кнопки миші на ігровому полі
void _fastcall Tforml::forramousedown
(Tobject*sender,tmousebutton
Button
Tshiftstate Shift, int x, int у)
-{
if ( status == 2) return;
if ( status == 0) status = 1;
x -= LEFT;
у -== TOP;
if (x > 0 && у > 0)
{
// перетворимо координати миші
// у індекси клітки поля
int row = y/h + 1;
int col = x/w + 1;
if (Button == mbleft) {
if ( Pole[row][col] == 9) {
 Pole[row][col]+=100; status -2;
  // гра закінчена Showpole(status); }
 else if  ( Pole[row][col]< 9) {
Open(row,col); Showpole(status); } }
else if (Button == mbright) {
nflag++;
if ( Pole[row][col] == 9)
nmin++;
Pole[row][col]+= 200;  // поставили прапор
if (nmin == MM && nflag = NM) {
status =2;  // гра закінчена
Showpole(status); }
else Kletka(row, col, status); } } }

Функція Flag (лістинг 10.7) малює прапорець. Прапорець (мал. 10.13) складається з чотирьох примітивів: лінії (держак), замкнутого контура (прапор) і ламаної лінії (буква "М"). Функція Flag малює прапорець, використовуючи метод базової крапки, тобто координати всіх крапок, що визначають положення елементів малюнка, відлічуються від базової крапки.

Функція Mina (лістинг 10.8) малює міну. Міна (мал. 10.14) складається з восьми примітивів: два прямокутники і сектор утворюють корпус міни, решта елементів малюнка — лінії ("вуса" і смужки на корпусі).

Обом функціям як параметри передаються координати базової точки малюнка і покажчик на об'єкт, на поверхні якого треба малювати.



Мал. 10.13. Прапорець



Мал. 10.14. Міна


Лістинг 10.7. Функція Flag малює прапорець

// малює прапор
void _fastcall Tforml::flag(  int x,   int у)
{
Tpoint p[4]; 
// координати прапорця і нижньої точки держака
// точки прапорця р[0].х=х+4;  р[0].у=у+4;
 р[1].х=х+30; р[1].у=
у+12;
р[2].х=х+4;  р[2].у=у+20;
// встановимо колір кисті і олівця
Canvas->brush->color = clred;
Canvas->pen->color = clred; 
// щоб контур прапорця був червоний
Canvas->polygon(р, 2);  // прапорець
// держак
Canvas->pen->color = clblack;
Canvas->moveto(p[0].x, p[0].у);
Canvas->lineto(x+4,y+36);
Tpoint m[5];         // буква М
m[0].x=x+8; m[0].y=y+14;
m[l].x=x+8; m[l].y=y+8;
m[2].x=x+10; m[2].y=y+10;
m[3].x=x+12;  m[3].y=y+8;
m[4].x=x+12;  m[4].y=y+14;
Canvas->pen->color = clwhite;
Canvas->polyline(m,4};
Canvas->pen->color = clblack; }

Лістинг 10.8. Функція Mina малює міну

// малює міну
void __faatcall Tforml::mina(int x,   int у)
{
Canvas->brush->color = clgreen;
Canvas->pen->color = clblack;
// корпус
Canvas->rectangle(x+16,y+26,x+24,y+30);
 Canvas->rectangle(x+8,y+30,x+32,y+34);
Canvas->pie(x+б,y+28,x+34,y+44,x+34,y+36,x+6,y+36);
// смуга на корпусі
Canvas->moveto(x+12,y+32);
Canvas->lineto(x+28,y+32);
// підстава
Canvas->moveto(x+8,y+36); 
Canvas->lineto(x+32,y+36);
// вертикальний "вус"
Canvas->moveto(x+20,y+22);
Canvas->lineto(x+20,y+26);
// бічні "вуса"
Canvas->moveto(x+8, y+30);
Canvas->lineto(x+6,y+28);
Canvas->moveto(х+32,y+30);
Canvas->lineto(х+34, у+28); }

 



x

:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Реклама ::


:: Посилання ::

-


 

 

 


Copyright by Zvircom © 2009